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.

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

  • 相关阅读:
    javascript对象——基本对象
    javaScript对象——function对象
    javaScript入门
    前端页面性能指标与采集方式
    前端页面统计beacon调研
    数据管理工具Flux、Redux、Vuex的区别
    Vue Router的懒加载路径
    webpack4:连奏中的进化
    前端自动化测试漫长路之——Selenium初探
    webpack中tree-shaking技术介绍
  • 原文地址:https://www.cnblogs.com/C-Delphier/p/6018589.html
Copyright © 2011-2022 走看看