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 WaitForInputIdle (https://www.delphipraxis.net/26348-waitforinputidle.html)

_Sebastian_ 22. Jul 2004 11:27


WaitForInputIdle
 
Ich benutze die DP schon recht lange als Nachschlagewerk und das eigentlich immer erfolgreich, doch jetzt weiss ich nicht mehr weiter. :?

Ich arbeite an einem Programm, das Benutzereingaben speichert und wiedergibt (soll zum testen anderer Software eingesetzt werden).
Mein Problem ist jetzt, wenn bei der Wiedergabe ein anderes Programm gestartet wird, das ich solange warten muss, bis das Programm mit laden fertig ist.

Dazu hab ich dann WaitForInputIdle gefunden, nur bekomm ich immer die Meldung, mein Handle sei ungültig.

Delphi-Quellcode:
var wndHandle : thandle;
    pID : DWORD;
    ProcessHandle : cardinal;
    processname : string;

begin
 // das Fenster existiert und ich bekomme ein handle
 wndhandle :=FindWindow(nil,'unbekannt - Editor');

 // die Funktionen sind von den Jedis.. machen aber das selbe wie die von Windows..
 processname := GetProcessNameFromWnd(wndHandle);
 pID := GetPidFromProcessName(processname);

 // mit anderen Process-Rechten passiert das selbe
 processhandle := OpenProcess(SYNCHRONIZE ,false,pID);
 if processhandle = 0 then ShowMessage(sysErrorMessage(getLastError));

 case WaitForInputIdle(processhandle,10000) of
  0 : Showmessage('Ok');
  WAIT_TIMEOUT : Showmessage('TimeOut');
  WAIT_FAILED : ShowMessage(sysErrorMessage(getLastError));
 end;
end;
Egal welche ID ich WaitForInputIdle übergebe, ich bekomme ich die Meldung mein Handle sei ungültig.

Wenn jemand ne Idee/Vorschlag/Alternativen hat, wäre mir sehr geholfen. :)

mfg Sebastian

Robert Marquardt 22. Jul 2004 13:50

Re: WaitForInputIdle
 
WaitForInputIdle ist fuer den Handle gedacht den du bei CreateProcess bekommst.

_Sebastian_ 22. Jul 2004 13:58

Re: WaitForInputIdle
 
Da ich die Anwendung ja nicht aus meinem Programm selber starte hab ich das mit OpenProcess gemacht.
OpenProcess liefert mir ja auch den Handle von dem process zurück.

Robert Marquardt 22. Jul 2004 14:07

Re: WaitForInputIdle
 
Ich habe jetzt nicht genau nachgeschaut aber ich erinnere mich das CrateProcess zwei Handles liefert.
Es ist also wahrscheinlich das der Handle von OpenProcess generell untauglich ist.


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