看看这个有用没有啊Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, _ lpdwProcessId As Long) As Long Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, _ ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hProcess As Long, _ ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, _ ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Const PROCESS_QUERY_INFORMATION = 1024 Const PROCESS_VM_READ = 16 Const MAX_PATH = 260Public Function GetPath(ByVal hWnd As Long) As String Dim hProcess As Long Dim ProcID As Long Dim cbNeed As Long Dim ModuleName As String Dim nSize As Long Dim lRet As Long Dim mModules(1 To 200) As Long GetWindowThreadProcessId hWnd, ProcID hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcID) lRet = EnumProcessModules(hProcess, mModules(1), 200, cbNeed) If lRet <> 0 Then ModuleName = Space(MAX_PATH) nSize = 500 lRet = GetModuleFileNameExA(hProcess, mModules(1), ModuleName, nSize) GetPath = Left(ModuleName, lRet) End If ret = CloseHandle(hProcess) End Function
lpdwProcessId As Long) As Long
Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long
Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, _
ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hProcess As Long, _
ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, _
ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Const PROCESS_QUERY_INFORMATION = 1024
Const PROCESS_VM_READ = 16
Const MAX_PATH = 260Public Function GetPath(ByVal hWnd As Long) As String
Dim hProcess As Long
Dim ProcID As Long
Dim cbNeed As Long
Dim ModuleName As String
Dim nSize As Long
Dim lRet As Long
Dim mModules(1 To 200) As Long
GetWindowThreadProcessId hWnd, ProcID
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcID)
lRet = EnumProcessModules(hProcess, mModules(1), 200, cbNeed)
If lRet <> 0 Then
ModuleName = Space(MAX_PATH)
nSize = 500
lRet = GetModuleFileNameExA(hProcess, mModules(1), ModuleName, nSize)
GetPath = Left(ModuleName, lRet)
End If
ret = CloseHandle(hProcess)
End Function