zoukankan      html  css  js  c++  java
  • delphi:只允许一个实例运行

    用win32 API的CreateMutex来实现。

    HANDLE CreateMutex(
        LPSECURITY_ATTRIBUTES  lpMutexAttributes,   // 指向安全属性的指针
        BOOL  bInitialOwner,   // 初始化互斥对象的所有者
        LPCTSTR  lpName   // 指向互斥对象名的指针
      );

    例如:

    var
      hMutex: HWND;   //主窗口句柄
    
      Ret: integer;   // 最后的错误代码,用来检测是否是一个实例运行
    
    begin
    
    //进程互斥,只允许一个实例运行
    
    //主要根据第三个参数建立互斥指针,如果发现这个值已经存在,说明程序已经在运行,所以这个值必须具有唯一性
    
    // 存在,则返回已有窗口句柄
    
    hMutex := CREATEMUTEX(nil, FALSE, 'XXXXXX系统4B2LLLLMMDAAAAA-5DC34AF-12Z7-5TGB7U-9IJN0OK2445');
     Ret := GETLASTERROR;   //获得错误号,如果是多个实例,将会产生  183 这个值的错误号
    if Ret = ERROR_ALREADY_EXISTS then        //ERROR_ALREADY_EXISTS 表示进程已经存在
    begin
       setActiveWindow(hMutex);      //激活已有主窗口
      Application.Terminate;        // 当前程序终止
      exit;   //跳出当前代码块
    end;
    
    
    
    
    end.
  • 相关阅读:
    Ajax 导出Excel 方式
    配置文件类型
    Ionic 发布Release 版本
    $cordovaNetwork 使用
    Web Api 跨域问题
    Python学习(五)--字典
    Python学习(四)--字符串
    Python学习(三)--列表和元组
    mac下安装HTMLTestRunner
    mac下selenium+python环境搭建
  • 原文地址:https://www.cnblogs.com/huiy/p/12504528.html
Copyright © 2011-2022 走看看