内容简介:[Winform]检测exe是否已经运行,并将其置顶
摘要
在很多pc应用中,基本上都需要有这样的判断,保证在一个终端只运行一个winform的client。并且如果最小化了,用户再次双击桌面图标的时候,将client置顶显示。
解决方案
需要使用windows的API,可以很方便的实现这个目的。
代码如下:
using System; using System.Diagnostics; using System.Runtime.InteropServices; class AppMain { [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); private const int SW_HIDE = 0; private const int SW_SHOWNORMAL = 1; private const int SW_SHOWMINIMIZED = 2; private const int SW_SHOWMAXIMIZED = 3; private const int SW_SHOWNOACTIVATE = 4; private const int SW_RESTORE = 9; private const int SW_SHOWDEFAULT = 10; static void Main() { // get the name of our process string proc=Process.GetCurrentProcess().ProcessName; // get the list of all processes by that name Process[] processes=Process.GetProcessesByName(proc); // if there is more than one process... if (processes.Length > 1) { // Assume there is our process, which we will terminate, // and the other process, which we want to bring to the // foreground. This assumes there are only two processes // in the processes array, and we need to find out which // one is NOT us. // get our process Process p=Process.GetCurrentProcess(); int n=0; // assume the other process is at index 0 // if this process id is OUR process ID... if (processes[0].Id==p.Id) { // then the other process is at index 1 n=1; } // get the window handle IntPtr hWnd=processes[n].MainWindowHandle; // if iconic, we need to restore the window if (IsIconic(hWnd)) { ShowWindowAsync(hWnd, SW_RESTORE); } // bring it to the foreground SetForegroundWindow(hWnd); // exit our process return; } // ... continue with your application initialization here. } }
上面代码的意思是判断exe是否已经在进程列表中,如果存在则标识已经运行了客户端,如果存在获取窗口的句柄,并进行展示。
资料来源
https://www.codeproject.com/Articles/2976/Detect-if-another-process-is-running-and-bring-it
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- PHP 运行时漏洞检测
- Ubuntu,JavaFX,Java运行时环境已经检测到一个致命的错误
- 手机端运行卷积神经网络的一次实践 -- 基于 TensorFlow 和 OpenCV 实现文档检测功能
- springboot服务优雅关机脚本(在停止服务的命令发出后将执行完正在运行的进程)外加检测进程死掉自...
- 恶意软件如何绕过AMSI检测以逃避检测
- 行人检测新思路:高级语义特征检测取得精度新突破
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据结构(C语言版)
严蔚敏、吴伟民 / 清华大学出版社 / 2012-5 / 29.00元
《数据结构》(C语言版)是为“数据结构”课程编写的教材,也可作为学习数据结构及其算法的C程序设计的参数教材。 本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和排序的各种实现方法及其综合分析比较。其内容和章节编排1992年4月出版的《数据结构》(第二版)基本一致,但在本书中更突出了抽象数据类型的概念。全书采用类C语言作为数据结构和算法的描述语言。 ......一起来看看 《数据结构(C语言版)》 这本书的介绍吧!