AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) calc.exe unter Win 10 starten und auf beenden warten

calc.exe unter Win 10 starten und auf beenden warten

Ein Thema von Shark99 · begonnen am 26. Apr 2016 · letzter Beitrag vom 29. Apr 2016
Antwort Antwort
Shark99

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

calc.exe unter Win 10 starten und auf beenden warten

  Alt 26. Apr 2016, 12: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
Rollo62

Registriert seit: 15. Mär 2007
3.572 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: calc.exe unter Win 10 starten und auf beenden warten

  Alt 26. Apr 2016, 21:37
Hilft dir das weiter ?

http://www.baronsoftware.com/Blog/de...l-application/
http://www.vbforums.com/showthread.p...-in-Windows-10

Rollo
  Mit Zitat antworten Zitat
Shark99

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

AW: calc.exe unter Win 10 starten und auf beenden warten

  Alt 29. Apr 2016, 13:51
Danke, aber die beide Links haben nichts mit dem Problem zu tun.
  Mit Zitat antworten Zitat
Sunec

Registriert seit: 31. Aug 2013
88 Beiträge
 
Delphi XE8 Architect
 
#4

AW: calc.exe unter Win 10 starten und auf beenden warten

  Alt 29. Apr 2016, 16:16
Der Rechner trägt unter Windows 10 den namen Calculator.exe
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: calc.exe unter Win 10 starten und auf beenden warten

  Alt 29. Apr 2016, 16:19
Dann hätte er aber eine Fehlermeldung zurückbekommen müssen, die ihm sagt, dass die Datei nicht gefunden wurde.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#6

AW: calc.exe unter Win 10 starten und auf beenden warten

  Alt 29. Apr 2016, 17:27
Folgende Aufrufe sind bei WINDOWS 10 64Bit richtig:
C:\Windows\System32\calc.exe
C:\Windows\SysWOW64\calc.exe
  Mit Zitat antworten Zitat
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
15.534 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: calc.exe unter Win 10 starten und auf beenden warten

  Alt 29. Apr 2016, 17:42
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".
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
15.534 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: calc.exe unter Win 10 starten und auf beenden warten

  Alt 29. Apr 2016, 17:52
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.

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Shark99

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

AW: calc.exe unter Win 10 starten und auf beenden warten

  Alt 29. Apr 2016, 22:32
Danke Daniel, ich schaus mir an.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf