public Process GetProcessFromWindowHandle(IntPtr handle) { const string applicationFrameHostName = "ApplicationFrameHost"; var process = windowProcessCache.Get(handle); if (process != default && process.ProcessName != applicationFrameHostName) { return(process); } windowNativeApi.GetWindowThreadProcessId(handle, out var processId); if (processId == CurrentProcessInformation.CurrentProcess.Id) { return(CurrentProcessInformation.CurrentProcess); } process = Process.GetProcessById((int)processId); if (process.ProcessName == applicationFrameHostName) { process = GetProcessFromUniversalWindowsApplication(handle, process); } windowProcessCache.Set(handle, process); return(process); }
public Process GetProcessFromWindowHandle(IntPtr handle) { var process = windowProcessCache.Get(handle); if (process != default) { return(process); } windowNativeApi.GetWindowThreadProcessId(handle, out var processId); if (processId == CurrentProcessInformation.CurrentProcess.Id) { return(CurrentProcessInformation.CurrentProcess); } process = Process.GetProcessById((int)processId); windowProcessCache.Set(handle, process); return(process); }
public ProcessThread GetUserInterfaceThreadOfProcess(Process process) { if (process.MainWindowHandle == IntPtr.Zero) { return(null); } var processThreadId = windowNativeApi.GetWindowThreadProcessId( process.MainWindowHandle, out _); foreach (ProcessThread processThread in process.Threads) { if (processThread.Id == processThreadId) { return(processThread); } } return(null); }