阿杰 发表于 2010-7-11 09:16:00

进程名取进程ID

'-------------------------------------------
' 根据进程名取进程ID
' 参数:可执行文件名(含扩展名)
' 返回:进程ID。0表示无
'例子: GetProcessIdFromName("QQ.EXE")
'-------------------------------------------
Private Function GetProcessIdFromName(ByVal sName As String) As Long
Dim hSnapshot As Long
Dim lpPE As PROCESSENTRY32W
Dim lpWinlogon As Long
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
    Debug.Assert hSnapshot
    lpPE.dwSize = Len(lpPE)
    If Process32First(hSnapshot, lpPE) Then
      lpWinlogon = StrPtr(sName)
      Do
            If lstrcmpi(lpPE.szExeFile(1), lpWinlogon) = 0 Then
                GetProcessIdFromName = lpPE.h32ProcessID
                Exit Do
            End If
            If Process32Next(hSnapshot, lpPE) = 0 Then Exit Do
      Loop
    End If
    Call CloseHandle(hSnapshot)
End Function

zmh886 发表于 2010-11-27 14:23:35

差很多东西- -

Tesla.Angela 发表于 2010-11-27 15:12:52

这叫“根据进程名取进程ID”

阿杰 发表于 2010-11-27 21:05:51

谢谢标题已改

jiedengye 发表于 2010-12-9 13:03:29

如果有多个qq.exe怎么办

xxhaishixx 发表于 2011-5-15 07:45:14

jiedengye 发表于 2010-12-9 13:03 static/image/common/back.gif
如果有多个qq.exe怎么办

这个问题问得太好了,嘿嘿……学习了!
页: [1]
查看完整版本: 进程名取进程ID