| |
|
|
|
Beschreibung:
CreateToolhelp32Snapshot macht einen Schnappschuß von laufenden Prozessen, Threads und DLL’s.
Deklaration:
Def @CreateToolhelp32Snapshot(2) !kernel32,CreateToolhelp32Snapshot
Parameter:
1.Parameter: Flags, die die Art des Schnappschusses bestimmen als LongIntwert. Flags können mit | addiert werden => -$80000000 = Schnappschußhandle kann vererbt werden. -$4 = Threadliste wird erzeugt. -$2 = Prozessliste wird erzeugt. -$8 = Von einem Prozess geladene DLL’s werden gelistet. -$1 = Erzeugt Heapliste eines Prozesses. 2.Parameter: ID eines Prozesses (0 für den aktuellen Prozess). Wenn $8 oder $1 nicht spezifiziert wurden, hat dieser Parameter keine Bedeutung.
Rückgabewert:
Offenes Handle auf den Schnappschuß.
Beispiele:
KompilierenMarkierenSeparierenDef @CreateToolhelp32Snapshot(2) !"kernel32","CreateToolhelp32Snapshot"
Def @Process32First(2) !"kernel32","Process32First"
Def @Process32Next(2) !"kernel32","Process32Next"
Def @CloseHandle(1) !"kernel32","CloseHandle"
Def @TerminateProcess(2) !"kernel32","TerminateProcess"
Def @OpenProcess(3) !"kernel32","OpenProcess"
Def &TH32CS_SNAPPROCESS 2
Def &PROCESS_TERMINATE 1
Declare PROCESSENTRY#
Struct PROCESSENTRY32 =dwSize&,cntUsage&,th32ProcessID&,th32DefaultHeapID&,th32ModuleID&,cntThreads&,th32ParentProcessID&,pcPriClassBase&,dwFlags&,szExeFile$(260)
Proc actua
parameters prozess$, delete%
declare lenname&
declare hSnapshot&, Result&, hProcess&, proz_anzahl&, term_ok&
Dim PROCESSENTRY#, PROCESSENTRY32
Long PROCESSENTRY#,0 =296
clear proz_anzahl&, term_ok&
lenname& = len(prozess$)
prozess$ = Lower$(prozess$)
hSnapshot& = CreateToolhelp32Snapshot(&TH32CS_SNAPPROCESS, 0)
IfNot hSnapshot& = -1
Result& = Process32First(hSnapshot&, PROCESSENTRY#)
messagebox(str$(GetLastError()),"Err",48)
messagebox(str$(Result&),str$(hSnapshot&),48)
While Result&
messagebox(Lower$(Right$(PROCESSENTRY#.szExeFile$,lenname&)),"",48)
if Lower$(Right$(PROCESSENTRY#.szExeFile$,lenname&)) = prozess$
if delete% = 1
hProcess& = @OpenProcess(&PROCESS_TERMINATE, 0, PROCESSENTRY#.th32ProcessID&)
sendmessage(hProcess&,$0010,0,0)
term_ok& = @TerminateProcess(hProcess&, 0)
@CloseHandle(hProcess&)
sleep 100
endif
proz_anzahl& = proz_anzahl& + (delete%<>1) + term_ok&
endif
Result& = Process32Next(hSnapshot&, PROCESSENTRY#)
EndWhile
endif
@CloseHandle(hSnapshot&)
Dispose PROCESSENTRY#
return proz_anzahl&
Endproc
@WinEXEC("NotePad.exe",1)
Sleep 10000
actua "Notepad.exe",1
[keywords:2a51069288] Tasks Prozesse listen auflisten Taskmanager DLLs Threads anzeigen [/keywords:2a51069288] |
|
|
| |
|
|