Ok ich habe ein etwas merkwürdiges Problem. Ich hoffe ich kann das erklären.
Ich habe eine
DLL entwickelt mit einer Form drin.
Starte ich ein Programm direkt aus dem Explorer welche die
DLL lädt und die Form darin öffnet, dann wird diese korrekt angezeigt.
Die Form erhält unter Windows dann ein neues Icon in der Taskbar.
So starte ich aber nun das Programm welches die
DLL eingebunden hat aus einem anderen Programm mit createprocess(), dann ist die Form unsichtbar aus der
DLL und blockt das Programm.
Kurz Erklärung. Wir haben eine Art Launcher welche unsere anderen Programm durch Berechtigungen, Menüs etc. startet.
Dies geschieht durch
Code:
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
FillChar(SUInfo, SizeOf(TStartupInfo), #0);
FillChar(ProcInfo, SizeOf(TProcessInformation), #0);
with SUInfo do begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := sw_hide;
end;
result := createprocess(
nil,
pchar(cmd),
nil,
nil,
FALSE,
NORMAL_PRIORITY_CLASS,
nil,
PChar(pfad),
SUINFO, PROCINFO);
Ich habe den Eindruck das irgendwie auf einmal die Form der
DLL nicht dem aufrufenden Programm, sondern dem Programm davor gehört.
Das Programm welches die
DLL einbindet und die Form aufruft ist dann auch nicht mehr in ALT+TAB sichtbar.
Die Forms in der
DLL werden ganz normal mit TMYform.create(nil) erstellt und mit myform.showmodal angezeigt.
Wie gesagt funktioniert 1a wenn man das Programm direkt startet.
Jemand eine Idee zu dem kuriosen Fall?