我是靠谱客的博主 敏感云朵,最近开发中收集的这篇文章主要介绍[delphi]保证程序只运行一个实例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

许多时候我们希望程序只有一个实例在运行,而不是多个实例同时运行。 其实完成这一功能有很多种方法,我把自己知道的几种方法简单介绍一下。


一  使用全局原子

program Project1;

uses
  windows,
  Forms,
  Dialogs,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

const
  myatom='我的全局原子方法';
begin
  if GlobalFindAtom(myatom)=0 then
  begin
    GlobalAddAtom(myatom);
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
    GlobalDeleteAtom(GlobalFindAtom(myatom));
  end
  else
    showmessage('已经有一个实例在运行');
end.

 

二 使用互斥对象

var
  mymutex: THandle;
begin
  mymutex:=CreateMutex(nil,True,'我的互斥对象');
  if GetLastError<>ERROR_ALREADY_EXISTS then
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end
  else
    showmessage('已经有一个实例在运行');
end. 

  

三 使用FindWindow函数

var
  myhandle: THandle;
begin
  myhandle:=FindWindow(nil,'Form1');
  if myhandle=0 then
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end
  else
    showmessage('已经有一个实例在运行');
end.
        在上面介绍的几种方法中用到的 API函数GlobalFindAtom、GlobalAddAtom 、GlobalDeleteAtom、CreateMutex、GetLastError 、FindWindow 在msdn和delphi自带帮助的windows sdk中都有介绍。


 

 

 

最后

以上就是敏感云朵为你收集整理的[delphi]保证程序只运行一个实例的全部内容,希望文章能够帮你解决[delphi]保证程序只运行一个实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部