[Suche] Taskmanager Anwendungen anzeigen
#1
0
Hi,

ich suche ein Programm, das per Kommandozeile die Anwendungen im Taskmanager anzeigt, nur anzeigt.
Prozesse und Dienste sind uninterressant.
Kennt jemand so ein Programm. Der Taskmanager hat ja keine Optionen diesbezüglich.
Zitieren
#2
0
Da gibt es sogar direkt von Microsoft etwas: Handle Smile.

Und falls es doch lieber mit GUI sein soll: Process Explorer.
[Bild: cgb-signaturwdjiq.png]
Du hast eine (nicht mehr ganz so) geheime Botschaft entdeckt:
"Besucht Heinrich's Spiele-Ausstellung!" ;-)


Big Grin Big Grin
Zitieren
#3
0
Ansonsten kann auch die Powershell genutzt werden, Befehl wäre z.B. folgender:

Code:
Get-Process | Select-Object -Property Name
Ein direkter Aufruf innerhalb der normalen CMD ist auch möglich:

Code:
powershell -Command "Get-Process | Select-Object -Property Name | Out-Host"

Mehr Infos bezüglich Powershell:
Die Powershell ist inzwischen eines der besten Tools für Windows Systemadministratoren.
Über ein paar Befehle lassen sich schnell Aussagekräftige Abfragen bauen. Suche ich z.B. die Prozesse mit der längsten CPU Nutzung erweitere ich den Befehl von oben:
Code:
Get-Process | Select-Object -Property Name, TotalProcessorTime | Sort-Object -Property TotalProcessorTime -Descending | Select-Object -First 5
Hierbei ist "Get-Process" der Befehl den wir Ausführen, diverse "Get-*" Befehle werden bereits mit der Powershell ausgeliefert.
Die Pipe "|" leitet das Ergebnis des Befehls weiter.
Mit "Select-Object -Properties" können die gewünschten Elemente ausgewählt werden.
Das nun entstandene Ergebnis kann wieder durch die "Pipe" an den nächsten Befehl übergeben werden, mit "Sort-Object" sortiere ich nun nach der Prozessor Zeit, absteigend (-Descending).
Die Letzte Pipe leitet dann mein sortiertes Ergebnis weiter an "Select-Object", welches nun nur noch die ersten 5 Elemente ausgibt (-First 5) .
[Bild: banner_cool3zhjth.jpg]
Zitieren
#4
0
Hi,

danke euch schonmal, ist aber nicht das was ich möchte.
Den Security Task Manager hab ich bei mir schon installiert und Powershell kenn ich nur vom Namen her.

Ich bin auch ein wenig mit PCem zugange und habe da ein Problem.
Wenn PCem über die Kommandozeile gestartet wird, hat man diesen komischen Effekt.
In Anwendungen und Prozesse steht PCem, soweit so gut.

[Bild: tm1uhdvq.jpg] [Bild: tm2msc5f.jpg]

Wird PCem in der Menüleiste über den Shutdown Befehl beendet, ist alles o.k.
Beendest du PCem über das X - rechts oben, ist im Taskmanager unter Anwendungen der Eintrag weg.
Allerdings steht PCem noch unter Prozesse.

[Bild: tm3y5dxl.jpg] [Bild: tm2msc5f.jpg]

Man kann PCem, in einer Batch, nicht mit dem Taskkill Befehl beenden. Ist so, glaubt mir.
Deshalb suche ich ein Programm, welches mir die Anwendungen und nicht die Prozesse anzeigt.
Am liebsten per Kommandozeile, um in einer Batch PCem zu beenden, falls das Hauptfenster über das X geschlossen wurde.
Zitieren
#5
0
Hi donald,

konnte das beschriebene Problem nachstellen. Beim Aufruf von PcEM über die CMD, und anschließendes beenden der Anwendung über das "X", bleibt der Prozess bestehen. Die "Anwendung" wird nicht mehr im Task Manager angezeigt.

Der bestehende Prozess scheint sogar weiter zu laufen, CPU Last und Arbeitsspeicher Auslastung bleiben auf dem Prozess bestehen.

Hier eine Zeile für die CMD welche alle offenen "PcEm" Prozesse beendet. Habe ich gerade schon getestet. Funktioniert auch in einer Batch, wenn Powershell auf dem Host System vorhanden.

Code:
powershell -Command "Stop-Process -Id (Get-Process | Where {$_.Name -like '*PcEM*'} | Select-Object -ExpandProperty ID) -Force"
[Bild: banner_cool3zhjth.jpg]
Zitieren
#6
0
donald schrieb:Wird PCem in der Menüleiste über den Shutdown Befehl beendet, ist alles o.k.
Beendest du PCem über das X - rechts oben, ist im Taskmanager unter Anwendungen der Eintrag weg.
Allerdings steht PCem noch unter Prozesse.
Ja, das Problem habe ich auch. Das ist vor allem deshalb ärgerlich, da ich auf die IMG-Datei per WinImage danach nicht mehr zugreifen kann, weil PCem noch Zugriff darauf hat. Hab das so "gelöst", dass ich die Festplatte jetzt immer per Batch aufrufe und am Anfang "taskkill /im "PCem.exe" /f >nul 2>&1" verwende, damit der Prozess beendet wird und die Datei somit die IMG-Datei öffnen kann.
Zitieren
#7
0
Hi,

danke D2001, aber kann die Powershell die "Anwendungen" und nicht die "Prozesse" auflisten?

Andi, ich habe mir dein Paket ja angesehen.

Ich habe mir das so vorgestellt:
Wenn ich PCem starte, starte ich auch gleichzeitig einen Timer, der jede Sekunde (oder 2, oder 5) nachschaut, ob unter "Anwendungen" PCem noch vertreten ist.
Wenn nicht, dann den evtl. vorhandenen "Prozess" PCem beendet.

Nur weiß ich eben nicht, wie ich unter "Anwendungen" nachschauen kann, ob PCem noch vertreten ist.
Die "Prozesse" anschauen ist ein anderes Thema und nicht gewollt.

Wenn du den Prozess zu Beginn der Batch zu beendest, verhinderst du doch nur, dass er doppelt ausgeführt wird.
Deshalb hätte ich es lieber am Ende der Batch, das funktioniert aber nicht, weil PCem bockig ist.
Zitieren
#8
0
Guten Abend zusammen,

bin ja wirklich neugierig und wollte das nun auch mal testen...

Tritt der Fehler bei euch, nur mit bestimmten Spielen etc. auf?

Wenn ich nur PCem per Batch starte, und dann das Menü oben mit dem X schließe, beendet sich auch PCem komplett...

Versuche den Fehler gerade zu reproduzieren Smile

//EDIT
Habe jetzt mal das AIO Paket von Andi genommen und egal ob während des booten oder auf dem Desktop...wenn ich PCem per Batch starte und über das X Schließe, verschwindet PCem sowohl aus den Anwendungen sowie den Prozessen.
//EDIT Ende

Grüße
Ardios
Zitieren
#9
0
donald schrieb:Wenn du den Prozess zu Beginn der Batch zu beendest, verhinderst du doch nur, dass er doppelt ausgeführt wird.
So ist es. Und genau das ist für mich auch wichtig, da die Batchdateien somit keine Probleme bereiten. Wie gesagt: Eine Lösung dafür, dass es weiterhin im Hintergrund aktiv ist, habe ich leider nicht. Deine Idee ist gut, weiß aber nicht, wie man so etwas realisieren kann.

Ardios schrieb:Habe jetzt mal das AIO Paket von Andi genommen und egal ob während des booten oder auf dem Desktop...wenn ich PCem per Batch starte und über das X Schließe, verschwindet PCem sowohl aus den Anwendungen sowie den Prozessen.
Dann hast du sicher dieses Paket getestet: [Paket] PCem V12 (Windows 98SE Lite) Seitdem wurde die Benutzeroberfläche von PCem komplett überarbeitet (ich sollte den Thread mal wieder aktualisieren ^^'). V14 ist die aktuelle Version.
Zitieren
#10
0
Code:
$Result = Get-Process |
Select-Object -Property processname, mainwindowhandle, id|
Where-Object -FilterScript {
  $_.ProcessName -eq 'PCem'
}
While ($Result)
{
  $Result = Get-Process |
  Select-Object -Property processname, mainwindowhandle, id |
  Where-Object -FilterScript {
    $_.ProcessName -eq 'PCem'
  }                    
  foreach($obj in $Result)
  {
    if($obj.MainWindowHandle -eq 0)
    {
      Stop-Process -Id $obj.id -Force
    }
  }
}
Dieses Script kann man nach dem Start von PcEM ausführen, um die Anwendung zu überwachen, und den Prozess zu schließen, sobald die Anwendung nicht mehr Verfügbar ist.

Habe das ganze mal kompiliert, du kannst die Anwendung also in einem eigenen Batch Script, nach dem Start von PcEM, starten.


Angehängte Dateien
.exe   CheckPCEM.exe (Größe: 277 KB / Downloads: 0)
.bat   startpcem.bat (Größe: 79 Bytes / Downloads: 3)
[Bild: banner_cool3zhjth.jpg]
Zitieren
#11
0
Hi,

danke für deine Mühe, aber es will irgendwie nicht so.

wenn ich PCem gestartet und über das X beendet habe, steht im Taskmanager unter Prozesse PCem.exe drin.
Wenn ich CheckPCEM.exe starte passiert gar nicht. PCem steht immer noch unter Prozesse.
Mache ich etwas verkehrt?

Noch eine Eigenart von PCem:
Wenn du PCem über eine Batch startest und über das X beendest wartet die Batch, sie arbeitet nicht die nächste Zeile ab.
Es spielt keine Rolle, ob PCem direkt oder über das "start" Kommando gestartet wird, die Option "/w" spielt auch keine Rolle.
Kann man einfach mit echo hallo und pause überprüfen.
Es muss erst der Prozess beendet werden, dann geht's weiter.
Zitieren
#12
0
Nabend zusammen,

@donald

was nutzt du denn als Host-Betriebssystem?

Viele Grüße

Ardios
Zitieren
#13
0
Danke fürs Zusammenbasteln, D2001! Smile

Wenn ich nur mit deiner Batchdatei arbeite, dann funktioniert alles prima. Habe ich allerdings zuvor PCem über die "normale" CMD-Methode einmal gestartet (und somit der Prozess PCem bereits besteht), deine Batchdatei öffne und über das "X" schließe, dann ist er weiterhin da. Ironischerweise schließen sich übrigens die Prozesse "CheckPCEM.exe" und "Windows PowerShell" bei mir nicht mehr - die werden mit der Zeit immer mehr. ^^

Edit: Gerade noch ein paar mal versucht und jetzt geht alles einwandfrei.

Edit2: Also es funktioniert auf jeden Fall schon mal nicht, wenn man Parameter (wie z.B. /min) nach "start" setzt. Wenn man diese entfernt... klappt es wieder. Komisch. Werde das morgen nochmal testen.
Zitieren
#14
0
Nabend zusammen,

ich bin leider nicht in der Lage, den Fehler zu reproduzieren Sad

Egal wie ich PCem V14 starte...wenn ich es per X Schließe, beendet sich bei mir alles so wie es soll Sad auch meine Batch, die per Tastendruck erst alles killt funktioniert bei mir Sad

Ich teste aber weiter und sobald ich den Fehler reproduzieren kann, werde ich versuchen eine Lösung zu finden Smile


Grüße

Ardios
Zitieren
#15
0
Hi Andi,

habe das Problem gefunden, die Suche nach einer Anwendung mit "PcEm" im Titel, schlägt auch an, wenn z.B. im Texteditor eine Datei mit dem Namen "Pcem.txt" geöffnet ist. läuft das Script einfach weiter, auch wenn PcEm schon geschlossen wurde, der Prozess wird dann natürlich auch nicht beendet.

Habe die Suche nach der Anwendung mal verfeinert und neu kompiliert, so müsste es problemlos laufen:

Code:
$Result = Get-Process |
Select-Object -Property processname, mainwindowhandle, id|
Where-Object -FilterScript {
  $_.ProcessName -eq 'PCem'
}
While ($Result)
{
  $Result = Get-Process |
  Select-Object -Property processname, mainwindowhandle, id |
  Where-Object -FilterScript {
    $_.ProcessName -eq 'PCem'
  }                    
  foreach($obj in $Result)
  {
    if($obj.MainWindowHandle -eq 0)
    {
      Stop-Process -Id $obj.id -Force
    }
  }
}
[Bild: banner_cool3zhjth.jpg]
Zitieren
#16
0
Hi D2001,

ich habe ordentliche Probleme mit deiner CheckPCEM.exe und ich suche weiterhin nach einer Möglichkeit. Vielleicht liegt es ja auch an Win7/64 SP1.
Ich muss mir mal AutoHotKey genauer ansehen, vielleicht steckt da eine Lösung drin.

Auf jeden Fall danke für deine Mühen.
Zitieren
#17
0
Sorry, hatte die EXE eben nicht getestet, war noch was falsch gesetzt, PCem wurde nach 10 Sekunden einfach geschlossen. Habe oben alles angepasst, jetzt müsste es gehen.
[Bild: banner_cool3zhjth.jpg]
Zitieren
#18
0
Danke D2001. Leider funktioniert es damit bei mir nun gar nicht mehr (Windows 10/64). Vielleicht liegt es daran, wie wir es starten? Bei mir ist es so:

Code:
PCem.exe --config ".\\configs\\DOS.cfg"
CheckPCEM.exe
Zitieren
#19
0
Andi schrieb:Danke D2001. Leider funktioniert es damit bei mir nun gar nicht mehr (Windows 10/64). Vielleicht liegt es daran, wie wir es starten? Bei mir ist es so:

Code:
PCem.exe --config ".\\configs\\DOS.cfg"
CheckPCEM.exe

In einer Batch müsste Pcem auf jedenfall mit "start" aufgerufen werden. Ohne "start" wartet die Batch bis der Prozess PcEm geschlossen wurde, und arbeitet dann erst weiter.
Mit der Batch oben startet CheckPCem also erst wenn PCem wieder geschlossen wurde.
[Bild: banner_cool3zhjth.jpg]
Zitieren
#20
0
Ja, so hatte ich es ursprünglich. Ich weiß aber jetzt, was es ist. Wenn ich PCem zu schnell schließe, ist der Prozess weiterhin vorhanden. Wartet man jedoch ein bisschen und beendet es... funktioniert es.

Edit:
Beide "Seconds"-Werte auf 2 gestellt... jetzt geht's! Vielen Dank für das Script, D2001. Fröhlich

[start.bat]
Code:
start PCem.exe --config ".\\configs\\DOS.cfg"
powershell -WindowStyle Hidden -Executionpolicy Bypass -command "&'.\\!close.ps1'"

[!close.ps1]
Code:
Start-Sleep -s 2
$Result = get-process | where-object {$_.mainwindowhandle -ne 0} | select-object name, mainwindowtitle | Where-Object {$_.MainWindowTitle -like "*PcEM*"} | Where-Object {$_.Name -like "*PcEm*"}

While ($Result){
  $Result = get-process | where-object {$_.mainwindowhandle -ne 0} | select-object name, mainwindowtitle | Where-Object {$_.MainWindowTitle -like "*PcEM*"} | Where-Object {$_.Name -like "*PcEm*"}
  if($Result){Start-Sleep -Seconds 2} else {Stop-Process -Id (Get-Process | Where {$_.Name -like '*PcEM*'} | Select-Object -ExpandProperty ID) -Force}
}
Edit: Trotzdem aber nicht immer. Das ist dann wohl wirklich das Timing.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste