永发信息网

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

答案:2  悬赏:70  手机版
解决时间 2021-03-03 06:17
请教大家关于在delphi中防止程序多次运行的方法
最佳答案
在 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.
全部回答
首先你要知道image是从tgraphiccontrol继承的,所以它没有句柄,也设置不了它的doublebuffer。 给你2个建议: 1 窗体上doublebuffer设为true,重载wm_erasebackground这个消息,让他背景不擦出。 2 自己写个控件从tcustomcontrol上面继承下来,然后自己用gdi贴图上去。 闪烁主要还是对画布 绘图太频繁了。 我在csdn上面写了一片文章的。 地址应该是hi.csdn.net/huangjacky.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
理曲词穷,那哪个字错了?
【泾】""火""字旁加上去掉三点水的""泾""念什
村庄规划人口的规模如何预测?
被青竹蛇咬伤怎么办
非欧几何的平行公理
为什么许久不联系的同学都不联系了,一个人主
老滚5苍龙城这个mod什么情况,全地图覆盖全中
【影响经济增长的因素】决定和影响经济增长的
2014款速腾召回主要针对车型
住院医疗保险 问:保险理赔时发票原件丢失了
南半球太阳从哪边升起
七夕新房装修开工祝福语
太原市黄坡公墓
量化宽松带来的后果是什么
淘宝说的1∶1什么意思
推荐资讯
小心填错账号给别人充值了点券,还有可能申诉
判断题地球上的哺乳动物的种类大约有4000多种
安志体育用品公司地址有知道的么?有点事想过
bb霜擦在脸上老是油光满面
俗话说:“出生牛犊不怕虎。”这说明A. 拥有
传祺gs4保养多少钱
未名堡双语艺术幼儿园在哪里啊,我有事要去这
在取款机上充钱怎么充值
凌源市农村信用合作联社城关镇信用社在什么地
妇女节什么意思
本人要从惠州的惠东汽车站到惠东县吉隆国税那
超级群英关羽到底穿白虎套好还是玄武套好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?