[HELP] Type Declares

Iniciado por Swellow, 24 Junio 2012, 18:34 PM

0 Miembros y 1 Visitante están viendo este tema.

Swellow

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!

Swellow

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...