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

Contenu du snippet

'Imports System
'Imports System.Runtime.InteropServices
'Imports System.Text
Private Const MAX_PATH As Integer = 260
Private Const PROCESS_QUERY_INFORMATION As Integer = &H400
Private Const PROCESS_VM_READ As Integer = &H10
<DllImport("user32", SetLastError:=True)> _
Private Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, ByRef lpdwProcessId As Integer) As Integer
End Function
<DllImport("kernel32", SetLastError:=True)> _
Private Function OpenProcess(ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Boolean, ByVal dwProcessId As Integer) As IntPtr
End Function
<DllImport("kernel32", SetLastError:=True)> _
Private Function CloseHandle(ByVal hObject As IntPtr) As Boolean
End Function
<DllImport("psapi", SetLastError:=True)> _
Private Function GetModuleFileNameEx(ByVal hProcess As IntPtr, ByVal hModule As IntPtr, ByVal lpFileName As StringBuilder, ByVal nSize As Integer) As Integer
End Function

Private Function GetExeFilePathFromHandle(ByVal Handle As IntPtr) As String
  Dim Buffer As New StringBuilder(MAX_PATH)
  Dim Pid As Integer
  Dim hProcess As IntPtr
  Call GetWindowThreadProcessId(Handle, Pid)
  hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, False, Pid)
  Buffer.Length = GetModuleFileNameEx(hProcess, IntPtr.Zero, Buffer, MAX_PATH)
  Call CloseHandle(hProcess)
  Return Buffer.ToString()
End Function

Compatibilité : VB 2005, VB 2008, VB.NET 1.x

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.