c#显示和隐藏另外一个进程
1 /// <summary> 2 /// 0-关闭窗口 1-正常大小显示 2最小化窗口 3-最大化窗口 3 /// </summary> 4 /// <param name="hwnd"></param> 5 /// <param name="nCmdShow"></param> 6 /// <returns></returns> 7 [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] 8 public static extern int ShowWindow(IntPtr hwnd, int nCmdShow); 9 10 /// <summary> 11 /// 显示程序 12 /// </summary> 13 /// <param name="hwnd">窗口句柄</param> 14 /// <param name="nCmdshow">0-关闭窗口 1-正常大小显示 2最小化窗口 3-最大化窗口</param> 15 /// <returns></returns> 16 public int DisPlayWindow(IntPtr hwnd, int nCmdshow) 17 { 18 return ShowWindow(hwnd, nCmdshow); 19 } 20 21 public Process Run(string exeName) 22 { 23 return Process.Start(exeName); 24 } 25 26 IntPtr hWnd = IntPtr.Zero; 27 Process process=null; 28 bool IsMini = true; 29 int nCmdshow = 1; 30 private void button1_Click(object sender, EventArgs e) 31 { 32 //获取句柄 33 if (process == null) 34 { 35 string exeName = Application.StartupPath + @"\CCD\CameraVision.exe"; 36 //创建启动进程信息 37 process = Run(exeName); 38 } 39 else 40 { 41 if (IsMini) 42 { 43 DisPlayWindow(process.MainWindowHandle, 1); 44 IsMini = false; 45 } 46 else 47 { 48 DisPlayWindow(process.MainWindowHandle, 2); 49 IsMini = true; 50 } 51 } 52 }
这里实现的是点击一个CCD按钮,打开CCD窗口,再点击CCD按钮,隐藏CCD窗口,测试发现,句柄不能通过这种方式获取:IntPtr hWnd=process.MainWindowHandle;而是直接用process.MainWindowHandle来表示这个进程的句柄,才可以实现。
这里还有一些其他的方法:
/// <summary> /// 0-隐藏窗口 1-正常大小显示 /// </summary> /// <param name="hWnd"></param> /// <param name="_value"></param> /// <returns></returns> [DllImport("user32.dll", EntryPoint = "ShowWindow")] public static extern IntPtr ShowWindow(IntPtr hWnd, int _value); /// <summary> /// 获取窗口句柄 /// </summary> /// <param name="lp1"></param> /// <param name="lp2"></param> /// <returns></returns> [DllImport("user32.dll", EntryPoint = "FindWindow")] public static extern IntPtr FindWindow(string lp1, string lp2); /// <summary> /// 获取当前窗口的句柄 /// </summary> /// <returns></returns> [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetForegroundWindow();
/下面是通过进程的名字(CameraVision.exe)来获取一个进程的句柄:
4556
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端