C# 激活其它进程的窗口并显示到最前
public partial class Frm1 { [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll")] private static extern bool IsIconic(IntPtr hWnd); // 消息函数 [DllImport("user32.dll", EntryPoint = "PostMessageA")] public static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport("user32.dll")] public static extern IntPtr FindWindow(string strclassName, string strWindowName); [DllImportAttribute("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); public const int WM_SYSCOMMAND = 0x0112; public const int SC_MAXIMIZE = 0xF030;//窗体最大化消息 public const int SC_NOMAL = 0xF120;//窗体还原消息 private void Frm1_Load(object sender, EventArgs e) { CheckAppExists(); } //判断是否重复打开 public void CheckAppExists() { string name = System.Diagnostics.Process.GetCurrentProcess().ProcessName; System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName(name);//获取指定的进程名 if (myProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动 { MessageBox.Show("程序已启动!"); Process[] process = Process.GetProcessesByName(name);//在所有已启动的进程中查找需要的进程; if (process.Length > 0)//如果查找到 { IntPtr handle = process[0].MainWindowHandle; IntPtr hWnd = process[0].MainWindowHandle; SendMessage(hWnd, WM_SYSCOMMAND, SC_NOMAL, 0); SetForegroundWindow(hWnd); } Application.Exit();//关闭系统 } } }
参考网站:(16条消息) C# 如何判断并且激活,最大化已有的外部应用程序的窗口? (源码例程)_jamex的博客-CSDN博客_c# 激活已经运行的程序
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南