GetWindowThreadProcessId (user32)
Last changed: -71.187.199.49

.
Summary

C# Signature:

[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);

[DllImport("user32.dll")]
static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);

VB.Net Signature:

<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function GetWindowThreadProcessId(ByVal hwnd As IntPtr, _
                          ByRef lpdwProcessId As Integer) As Integer
End Function

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

We can use this API to get ProcessID from Window's Title by combining this function with EnumWindows.

Sample Code (VB):

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

Sample Code (C#):

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:

Sample Code (C#):

uint processID= 0;
uint threadID=GetWindowThreadProcessId(hWnd, out processID);

Alternative Managed API:

Do you know one? Please contribute it!

Documentation

Sneha