Chemin de l'application associé à une fenêtre

Contenu du snippet

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

Compatibilité : VB6, VBA

Disponible dans d'autres langages :

A voir également

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.