Einzelnen Beitrag anzeigen

Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

calc.exe unter Win 10 starten und auf beenden warten

  Alt 26. Apr 2016, 11:48
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:
    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;
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.

Kennt jemand eine Alternative die auch mit Windows Metro Apps funktioniert?
  Mit Zitat antworten Zitat