zoukankan      html  css  js  c++  java
  • Delphi 禁止重复运行同一程序的方法

    转载:http://www.codefans.net/articles/332.shtml

     一个程序只允许打开一次,平时见到类似的软件比较多了,比如windows的播放器、PhotoShop等,当这些软件打开的时候,如果需要打开他们可以打开的文件,即使你双击文件,也只是在已打开的软件中运行,并不会重新打开一个进程,这样可有效减少资源浪费。

    那么实现一个程序只允许运行一个实例,方法有很多,今天主要介绍两种方法,网上Delphi达人的办法,希望有用:

    第一种方法,使用“过程调用”:

    procedure Del; // 自定义过程
    var
      Mutex: THandle;
    begin
      Mutex := CreateMutex(nil, True, PChar(Application.Title));
      if GetLastError = ERROR_ALREADY_EXISTS then
      begin
        Application.MessageBox('程序已经在运行...','系统提示', MB_ICONERROR);
        ReleaseMutex(Mutex);   {释放资源}
        Application.Terminate;
      end;
    end;

    第二种方法:通过写入dpr工程文件:

    program Project1;
    uses
      Forms, windows,
      Unit1 in 'Unit1.pas' {Form1};
    {$R *.RES}
    var Mutex:THandle;
    begin
     Mutex := CreateMutex(nil,true,'one');  {第3个参数任意设置}
     if GetLastError <> ERROR_ALREADY_EXISTS then
     begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
     end
     else
      Application.MessageBox('该程序正在运行!','提示',MB_OK);
      ReleaseMutex(Mutex);   {释放资源}
    end.

    两种方法介绍完了,任意一种方法都很好用,复制代码到你的软件项目中试下吧。

  • 相关阅读:
    Python列表去重
    hash表长度优化证明
    DDD初学指南
    继承和实现的明显区别
    微信商户支付
    centos7+mono4+jexus5.6.2安装过程中的遇到的问题
    SVN:重命名文件之后不允许提交
    SpringMVC 自定义全局日期转换器
    解决Cannot change version of project facet Dynamic web module to 2.5
    Maven项目热部署到Tomcat容器下
  • 原文地址:https://www.cnblogs.com/C-Delphier/p/6018589.html
Copyright © 2011-2022 走看看