![]() |
calc.exe unter Win 10 starten und auf beenden warten
Mit diesen Code kann ich ein Executable starten und warten bis es beendet wird. Funktionierte über die Jahre problemlos. Nun aber nach dem Umstieg auf Windows 10 funktioniert der Code nicht immer.
Delphi-Quellcode:
Zum Beispiel funktioniert es mit notepad.exe, jedoch nicht mit dem Windows Taschenrechner calc.exe. Da steigt der Code sofort aus, auch wenn das Fenster von calc.exe noch da ist. Ich habe mir die Sache genauer angeschaut und es liegt wohl daran dass calc.exe nur ein Wrapper ist um die Windows Metro app zu starten. Der Wrapper-Prozess beendet sich sofort.
if CreateProcess(
nil, 'calc.exe', // 'notepad.exe' nil, nil, FALSE, prio, nil, working, StartupInfo, ProcessInfo) then begin repeat res := MsgWaitForMultipleObjects(1, // one event to wait for ProcessInfo.hProcess, // the array of events False, // wait for 1 event INFINITE, // timeout value QS_ALLINPUT); // any message wakes up if res <> WAIT_OBJECT_0 then begin m.Message := 0; while PeekMessage(m, 0, 0, 0, PM_REMOVE) do begin TranslateMessage(m); DispatchMessage(m); Application.ProcessMessages; end; Sleep(50); end; until res = WAIT_OBJECT_0; end; Kennt jemand eine Alternative die auch mit Windows Metro Apps funktioniert? |
AW: calc.exe unter Win 10 starten und auf beenden warten
Hilft dir das weiter ?
![]() ![]() Rollo |
AW: calc.exe unter Win 10 starten und auf beenden warten
Danke, aber die beide Links haben nichts mit dem Problem zu tun.
|
AW: calc.exe unter Win 10 starten und auf beenden warten
Der Rechner trägt unter Windows 10 den namen Calculator.exe
|
AW: calc.exe unter Win 10 starten und auf beenden warten
Dann hätte er aber eine Fehlermeldung zurückbekommen müssen, die ihm sagt, dass die Datei nicht gefunden wurde. :roll:
|
AW: calc.exe unter Win 10 starten und auf beenden warten
Folgende Aufrufe sind bei WINDOWS 10 64Bit richtig:
C:\Windows\System32\calc.exe C:\Windows\SysWOW64\calc.exe |
AW: calc.exe unter Win 10 starten und auf beenden warten
Das ist richtig, ändert aber nichts daran, das die beiden calc.exe-Dateien nur Wrapper sind, die ihrerseits "calculator.exe" aufrufen und sich sofort beenden.
Der Prozess, der am Ende läuft, liegt hier unter "C:\Program Files\WindowsApps\Microsoft.WindowsCalculator_10.1 601.49020.0_x64__8wekyb3d8bbwe\calculator.exe". |
AW: calc.exe unter Win 10 starten und auf beenden warten
Das riecht ein wenig nach Aufwand, doch in diesem Zusammenhang wird auf die Job-API von Windows verwiesen. Ein "Job" ist - bildlich gesprochen - eine Hülle um einen Prozess, den Du startest. Sollte dieser Prozess weitere Unterprozesse starten, sind sie automatisch Teil des Jobs. Mittels WaitForSingleObject() kannst Du dann in gewohnter Weise darauf warten, bis alle Prozesse des Jobs beendet sind.
![]() |
AW: calc.exe unter Win 10 starten und auf beenden warten
Danke Daniel, ich schaus mir an.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr. |
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