Hey guys, I'm trying to remove type declares on that code but I didn't success.
Here is the code:
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, th32ProcessID As Long) As Long
Public Type PROCESSENTRY32
dwSize As Long
cntUseage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
swFlags As Long
szExeFile As String * 1024
End Type
Public Function Running(ByVal sFileName As String) As Boolean
Dim hSnapshot As Long
Dim pe32 As PROCESSENTRY32
hSnapshot = CreateToolhelp32Snapshot(2, 0)
pe32.dwSize = Len(pe32)
Process32First hSnapshot, pe32
Do While Process32Next(hSnapshot, pe32) <> 0
If InStr(1, LCase(pe32.szExeFile), LCase(sFileName)) > 0 Then
Running = True
End If
Loop
CloseHandle (hSnapshot)
End Function
Would be really appreciated if anyone could remove the type declare and let me know how you did it.
Thanks!
I've tried:
Public Function IsProcessRunning(ByVal sFileName As String) As Boolean
Dim hSnapshot As Long
Dim bPE32(1024 + 36 - 1) As Byte
Dim bExe(1023) As Byte
hSnapshot = CreateToolhelp32Snapshot(2, 0)
sMoveMem VarPtr(bPE32(0)), VarPtr(CLng(UBound(bPE32))), 4
Process32First hSnapshot, VarPtr(bPE32(0))
Do While Process32Next(hSnapshot, VarPtr(bPE32(0))) <> 0
sMoveMem VarPtr(bExe(0)), VarPtr(bPE32(36)), 1024
If InStr(1, LCase(StrConv(bExe, vbUnicode)), LCase(sFileName)) > 0 Then
IsProcessRunning = True
End If
Loop
CloseHandle (hSnapshot)
End Function
But this is buggy, it doesnt work correctly...