首页
统计
关于
骗子曝光
Search
1
电脑微信企业微信双开/多开的方法(这可能是最简单粗暴高效的解决方案)
1,611 阅读
2
网址自动推送百度API源码(PHP源码)(百度php推送源代码)
658 阅读
3
宝塔面板7.7.0版本原版安装+升级脚本(宝塔面板7.6.0破解版)
647 阅读
4
宝塔LINUX企业永久付费破解版(宝塔企业版破解版)所有专业版企业版插件免费使用!
515 阅读
5
宝塔面板插件破解方法(宝塔面板插件破解方法教程)
451 阅读
闲聊
骗子曝光
线报
WinForm
WinForm成品
WinForm源码
WinForm代码段
WEB
HTML代码
PHP代码
网站文章
网站源码
建站程序
Typecho
Typecho模板
Typecho插件
服务器运维面板
宝塔面板
网络安全
软件工具
技术教程
域名
自营程序
短链网DLW.IM
登录
Search
标签搜索
宝塔面板
BT
源码
PHP
Telegram
百度
Typecho
CDN
谷歌翻译
nginx
IP
宝塔面板企业版免授权安装脚本
宝塔面板破解版
子比主题
在线截图生成器
网站源码
2023最新可用dai挂网源码
阿里云域名快速转出的方法
国内服务器绕过备案详细操作教程
C#进程守护
Root
累计撰写
139
篇文章
累计收到
161
条评论
今日撰写
3
篇文章
首页
栏目
闲聊
骗子曝光
线报
WinForm
WinForm成品
WinForm源码
WinForm代码段
WEB
HTML代码
PHP代码
网站文章
网站源码
建站程序
Typecho
Typecho模板
Typecho插件
服务器运维面板
宝塔面板
网络安全
软件工具
技术教程
域名
自营程序
短链网DLW.IM
页面
统计
关于
骗子曝光
用户登录
登录
搜索到
1
篇与
Winform 程序多开
的结果
2023-03-19
Winform 程序多开
在使用应用程序的过程中,经常要求应用程序只能运行一次。如果发现重复开启,应从系统进程列表中搜索到已经开启的进程,并将该进程窗口移到最前端显示。实现过程在 Program.cs 文件的 Program 类中声明两个外部调用函数 [DllImport("User32")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("User32")] private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);两个外部调用 User32.dll 文件中的函数,其中SetForegroundWindow 主要用于将窗体移动到最前端显示,ShowWindowAsync函数用于显示窗体。修改 main 函数内容static void Main() { bool createdNew; //是否是第一次开启程序 Mutex mutex = new Mutex(false, "Single", out createdNew); //实例化一个进程互斥变量,标记名称Single if (!createdNew) //如果多次开启了进程 { Process currentProcess = Process.GetCurrentProcess();//获取当前进程 foreach (Process process in Process.GetProcessesByName(currentProcess.ProcessName)) { //通过进程ID和程序路径获取一个已经开启的进程 if ((process.Id != currentProcess.Id) && (Assembly.GetExecutingAssembly().Location == process.MainModule.FileName)) { //获取已经开启的进程的主窗体句柄 IntPtr mainFormHandle = process.MainWindowHandle; if (mainFormHandle != IntPtr.Zero) { ShowWindowAsync(mainFormHandle, 1); //显示已经开启的进程窗口 SetForegroundWindow(mainFormHandle); //将已经开启的进程窗口移动到前端 } } } mutex.WaitOne(); mutex.ReleaseMutex(); //释放Mutex一次 //MessageBox.Show("进程已经开启"); return; } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainFrame()); } }Mutex类,该类位于System.Threading命名空间下,主要用于创建线程或进程的互斥变量。本实例创建了一个名为Single的互斥变量,在运行程序时,首先访问该互斥变量,看该变量是否已经被创建,如果已经被创建,说明已经有相同的进程正在运行。
2023年03月19日
4 阅读
0 评论
0 点赞