GetProcessesByName funktioniert nicht

8

Nachdem ich viel nach diesem Problem gesucht habe, sehe ich immer noch Probleme damit, zu überprüfen, ob der laufende Prozess beendet ist oder nicht. Wenn der Benutzer in der GUI auf die Schaltfläche "Los" klickt, wird das Programm etwa 5 Sekunden lang ausgeführt und dann geschlossen. Wenn es fertig ist, möchte ich etwas tun (z. B. grüne Markierung in der GUI).

Mein Problem ist, dass 'GetProcessesByName' das Programm scheinbar nicht sehen kann, was merkwürdig ist, weil ich es im Taskmanager sehe. Der Programmname ist quartus_pgm.exe . Siehe den folgenden Code, ich habe quartus_pgm oder quartus_pgm.exe oder quartus_pgm.exe32 ausprobiert (wie im Task-Manager zu sehen), aber nichts!

Wenn ich 'cmd' setze, sieht es es (das quartus_pgm wird aus dem cmd entfernt), aber es ist nicht das, wonach ich suche. Ich habe verschiedene Methoden ausprobiert:

%Vor%

oder dieser:

%Vor%

oder dieser:

%Vor%     
roy.me 12.06.2014, 06:53
quelle

3 Antworten

17

Versuchen Sie, .exe part zu entfernen.

%Vor%

Von hier :

  

Der Prozessname ist ein benutzerfreundlicher Name für den Prozess, z. B. Outlook,   das schließt die .exe-Erweiterung oder den Pfad

nicht ein

AKTUALISIEREN

Versuchen Sie, den gesamten Prozess auf Ihrem Computer aufzulisten, suchen Sie nach dem Prozessnamen quartus_pgm .

%Vor%     
Iswanto San 12.06.2014, 07:00
quelle
1

Gibt es eine Chance, dass diese Methode die Groß- und Kleinschreibung berücksichtigt? Wenn Sie die Prozesse durchlaufen, finden Sie es?

%Vor%     
Jesse Petronio 12.06.2014 07:08
quelle
1

Da Sie den Prozess bereits selbst starten, warum behalten Sie nicht einfach die Process Referenz? Dann kannst du einfach

machen %Vor%

(Vergessen Sie nicht, dass Sie process.Refresh aufrufen müssen, um sicherzustellen, dass die Eigenschaft HasExited korrekt aktualisiert wird)

Oder warten Sie einfach auf den Wait-Handle (idealerweise mit asynchronem Code).

    
Luaan 12.06.2014 07:09
quelle

Tags und Links