防止一个没有窗体的WINDOWS程序的重复运行

2016-02-19 17:59 0 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的防止一个没有窗体的WINDOWS程序的重复运行,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】


  用互斥(Mutex),Mutex本来是多线程同步用的,防止多个线程访问同一资源而引发冲突。用CreateMutex可以创建Mutex对象,实质上是一个kernel对象。
  
  在任何Win32程序(包括GDI和Console)的启动部分加上以下代码(Console程序的main函数、MFC程序的CWinApp派生类的InitInstance成员函数、RawSDK程序的WinMain 函数):
  
  hMutex=CreateMutex(
  NULL,//nosecurityattributes
  FALSE,//initiallynotowned
  "RunOnlyOneInstance");//命名Mutex是全局对象
  //在所有的process都可以访问到
  
  if(hMutex==NULLERROR_ALREADY_EXISTS==::GetLastError())
  {
  //程序第二次或以后运行时,会得到Mutex已经创建的错误
  returnFALSE;
  }
  嘿嘿,是不是不用FindWindow优雅简洁多了?
  
  另外,假如要限定程序同时可运行n个实例怎么办?
  Tips:用信号量(Semaphore)。

来源:http://www.tulaoshi.com/n/20160219/1616548.html

延伸阅读
今天在MSN的核心讨论组上看到两篇文章.讨论的乃是应用程序是否没有响应.原文如下: How is it possible to determine a process is "not responding" like NT Task Manager do? The heuristic works only for GUI processes, and consists of calling SendMessageTimeOut() with SMTO_ABORTIFHUNG. T...
                                一个简单的一箭穿心程序    其实这个程序也不难,只要专心形线方程(1-ρ×cosθ)来绘图就可以了。    作者:...
类似于学习机上的指法练习程序,简单而实用#includetime.h main() { int x,y,i,j; unsigned int Timer; char ch; char key; char *kb[]={"Q W E R T Y U I O P [ ]","A S D F G H J K L ; '","Z X C V B N M , . /"}; long AllCounter=0,RightCounter=0,FalseCounter=0; ...
标签: PHP
  分析: 我们利用一个文件(data.dat)来存储投票栏目.每个栏目占据一行. 这样一来,便可随意加入和减去想要投票的栏目. 我们再利用一个文件(votes.dat)来存储我们的投票结果. 并纪录最近一位投票者的IP地址,简单的防止一人多投. 所以,您应该在该程序目录下自行建立两个文件data.dat和votes.dat 程序运行过程部分 程序运行时应该...
在VB5.0具有面向对象的程序设计思想及可视化的编程方式,可开发出各种多媒体应用程序,颇得软件设计者青睐。笔者最近应用VB5.0编制了一程序,成功实现了“图文并茂”的屏幕效果,即:屏幕出现用户选定的一幅赏心悦目的图像,在图像下方有一行字幕缓缓地从屏幕右边向左边移动,全部文字移至左边消失后,从右边又平滑拖出字幕,字幕移动过程中既不...

经验教程

136

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部