⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lc_bcb_78.html

📁 C++ Builder学习中文版,让学者对其有一定的理解.
💻 HTML
字号:
<html>



<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<meta name="GENERATOR" content="Microsoft FrontPage 4.0">

<meta name="ProgId" content="FrontPage.Editor.Document">

<title>如何防止一个没有窗体的WINDOWS程序的重复运行</title>

</head>



<body>



<p align="center"><b><font size="4">如何防止一个没有窗体的WINDOWS程序的重复运行?</font></b></p>

<p><br>

用互斥(Mutex),Mutex本来是多线程同步用的,防止多个线程访问同一资源而引发冲突。用CreateMutex可以创建Mutex对象,实质上是一个kernel对象。<br>

<br>

在任何Win32程序(包括GDI和Console)的启动部分加上以下代码(Console程序的main函数、MFC程序的CWinApp派生类的InitInstance成员函数、RawSDK程序的WinMain函数):<br>

hMutex=CreateMutex(<br>

NULL,//nosecurityattributes<br>

FALSE,//initiallynotowned<br>

&quot;RunOnlyOneInstance&quot;);//命名Mutex是全局对象<br>

//在所有的process都可以访问到<br>

<br>

if(hMutex==NULL||<br>

ERROR_ALREADY_EXISTS==::GetLastError()){//程序第二次或以后运行时,会得到Mutex已经创建的错误<br>

returnFALSE;<br>

}<br>

嘿嘿,是不是不用FindWindow优雅简洁多了?<br>

<br>

另外,如果要限定程序同时可运行n个实例怎么办?Tips:用信号量(Semaphore)。<br>

</p>



</body>



</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -