目录
收起
1、需要用到的 APIs
2、大致步骤
1、首先导入 DLL 和添加引用
//引用 using System.Diagnostics; using System.Runtime.InteropServices; //导入DLL(class内部) [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetForegroundWindow(); [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
2、接着获取焦点窗口的 HWND
IntPtr myPtr = GetForegroundWindow();
3、通过 HWND 获取进程 ID,再通过 Process 的 GetProcessById 即可获取到进程
int calcID; GetWindowThreadProcessId(myPtr, out calcID); Process result = Process.GetProcessById(calcID);
值得注意的是,在 C# 7后 out 关键字支持在传入时定义,即为
GetWindowThreadProcessId(myPtr, out int calcID); Process result = Process.GetProcessById(calcID);