Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Too stupid to execute and wait (https://www.delphipraxis.net/162142-too-stupid-execute-wait.html)

himitsu 9. Aug 2011 12:38

AW: Too stupid to execute and wait
 
Für INFINITE könnte man noch einen ausreichend langen Timeout setzen, damit eventuelle Deadlocks gleich mit abgefangen werden.

samso 9. Aug 2011 12:40

AW: Too stupid to execute and wait
 
Ich würde vielleicht noch einmal überdenken, ob die verwendeten Flags wirklich zielführend sind. Vielleicht sollte man ja die folgende Kombination verwenden:

SEE_MASK_NOCLOSEPROCESS or SEE_MASK_WAITFORINPUTIDLE or SEE_MASK_NOZONECHECKS

Dann kann man sich vermutlich auch all dieses Application.ProcessMessages-gefrickel sparen.

ChrisE 9. Aug 2011 12:54

AW: Too stupid to execute and wait
 
Hallo,

da seh ich gerade noch:
Delphi-Quellcode:
  ShExecInfo.cbSize := sizeof(SHELLEXECUTEINFOA);
Hier sollte das A hinten noch weg.
Und dann noch eine Frage zu dem WaitFor:
Sollte man hier nicht auch auf Application.Terminated prüfen? Ist vielleicht eine Glaubensfrage für den Anwendungsfall aber ich würde es machen. Also etwa so:
Delphi-Quellcode:
repeat
RetValue := MsgWaitForMultipleObjects(1, ShExecInfo.hProcess, False, INFINITE, QS_ALLINPUT);
if RetValue <> WAIT_OBJECT_0 then
  Application.ProcessMessages;
until (RetValue = WAIT_OBJECT_0) or Application.Terminated;
Gruß, Chris

himitsu 9. Aug 2011 12:55

AW: Too stupid to execute and wait
 
Das ProcessMessages sorgt dafür, das der Thread (Hauptthread) nicht "einschläft"

WAITFORINPUTIDLE wartet "nur" bis das gestartete programm "aufnahmebereit" ist, wärend das MsgWaitFor (ohne MsgWaitFor) auf die komplette Beendigung des Programms wartet.

QuickAndDirty 9. Aug 2011 12:56

AW: Too stupid to execute and wait
 
Zitat:

Zitat von himitsu (Beitrag 1115757)
Für INFINITE könnte man noch einen ausreichend langen Timeout setzen, damit eventuelle Deadlocks gleich mit abgefangen werden.

ja aber das setup macht auch updates und die können je nach kunde auch mal 2 tage dauern....
oder hat das damit nichts zu tun?

QuickAndDirty 9. Aug 2011 13:02

AW: Too stupid to execute and wait
 
Zitat:

Zitat von samso (Beitrag 1115758)
Ich würde vielleicht noch einmal überdenken, ob die verwendeten Flags wirklich zielführend sind. Vielleicht sollte man ja die folgende Kombination verwenden:

SEE_MASK_NOCLOSEPROCESS or SEE_MASK_WAITFORINPUTIDLE or SEE_MASK_NOZONECHECKS

Dann kann man sich vermutlich auch all dieses Application.ProcessMessages-gefrickel sparen.

ich habe auch so ein paar sorgen...weil ja aus application.processmessages wieder Excpetions kommen können.... je nach dem was da verarbeitet wird.

Aber wieso erspart mir diese flag kombination das ProcessMessages?

Luckie 9. Aug 2011 13:06

AW: Too stupid to execute and wait
 
Zitat:

Zitat von ChrisE (Beitrag 1115761)
da seh ich gerade noch:
Delphi-Quellcode:
  ShExecInfo.cbSize := sizeof(SHELLEXECUTEINFOA);
Hier sollte das A hinten noch weg.

Copy and waste. ;) Ist korrigiert.

QuickAndDirty 9. Aug 2011 13:08

AW: Too stupid to execute and wait
 
Noch ne frage

wo wir gerade am tunen sind...

Delphi-Quellcode:
  ShExecInfo.Wnd := application.MainFormHandle;
Oder
Delphi-Quellcode:
  ShExecInfo.Wnd := application.Handle;
Oder
Delphi-Quellcode:
  ShExecInfo.Wnd := GetForegroundWindow;

QuickAndDirty 9. Aug 2011 13:09

AW: Too stupid to execute and wait
 
Zitat:

Zitat von Luckie (Beitrag 1115769)
Zitat:

Zitat von ChrisE (Beitrag 1115761)
da seh ich gerade noch:
Delphi-Quellcode:
  ShExecInfo.cbSize := sizeof(SHELLEXECUTEINFOA);
Hier sollte das A hinten noch weg.

Copy and waste. ;) Ist korrigiert.

dito

Luckie 9. Aug 2011 13:20

AW: Too stupid to execute and wait
 
MainFormHandle kannte mein D7 nicht, deswegen nur Handle. Und GetForeGroundWindow ist gefährlich, da dein Programmfenster beim ausführen des Codes nicht das oberste Fenster sein muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 Uhr.
Seite 4 von 5   « Erste     234 5      

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