Mitbekommen, wenn Anwendung beendet
-
Hallo!
Ich habe ein kleines Problem. Ich habe mir untensethenden Code aus Forenbeiträgen zusammengezimmert. Es soll eine Andwendung starten und warten bis diese beendet ist. Ich habe gelesen, dass hProcess das mitteilen kann. Bei mit ist diese Variable aber immer 0x0000. Obwohl das Starten eines Programms funktionert.
Hoffe ihr könnt mir helfen wie ich das abfrage..
Gruß Filou
DWORD dWait; BOOL bCheck = FALSE; SHELLEXECUTEINFO App = {0}; // App=(SHELLEXECUTEINFO*)malloc( sizeof(SHELLEXECUTEINFO) ); COMPILER: = kein operator definiert App.cbSize = sizeof(SHELLEXECUTEINFO); App.fMask = SEE_MASK_NOCLOSEPROCESS; // App.hwnd = GetActiveWindow(); COMPILER: kann nicht in HWND__* kovertiert werden App.lpVerb = "open"; App.lpFile = "Scannen.doc"; App.lpDirectory = "D:\\dave\\vorlage\\"; App.nShow = SW_SHOWNORMAL; //Anwendung starten if ( ! ShellExecuteEx(&App)) { MessageBox("Anwendungsfehler: Die Prozessinitialisierung ist fehlgeschlagen.\nMöglicherweise wurde die Konfigurationsdatei zum Scannen von Dokumenten beschädigt.\n\nFehler: ShellExecuteEx:hProcess = NULL","Anwendungsfehler",MB_ICONSTOP); this->EndDialog(0); } else { while(bCheck == FALSE) { dWait = WaitForSingleObject(App.hProcess,1000);//hProcess ist immer 0x00000 if (dWait == NULL) { bCheck = TRUE; } Sleep(2000); } }
-
In diesem Fall wird Word über eine DDE Verbindung gestartet und geöffent. Hier tritt die dokumentierte Einschränkung auf:
<zitat>
In some cases, such as when execution is satisfied through a DDE conversation, no handle will be returned. The calling application is responsible for closing the handle when it is no longer needed.
</zitat>
-
Danke für die Antwort.
Also gibt es keine Möglichkeit Mitzubekommen wenn die Word-Datei beendet wird?
-
So sollte das gehen
CWnd wnd= FindWindow(NULL,"Scannen.doc - Microsoft Word"); if (wnd) { // mach was }
-
Nur eine Idee:
Du könntest über die OLE-Automation arbeiten. Dann könntest Du das entsprechende Objekt anbieten. Wird das Dokument vom User geschlossen, dann wird IMHO das Visible Flag entfernt, der Objekt Zeiger auf das Dokument bei Dir bleibt gültig. Wenn Du also regelmässig auf Visible pollst könnte das eine Lösung sein.
-
Das "Scannen.doc" ist ein Makro welches den Scanner ansteuert, ein Dokument scannt, speichert und Word beendet.
Mit FindWindow hat es geklappt. Vielen Dank Euch allen!!!
