Erstmal von mir als Neuling in diesem Forum ein HALLO an Alle.
Jetzt zu meinem Problem, mit dem ich mich seit einigen Tagen herumschlage. Ich habe aus einer bereits bestehenden Anwendung eine
dll gebaut. Diese
dll kann ich aus einer DELPHI- oder C++ Anwendung heraus als Thread starten. Dazu habe ich die bestehende Anwendung um eine
UNIT erweitert, die mir als Parametrierplattform dient. Das funzt auch soweit gut. Ich habe ein Problem beim Beenden meiner in der
dll "gekapselten" Anwendung.
Wenn ich meine Anwendung über den "normalen Weg" beende - das Programm hat oben rechts kein "rotes Kreuz" - läuft allse prima. Nur der Weg von "außen" funktioniert nicht. Ich dachte ich "drücke" aus der übergeordneten Anwendung einfach die Tasten, mit denen ich die Anwendung normal beende aber PUSTEKUCHEN. Das Ende ist immer eine Exeption
"Fehler beim Erstellen des Fenster-Gerätekontext". Und ich finds einfach nicht
Im Klartext: die übergeordnete Anwendung initialisiert die gekapselte Anwendung in der
dll über
Code:
procedure eyesiMPInitialize(pos_x,pos_y:integer; MachineDir : PAnsiChar);stdcall;
begin
eyesiLock := TCriticalSection.Create;
UsrIntThread:= TUsrIntThread.create(false);
UsrIntThread.position_x:=pos_x;
UsrIntThread.position_y:=pos_y;
UsrIntThread.Resume;
end;
UsrIntThread.create startet dann
Code:
procedure TUsrIntThread.execute;
begin
Application.Initialize;
Application.CreateForm(TF01Start, F01Start);
Application.CreateForm(TF10Msge, F10Msge);
Application.CreateForm(TF14Service, F14Service);
Application.CreateForm(TF27End, F27End);
.
.
Application.ShowMainForm := false;[delphi]
Application.Run;
Dann startet meine Anwendung zunächst unsichtbar. Dann wird sie von außen gesteuert über
Delphi-Quellcode:
procedure eyesiMPStart;stdcall;
begin
UsrIntThread.StartForm := 13; // EYESI-Startformular setzen
UsrIntThread.eyesi_Operateur := 1;
UsrIntThread.eyesi_Operation := 1;
UsrIntThread.eyesi_OPSchritt := 1;
SerKomWin.EyesiClickFunktionen(2);
end;
sichtbar gemacht.
.... Nur eben das saubere beenden. Kann mir jemand einen TIP geben ????
DANKE im Voraus