[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
// When you don't want the ProcessId, use this overload and pass IntPtr.Zero for the second parameter
[DllImport("user32.dll")]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);
<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function GetWindowThreadProcessId(ByVal hwnd As IntPtr, _
ByRef lpdwProcessId As Integer) As Integer
End Function
[DllImport("user32", SetLastError : true)]
static def GetWindowThreadProcessId(hWnd as IntPtr, ref lpdwProcessId as int) as uint:
pass
None.
None.
We can use this API to get ProcessID from Window's Title by combining this function with EnumWindows.
If objAcc Is Nothing Then
objAcc = New Application
Dim lngPid As Integer
Dim lngAccessHwnd As IntPtr = New IntPtr(objAcc.hWndAccessApp)
GetWindowThreadProcessId(lngAccessHwnd, lngPid)
End If
IntPtr pID = GetWindowThreadProcessId(GetForegroundWindow(), IntPtr.Zero);
GetWindowThreadProcessId returns the id of the thread that created the target window. To get the process id of a window, use the first c# signature above, and:
uint processID= 0;
uint threadID=GetWindowThreadProcessId(hWnd, out processID);
Do you know one? Please contribute it!
Sneha