• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

No MFC 编程02 - 我要独一无二 !

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 11次 | 进入软件测试论坛讨论

领测软件测试网

 

    记得我的一个朋友曾经来找我,问我怎样能够禁止自己的程序在 win95 里重叠运行。

    我给了他一段代码,他就欢天喜地的回去了。

    现在把那段代码拿出来,大家分享


  //  使用建立互斥量的方法来检测多个实例

 HANDLE hMyMutex = CreateMutex( NULL, false, "MyMutex"); // "MyMutex" 是你程序的标识, 可以改的
   DWORD  ErrCode  = GetLastError();

  if ( ErrCode == ERROR_ALREADY_EXISTS )
    { 
     MessageBox(NULL, "检测到旧实例,abort", "  - Notice ! ", MB_OK|MB_TOPMOST );
     ExitProcess( NULL);
     }
   // End of 互斥量检测  


   把它加到我昨天做的框架, WinMain 函数体开头就可以了。
   见《No MFC 编程01 - 最精简的 win32 程序》
    

 

   浅析原理:( 本来想收工,但看到文章太短就不自在 )

   CreateMutex 函数创建了 叫 "MyMutex" 的互斥量 ( 不要问我有什么用 )

   GetLastError 函数取得创建过程的突发状况

   第一种情况:之前没有实例在运行,新建 "MyMutex" 的互斥量成功。( "MyMutex" 的生存期到本程序实例结束为止 )

   第二种情况:之前有一个实例在运行,发现已经有叫 "MyMutex" 的互斥量了,拿来就用。不过 GetLastError 还是知道了。

   第二种情况引起的处理:当然是退出程序的第二个实例了,见过同时运行两个同一版本 Winamp 吗?

   问:有第三种情况吗?(不告诉你)

    ( 有句广告词:" 我不认为我与众不同,因为我是独一无二的 " )

       不说废话了! 2002年9月28日 am 9:43          


——————————————————————————
附自我简介:

特    征:未到而立,刚到米七,语音略带磁性,性格开朗,有点顽皮,有点小聪明,准完美主义者 …
最 大 嗜 好 : 玩电子游戏 ( 梦想开发 Oni 连线版, 未玩过 Oni ? ohhh ! )
爱用的编译器: VC + DX_SDK + api ( 戏称VC++ )
近来常挂嘴边: 你相信吗?月球土壤样本证实月球在形成太阳系之前已经存在 …
目前喜欢的歌: 陈美 - 小提琴的升华 (CONTRADANZA)


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网