[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 937
  • Last Modified:

vb 6.0 kill process error in code

Hi, I got an error on the commented line (on the Left$ function)..says something about declaration/type does not match the type defined. Please help.

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 * 260
End Type
'-------------------------------------------------------
Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, _
ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long

Declare Function ProcessFirst Lib "kernel32.dll" Alias "Process32First" (ByVal hSnapshot As Long, _
uProcess As PROCESSENTRY32) As Long

Declare Function ProcessNext Lib "kernel32.dll" Alias "Process32Next" (ByVal hSnapshot As Long, _
uProcess As PROCESSENTRY32) As Long

Declare Function CreateToolhelpSnapshot Lib "kernel32.dll" Alias "CreateToolhelp32Snapshot" ( _
ByVal lFlags As Long, lProcessID As Long) As Long

Declare Function TerminateProcess Lib "kernel32.dll" (ByVal ApphProcess As Long, _
ByVal uExitCode As Long) As Long

Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long


Public Sub KillProcess(NameProcess As String)
Const PROCESS_ALL_ACCESS = &H1F0FFF
Const TH32CS_SNAPPROCESS As Long = 2&
Dim uProcess  As PROCESSENTRY32
Dim RProcessFound As Long
Dim hSnapshot As Long
Dim SzExename As String
Dim ExitCode As Long
Dim MyProcess As Long
Dim AppKill As Boolean
Dim AppCount As Integer
Dim i As Integer
Dim WinDirEnv As String
       
       If NameProcess <> "" Then
          AppCount = 0

          uProcess.dwSize = Len(uProcess)
          hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
          RProcessFound = ProcessFirst(hSnapshot, uProcess)
 
          Do
            i = InStr(1, uProcess.szexeFile, Chr(0))
            SzExename = LCase$(Left$(uProcess.szexeFile, i - 1))   // ERROR HERE
            WinDirEnv = Environ("Windir") + "\"
            WinDirEnv = LCase$(WinDirEnv)
       
            If Right$(SzExename, Len(NameProcess)) = LCase$(NameProcess) Then
               AppCount = AppCount + 1
               MyProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
               AppKill = TerminateProcess(MyProcess, ExitCode)
               Call CloseHandle(MyProcess)
            End If
            RProcessFound = ProcessNext(hSnapshot, uProcess)
          Loop While RProcessFound
          Call CloseHandle(hSnapshot)
       End If

End Sub
0
azcalv408
Asked:
azcalv408
  • 4
  • 2
1 Solution
 
patingsadagatCommented:
try this:

Do
            i = InStr(1, uProcess.szexeFile, Chr(0))
            if i > 1 the
              SzExename = LCase$(Left$(uProcess.szexeFile, i - 1))
              WinDirEnv = Environ("Windir") + "\"
              WinDirEnv = LCase$(WinDirEnv)
       
              If Right$(SzExename, Len(NameProcess)) = LCase$(NameProcess) Then
                 AppCount = AppCount + 1
                 MyProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
                 AppKill = TerminateProcess(MyProcess, ExitCode)
                 Call CloseHandle(MyProcess)
              End If
            End If
            RProcessFound = ProcessNext(hSnapshot, uProcess)
          Loop While RProcessFound
0
 
azcalv408Author Commented:
SzExename = LCase$(Left$(uProcess.szexeFile, i - 1))

=> still got error :(
0
 
patingsadagatCommented:
Do
            i = InStr(1, uProcess.szexeFile, Chr(0))
            if i > 1 then
              debug.print uProcess.szexeFile   'this is to check the last file to which it gives an error
              SzExename = LCase$(Left$(uProcess.szexeFile, i - 1))
              WinDirEnv = Environ("Windir") + "\"
              WinDirEnv = LCase$(WinDirEnv)
       
              If Right$(SzExename, Len(NameProcess)) = LCase$(NameProcess) Then
                 AppCount = AppCount + 1
                 MyProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
                 AppKill = TerminateProcess(MyProcess, ExitCode)
                 Call CloseHandle(MyProcess)
              End If
            End If
            RProcessFound = ProcessNext(hSnapshot, uProcess)
          Loop While RProcessFound
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
azcalv408Author Commented:
hi,
that debug statements prints  
[System Process]
0
 
azcalv408Author Commented:
here's the exact error:

Type-declaration character does not match declared data type.
0
 
azcalv408Author Commented:
added vba. before the left and works now
0
 
PaulHewsCommented:
Yes, sounds like you might have declared Left somewhere else in your program.  
0

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now