怎样知道程序已经在运行

 时间:2024-10-14 18:32:46

有些时候,我们不希望同一个程序在同一时间多次运行。当然,对于一些在前台运行的程序,这还比较好办,直接可以用肉眼看到;不过,对于后台程序或服务而言,光靠人工来判断就相当困难了。擒歙常泺那么,怎样才能知道程序已经在运行呢?

工具/原料

VS 2013

一、基本思路

1、要想保证只有一个程序实例在运行,可以利用内核对象——互斥对象做到这一点。当程序启动时,调用CreateMutex 创捋杏野卫建一个互斥对象。此时,如果已经有一个程序实例运行,即互斥对象已经被创建,则不再创建新的互斥对象,而是打开已经创建的互斥对象,同时GetLastError 会返回ERROR_ALREADY_EXISTS;否则,如果没有程序实例在运行,则创建新的互斥对象并运行程序。

怎样知道程序已经在运行

2、以上的程序逻辑可用下面的图示来表示。

怎样知道程序已经在运行

二、程序代码

1、在窗口的回调函数中,我们添加以下代码。首先,调用 CreateMutex 创建一个互斥对象。

怎样知道程序已经在运行

2、若互斥对象已经存在,则打开,不创建新的互斥对象。

怎样知道程序已经在运行

3、此时,做一些清理提示工作。

怎样知道程序已经在运行

4、最后,结束当前进程(即只允许一个程序实例在运行)。

怎样知道程序已经在运行

5、下图是程序运行效果。当多次运行该程序时,会保证有且只有一个程序实例在运行,同时弹出对话框提示。

怎样知道程序已经在运行
  • 如何设置定时清理浏览器缓存文件
  • 如何制作vmdk文件?
  • 远程桌面连接怎么复制文件
  • 如何在Internet选项中开启表单自动完成功能?
  • 如何用jquery选中select的第二个option
  • 热门搜索
    小学生手抄报图片大全 保护环境手抄报内容 建党节手抄报 文明礼仪手抄报图片 清明手抄报 关于读书的手抄报内容 手抄报边框 关于中秋节的手抄报 爱国手抄报 防溺水安全手抄报