请教大家关于在delphi中防止程序多次运行的方法

 我来答
windblast
2017-02-15 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13622
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

在 delphi 中防止程序多次运行,有多种办法:

1、通过查找是否存在同名窗口的方式来防止,示例代码如下:

  Var Hwnd:Thandle;
  Begin
   Hwnd:=FindWindow(‘窗口类名称’,‘窗口标题’);
   If Hwnd=0 then
   Begin
   Application.Initialize;
   Application.CreateForm(Tform1, Form1);
   Application.Run;
   End;
  End;

2、使用互斥对象,示例代码如下:


 var
   mymutex: THandle;
 begin
   mymutex:=CreateMutex(nil,True,'MyMutx');
   if GetLastError<>ERROR_ALREADY_EXISTS then
   begin
     Application.Initialize;
     Application.CreateForm(TForm1, Form1);
     Application.Run;
   end
   else
     showmessage('程序已经运行');
 end.

3、使用全局原子,示例代码如下:

 const
   myatom='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.
这个就是我喔
2017-02-15 · TA获得超过592个赞
知道小有建树答主
回答量:443
采纳率:0%
帮助的人:214万
展开全部
在程序启动时创建一个Mutex(使用Windows API 函数CreateMutex),如果返回值是ERROR_ALREADY_EXISTS,则表示程序已经启动过了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式