Windows核心编程:使用 CreateMutex 防止运行应用程序的多个实例
来源:互联网 发布:网络出版物是什么 编辑:程序博客网 时间:2024/06/05 05:39
一、引言
这块代码来源于 《Windows 核心编程》(第五版)P50 页。
一直以来对于防止运行应用程序多个实例有一个大体的代码印象(就是来源于这里),但是一直苦于没有好好整理,今天就贴上这份简单的代码,一来方便自己整理学习,二来以飨读者。
二、代码
这里直接贴上我运行测试成功的代码:
#include <tchar.h>#include <windows.h>int WINAPI _tWinMain(HINSTANCE hInstExe, HINSTANCE, PTSTR pszCmdLine, int nCmdShow) { HANDLE h = CreateMutex(NULL, FALSE, TEXT("{80A85553-1E05-4323-B4F9-43A4396A4507}")); if (GetLastError() == ERROR_ALREADY_EXISTS) { // There is already an instance of this application running. // Close the object and immediately return. MessageBox(NULL, TEXT("Another Instance Running."), TEXT("Tip"), MB_OK); CloseHandle(h); return 0; } // This is the first instance of this application running. // ... Sleep(10000); // Before exiting, close the object. CloseHandle(h); return 0;}
运行这份代码,你可以尝试着编译 Debug 和 Release 两个版本的 exe 运行文件,然后先点击 Release 版本的,因为该应用程序每次运行都要创建一个特定 GUID 命名的互斥量对象,因此当你第一次点击 Release 版本的时候,就会在这个系统的环境中创建一个独有的互斥量对象,并且该应用程序留存 10s 以便测试。而当你点击运行 Debug 版本的时候,此时可以看到我们创建互斥量失败后的提示信息,提示我们已经有另一个实例在运行了。
这是一个非常简单而又明了的 Demo,故搬运过来,希望能够提供一些帮助:)
阅读全文
0 0
- Windows核心编程:使用 CreateMutex 防止运行应用程序的多个实例
- CreateMutex GetLastError防止多个实例运行
- Delphi防止同时出现多个应用程序实例--CreateMutex
- Delphi防止同时出现多个应用程序实例--CreateMutex
- Delphi防止同时出现多个应用程序实例--CreateMutex
- Delphi防止同时出现多个应用程序实例--CreateMutex
- Delphi Thread CreateMutex : 防止同时出现多个应用程序实例(Server)
- Windows核心编程-多个应用程序实例间共享数据
- Delphi中如何防止运行一个应用程序的多个实例
- c++中怎么防止一个应用程序的多个实例同时运行
- 利用命名对象来防止运行一个应用程序的多个实例
- CreateMutex 防止程序多次运行
- 使用命名对象防止运行一个程序的多个实例【转】
- Windows核心编程 进程--编写第一个windows应用程序
- [VB] 防止程序运行多个实例
- VC++防止程序运行多个实例
- C#建立了一个windows程序,如何防止多个程序实例运行?
- 避免同时运行同一个应用程序的多个实例
- poj 1163
- Tensorflow关于feed的问题
- ubuntu 16.04 LTS
- 1021. Deepest Root (25)(dfs+并查集)
- matlab_mechanical
- Windows核心编程:使用 CreateMutex 防止运行应用程序的多个实例
- 【Scikit-Learn 中文文档】概率校准
- Android安卓——页面翻转(横屏、竖屏)功能代码
- (指针)报数排除人,留下来的是原来的几号
- 【后缀数组】JZOJ1598
- A
- [2017.11.29]博客记录开启
- 【Scikit-Learn 中文文档】神经网络模块(监督的)- 监督学习
- APP,实现多国语言动态切换