Entwickler-Ecke
Windows API - alle geöffneten programme ermitteln
ShadowThief - Mo 03.11.03 14:18
Titel: alle geöffneten programme ermitteln
hallo,
ich möchte alle geöffnete programme in einer listbox (im grunde wie
im taskmanager) anzeigen. ich habe dazu hier und bei google
nichts gefunden.
ich verwende windows 2000.
shadow.
ps: ich suche nichts bestimmtes, d. h. findwindow nützt mir hier
leider nichts.
ShadowThief - Di 04.11.03 10:31
ich schätze mal, du meinst enumwindows.zip, oder? da bekomm ich halt alle fenster, die offen sind. z. B. auch den delphi-objektinspektor, obwohl der in der taskleiste und im taskmanager nicht auftaucht.
was ich bräuchte wäre eine genaue liste, so wie sie im taskmanager unter "anwendungen" zu finden ist.
falls es das nicht gibt, schlag ich mich mit enumwindows durch.
danke einstweilen.
shadow.
Delete - Di 04.11.03 10:38
Ich meinete eigentlich CreateToolhel32Snapshot und oder EnumProcesses.
Quelltext
1:
| CreateToolhelp32Snapshot.zip 28-Sep-2003 15:26 2k Prozesse mittels eines Snapshots auflisten. Einen Prozess beenden. |
Quelltext
1:
| EnumProcesses.zip 28-Sep-2003 15:26 3k Processe mittels EnumProcesses auflisten. |
ShadowThief - Di 04.11.03 11:37
das sind dann alle prozesse, aber nicht alle anwendungen.
Delete - Di 04.11.03 12:09
Wie definierst du Anwendung und wie Prozess?
ShadowThief - Di 04.11.03 12:14
anwendungen sind die dinger, die im taskmanager unter anwendungen stehn, und prozesses sind die dinger die im taskmanager unter prozesse stehn.
sorry, aber da fällt mir echt nix anderes ein.
shadow.
Delete - Di 04.11.03 12:26
Ein Prozess kann mehrere Fenster haben. Ein Fenster aber nur eine Prozess zu dem es gehört. Jetzt musst du die ein Kriterium einfallen lassen, nach dem du die Prozesse Filterst, damit du das bekommst, was du willst.
ShadowThief - Di 04.11.03 13:01
das muss doch irgendwie einfacher gehn, aber ich finds echt nicht raus.
mist.
shadow.
Tino - Di 04.11.03 14:41
Hier mal der Sourcecode damit die anderen User nicht erst etwas suchen und das ganze downloaden müssen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95:
| uses tlhelp32;
procedure GetProcessList(sl: TStrings); 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 sl.Add(pe32.szExeFile); while Process32Next(hProcSnap, pe32) = true do begin sl.Add(pe32.szExeFile); end; CloseHandle(hProcSnap); end;
function GetProcessID(sProcName: String): Integer; var hProcSnap: THandle; pe32: TProcessEntry32; begin result := -1; 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 if pos(sProcName, pe32.szExeFile) <> 0then result := pe32.th32ProcessID; end; end;
procedure KillProcess(dwProcID: DWORD); var hProcess : Cardinal; dw : DWORD; begin hProcess := OpenProcess(SYNCHRONIZE or PROCESS_TERMINATE, False, dwProcID); TerminateProcess(hProcess, 0); dw := WaitForSingleObject(hProcess, 5000); case dw of WAIT_OBJECT_0: Messagebox(Application.Handle, 'Prozess wurde beendet.', 'Prozess beenden', MB_ICONINFORMATION); WAIT_TIMEOUT: begin Messagebox(Application.Handle, 'Prozess konnte nicht innerhalb von 5 Sekunden beendet werden.', 'Prozess beenden', MB_ICONSTOP); exit; end; WAIT_FAILED: begin RaiseLastOSError; exit; end; end; Form1.Button1Click(Form1); end; |
Falls etwas dagegen spricht (Luckie) bitte melden.
Gruß
Tino
ShadowThief - Di 04.11.03 17:48
ähm ... das sind jetzt wieder die prozesse.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!