Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi createprocess und WaitForSingleObject unter NT anders wie 98 (https://www.delphipraxis.net/24600-createprocess-und-waitforsingleobject-unter-nt-anders-wie-98-a.html)

Sven Janssen 23. Jun 2004 14:04


createprocess und WaitForSingleObject unter NT anders wie 98
 
Ich hatte mir unter Windows 98 mit Delphi 4 einmal ein Programm geschrieben was unsere ganzen Projekte auf einmal (nacheinander) übersetzt.
Da unsere _System_ modular aufgebaut ist, besteht es aus ca 100 einzelnen Projekten.
Unter Windows 98 lief das Programm auch. Nur ab dem NT Kernel, muss die API Funktion anders angesteurert werden. Ich bekomm es momentan nur nicht hin wie ich es anders machen muss.

Folgender Code:
Delphi-Quellcode:
with SUInfo do begin
   cb := SizeOf(SUInfo);
   dwFlags := STARTF_USESHOWWINDOW;
   wShowWindow := sw_show; //sw_hide;
end;
result:=createprocess(NIL,pchar(cmdline),NIL,NIL,FALSE,
                      CREATE_NEW_CONSOLE or
                      NORMAL_PRIORITY_CLASS, NIL,
                      PChar(ExtractFilePath(hlp)),
                      SUINFO, PROCINFO);
if result then WaitForSingleObject(ProcInfo.hProcess, INFINITE);
leider wartet der Prozess nicht und haut mir dann 100 Fenster auf den Schirm.
bzw starte 100 Prozess.

Sven

NicoDE 23. Jun 2004 14:21

Re: createprocess und WaitForSingleObject unter NT anders wi
 
Schon mit dem Flag für eine neue Prozeßgruppe versucht?
Ansonsten beschreibt der Artikel unter http://www.microsoft.com/msj/0698/win320698.aspx das Problem ziemlich umfassend.

BTW, Du solltest die Handles auch wieder freigeben.
edit: Link gefixt

Sven Janssen 23. Jun 2004 14:29

Re: createprocess und WaitForSingleObject unter NT anders wi
 
das wird alles gemacht.

Ich hab fas Problem auch gefunden.
Ein schlauer Geist hat in abwesenheit von mir anstatt den dcc32.exe direkt auf zu rufen das ganze durch Batch Dateien gelöst.
d.h es wurde eine .bat Datei erstellt und aufgerufen und anscheined meint WaitForSingleObject das dieser sofort beendet wurde. Dadurch flogen mir die Fenster auf Schirm. (btw. XP juckt das nicht, er hat dennoch alles übersetzt).
Nachdem ich nun meinen Stand von 2001 wieder zurück gesetzt hab funktioniert das ganz Programm wieder wie früher.

Sven

NicoDE 23. Jun 2004 14:36

Re: createprocess und WaitForSingleObject unter NT anders wi
 
Zitat:

Zitat von Sven Janssen
Ein schlauer Geist hat in abwesenheit von mir anstatt den dcc32.exe direkt auf zu rufen das ganze durch Batch Dateien gelöst.

:D
Das Problem sollte auch mit 'call foo.bat', 'start /wait', '%comspec% /C foo.bat' und Konsorten zu lösen sein...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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