AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Abfragen ob ein Prozess läuft

Ein Thema von RedDust · begonnen am 26. Sep 2005 · letzter Beitrag vom 26. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#1

Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 08:34
Hi @ all,

Ich schreibe gerade an einem Tool das einen bzw. mehreren Prozessen sucht und wenn es dann eins gefunden hat etwas macht. Leider habe ich in der Forumsuche nichts gefunden also hoffe ich das ihr mir vll weiterhelfen könnt.

Mfg,

Mario
Mario Franze
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 08:51
Hi!

Sag uns doch bitte, an was du den Prozess erkennen willst. An der exe oder an der Prozess-ID? Oder an etwas ganz anderem?
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 08:52
Hi,

mit dieser procedure kannst du die Prozesse aktiven auflisten:

Delphi-Quellcode:
procedure ListProcess(lb: TListbox);
var hProcSnap: THandle;
    pe32: TProcessEntry32;
begin
hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
if hProcSnap = INVALID_HANDLE_VALUE then exit;
pe32.dwSize := SizeOf(ProcessEntry32);
if Process32First(hProcSnap, pe32) = true then
 while Process32Next(hProcSnap, pe32) = true do
  begin
  // Prozess hinzufügen
  lb.Items.Add(pe32.szExeFile);
  end;
CloseHandle(hProcSnap);
end;
  Mit Zitat antworten Zitat
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 08:54
Zitat von chaosben:
Hi!

Sag uns doch bitte, an was du den Prozess erkennen willst. An der exe oder an der Prozess-ID? Oder an etwas ganz anderem?
An einer exe.

Folgendes: Ich starte ein Spiel und das Tool soll mir sagen ob das spiel läuft oder nicht.

EDIT:

Zitat von Baeuerle:
Hi,

mit dieser procedure kannst du die Prozesse aktiven auflisten:

Delphi-Quellcode:
procedure ListProcess(lb: TListbox);
var hProcSnap: THandle;
    pe32: TProcessEntry32;
begin
hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
if hProcSnap = INVALID_HANDLE_VALUE then exit;
pe32.dwSize := SizeOf(ProcessEntry32);
if Process32First(hProcSnap, pe32) = true then
 while Process32Next(hProcSnap, pe32) = true do
  begin
  // Prozess hinzufügen
  lb.Items.Add(pe32.szExeFile);
  end;
CloseHandle(hProcSnap);
end;
Danke, genau das hab' ich gebraucht ^^
Mario Franze
  Mit Zitat antworten Zitat
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 09:00
ehmm, Kommando zurück. Muss ich noch eine Unit einbinden? Der Compiler gibt mir 3 Fehlermeldungen.

Code:
[Error] Unit1.pas(31): Undeclared identifier: 'TProcessEntry32'
[Error] Unit1.pas(33): Undeclared identifier: 'CreateToolHelp32SnapShot'
[Error] Unit1.pas(33): Undeclared identifier: 'TH32CS_SNAPPROCESS'
Mario Franze
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 09:10
Yep,

und zwar die Unit "tlhelp32".
  Mit Zitat antworten Zitat
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 09:25
OK, jetzt funzt es, thx.
Mario Franze
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 09:27
Mit Baeuerle's Routine wirst du nicht viel Erfolg haben, da es keine sichere Methode gibt um von einem Prozeß auf ein Image zu schließen (dazu sind die verwendeten Puffer zu klein - und zwar bereits innerhalb der Native API).
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#9

Re: Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 09:40
ja sobald du zwei prozesse mit gleichem namen laufen hast, ist das hinfällig.

Arnulf
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: Abfragen ob ein Prozess läuft

  Alt 26. Sep 2005, 09:51
Zitat von Arnulf:
ja sobald du zwei prozesse mit gleichem namen laufen hast, ist das hinfällig.
Ich meine nicht nur mehrere Instanzen, was ja nur insofern ein Problem ist, daß man alle Instanzen auflisten muß - vielmehr geht es mir um die Puffer.

Beispiel: ich habe den Apache und den Apache Monitor laufen. Das Modul letzteren Programms heißt ApacheMonitor.exe, sowohl die ToolHelp-API als auch der TaskManager (der direkt die Native APIs benutzt) geben aber folgendes aus: "ApacheMonitor.e".

Das Problem ist übertragbar auf andere lange Dateinamen und auch auf andere Systeme. Kurz es ist nachvollziehbar. Ein einfacher Vergleich mit "ApacheMonitor.exe" würde hier also fehlschlagen, obwohl der Prozeß eindeutig auf exakt diesem Modul basiert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz