Find process id by window's handle
You can use the following Windows API:
[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
You pass in the HWND and use the out parameter to return the PID.
You can read more on this function here on MSDN.
You will need to use P/invoke with the Windows API.
Declare a function in your class like
[DllImport("User32.dll")]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
and then call it in your class.
See PInvoke.