Hi,
ich erstelle in einer
DLL einen Thread:
Delphi-Quellcode:
type
TAnimationThread =
class(TThread)
private
{ Private declarations }
FWnd: HWND;
DC : HDC;
FPaintRect: TRect;
FfgColor: TColor;
FInterval: integer;
protected
protected
procedure Execute;
override;
public
FName :
String;
Image :TBitmap;
wnd : hWnd;
procedure Ready;
constructor Create(barcolor : TColor;
name :
String);
end;
{**********************************************************************
Konstruktor
***********************************************************************}
constructor TAnimationThread.Create(barcolor : TColor;
name :
string);
begin
inherited Create(True);
Application.CreateForm(TSplash2, Splash2);
Splash2.Show;
FfgColor := barColor;
FName :=
name ;
//FreeOnterminate := True;
Resume;
end;
{ TAnimationThread.Create }
Im TAnimationThread.execute wird eine Form (Splash2) erstellt, die den Benutzer zeigt, dass gerade was gemacht wird (Bitte warten). Auf dieser Form läuft ein einem Panel ein Bitmap von links nach rechts und zurück............
Funktioniert alles wunderbar!
So wird der Thread aufgerufen:
Delphi-Quellcode:
{* Start-Prozedur *}
procedure DLLWorking(nameP:PChar);stdcall;
var
name:String;
ani : TAnimationThread;
begin
name:=String(nameP);
ani := TanimationThread.Create($00556F60, name);
Application.ProcessMessages;
end;
Zum beenden habe ich diese Prozedur:
Delphi-Quellcode:
{* End-Prozedur *}
procedure DLLReady(wnd:Hwnd);stdcall;
var
ani : TAnimationThread;
begin
ani.Ready; <---- schließt die Form!
ani.Terminate; <----- soll meinen Thread beenden!!?????
end;
Wenn ich die
DLL in Delphi ausführe (mit entsprechendem Projekt!) klappt alles ohne Fehler. Wenn ich allerdings das Projekt in Delphi ausführe bekomme ich einen Fehler!
Zugriffsverletzung.......
Danke für die Hilfe!
Sillium