Private Const MAX_PATH As Long = 260& Private Const PROCESS_QUERY_INFORMATION As Long = &H400 Private Const PROCESS_VM_READ As Long = &H10 Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function GetModuleFileNameEx Lib "psapi" Alias "GetModuleFileNameExW" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFileName As Long, ByVal nSize As Long) As Long Private Function GetExeFilePathFromHandle(ByVal hWnd As Long) As String Dim Buffer As String Dim BufferLength As Long Dim Pid As Long Dim hProcess As Long Buffer = VBA.String$(MAX_PATH, ChrW$(0)) Call GetWindowThreadProcessId(hWnd, Pid) hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0&, Pid) BufferLength = GetModuleFileNameEx(hProcess, 0&, StrPtr(Buffer), MAX_PATH) Call CloseHandle(hProcess) GetExeFilePathFormHandle = VBA.Left$(Buffer, BufferLength) End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.