c# 在一个程序里唤醒另一个程序(最小化时显示在前面)

xiaoxiao2025-08-27  21

 

方式一:

 

[DllImport("user32.dll ")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);         //根据任务栏应用程序显示的名称找相应窗口的句柄         [DllImport("User32.dll", EntryPoint = "FindWindow")] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); private const int SW_RESTORE = 9; private void OpenSerialPortUtility(object sender, EventArgs e) { //遍历进程列表查找目标程序是否运行运行则前置否则启动 Process[] pList = Process.GetProcesses("."); bool b = false; foreach (Process p in pList) { if (p.ProcessName == "wpfYourSystem") { b = true;         ShowWindow(p.MainWindowHandle, SW_RESTORE); //将窗口还原,如果不用此方法,缩小的窗口不能激活         break; } } if (b == false) { System.Diagnostics.Process.Start(@"C:\Users\Administrator\Desktop\9.18测试\医生端\Debug\wpfYourSystem.exe"); } }

方式二(只是唤醒程序):

[DllImport("user32.dll")] public static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab); string pName = Path.GetFileNameWithoutExtension(Application.ExecutablePath);//要启动的进程名称,可以在任务管理器里查看,一般是不带.exe后缀的; Process[] temp = Process.GetProcessesByName(pName);//在所有已启动的进程中查找需要的进程; if (temp.Length > 0)//如果查找到 { IntPtr handle = temp[0].MainWindowHandle; SwitchToThisWindow(handle, true); // 激活,显示在最前 }

 

转载请注明原文地址: https://www.6miu.com/read-5035308.html

最新回复(0)