Einzelnen Beitrag anzeigen

stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#1

Form aus DLL unsichtbar, wenn Programm per createprocess

  Alt 6. Apr 2020, 17:17
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?
  Mit Zitat antworten Zitat