Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Form aus DLL unsichtbar, wenn Programm per createprocess (https://www.delphipraxis.net/203911-form-aus-dll-unsichtbar-wenn-programm-per-createprocess.html)

stalkingwolf 6. Apr 2020 16:17

Form aus DLL unsichtbar, wenn Programm per createprocess
 
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?

himitsu 6. Apr 2020 16:34

AW: Form aus DLL unsichtbar, wenn Programm per createprocess
 
Mal eine dumme Frage, zu deinem Problemchen:
Jemand benutzt SW_HIDE und wundert sich dann, wenn ein Fenster nicht sichtbar ist?

stalkingwolf 6. Apr 2020 16:45

AW: Form aus DLL unsichtbar, wenn Programm per createprocess
 
ganz ehrlich, das ist mir eben beim Copy&Paste gar nicht aufgefallen.
Das ist dort schon seit Jahren drin und hatte auch nie eine negative Auswirkung auf die Programme welche wir gestartet haben.

Und ja das war das Problem. auf sw_normal geändert und es funktioniert.

Danke für den Zaunpfahl.

himitsu 6. Apr 2020 17:27

AW: Form aus DLL unsichtbar, wenn Programm per createprocess
 
Bitte. :angle:

Joar, es gibt massig Programme, die vergessen sich an ihre Startparameter zu halten,
aber Delphi ist hier mal nett und tut es. :stupid:

stalkingwolf 7. Apr 2020 09:06

AW: Form aus DLL unsichtbar, wenn Programm per createprocess
 
Das interessante ist ja das wir alle Prozesse welche damit vorher gestartet wurden Delphi Programm sind.
Und keins hat es gestört. Aber ein Fenster welches ich dann in einer nachfolgenden DLL starte reagiert dann darauf :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz