x Fabrizio Tornaboni |
LordTzeentch |
16/01/2006 |
Difficoltà:
Facile
|
|
Per
Fabrizio
Tornaboni:
ho
pensato
anke
ad
un'altro
metodo,
quello
di
prima
termina
solo
processi
ke
hanno
una
window,
ma
se
per
caso
vorresti
terminare
un
processo
senza
window,
tipo
explorer,
allora
nn
puoi
utilizzare
il
codice
ke
ti
ho
dato
in
precedenza.
Ti
riporto
il
secondo
esempio.
in
un
modilo
bas:
Public
Const
TH32CS_SNAPPROCESS
As
Long
=
2&
Public
Const
MAX_PATH
As
Integer
=
260
Public
Type
PROCESSENTRY32
dwSize
As
Long
cntUsage
As
Long
th32ProcessID
As
Long
th32DefaultHeapID
As
Long
th32ModuleID
As
Long
cntThreads
As
Long
th32ParentProcessID
As
Long
pcPriClassBase
As
Long
dwFlags
As
Long
szExeFile
As
String
*
MAX_PATH
End
Type
Public
Declare
Function
CreateToolhelpSnapshot
Lib
"Kernel32"
_
Alias
"CreateToolhelp32Snapshot"
_
(ByVal
lFlags
As
Long,
Byval
lProcessID
As
Long)
As
Long
Public
Declare
Function
ProcessFirst
Lib
"Kernel32"
_
Alias
"Process32First"
_
(ByVal
hSnapShot
As
Long,
uProcess
As
PROCESSENTRY32)
As
Long
Public
Declare
Function
ProcessNext
Lib
"Kernel32"
_
Alias
"Process32Next"
_
(ByVal
hSnapShot
As
Long,
uProcess
As
PROCESSENTRY32)
As
Long
Public
Declare
Sub
CloseHandle
Lib
"Kernel32"
_
(ByVal
hPass
As
Long)
nel
form:
Dim
Processo
As
Variant
Function
TerminaProcesso(NomeProcesso
As
String)
For
Each
Processo
In
GetObject("winmgmts:").InstancesOf("win32_process")
If
Processo.Name
=
NomeProcesso
Then
Processo.Terminate
Next
End
Function
Private
Sub
Form_Load()
Dim
KillProcesso
As
String
Dim
hSnapShot
As
Long
Dim
uProcess
As
PROCESSENTRY32
Dim
r
As
Long
NomeProcessoDaTerminare
=
"calc.exe"
hSnapShot
=
CreateToolhelpSnapshot(TH32CS_SNAPPROCESS,
0&)
If
hSnapShot
=
0
Then
Exit
Sub
uProcess.dwSize
=
Len(uProcess)
r
=
ProcessFirst(hSnapShot,
uProcess)
Do
While
r
Processoattivo
=
uProcess.szExeFile
PosPA
=
InStr(UCase(Processoattivo),
".EXE")
+
3
KillProcesso
=
Mid(Processoattivo,
1,
PosPA)
If
InStr(UCase(Processoattivo),
UCase(NomeProcessoDaTerminare))
>
0
Then
TerminaProcesso
KillProcesso
End
If
r
=
ProcessNext(hSnapShot,
uProcess)
Loop
Call
CloseHandle(hSnapShot)
End
Sub
ecco
così
dovrebbe
andare.
Buon
Lavoro.
|