如何让程序只能打开一个,不能重复运行? (现在没有分了,改天呈上_)(0分)

  • 主题发起人 主题发起人 laohe
  • 开始时间 开始时间
可用mulex api建立一个互拆对象然后用GetlastError去查错误码
 
如上所说,CreateMutex再结合API Help就可以了.
 
unsigned short Atom;//声明原子变量
AnsiString AtomNameStr;
char *AtomName;//与原子相关联的字符串
bool First;//声明该变量以决定是否将原子从系统原子表中删除
First=false;
AtomNameStr="AtomFormTray";
AtomName=AtomNameStr.c_str();
Atom=GlobalFindAtom(AtomName);
if(Atom)//如果找到原子就说明程序已经在运行,应结束当前进程,否则运行程序
{
MessageDlg("NetFax is now running",mtInformation,TMsgDlgButtons()<<mbOK,0);
exit(0);
}
else
{
GlobalAddAtom(AtomName);//向系统原子表中添加原子
First=true;
}
BCB代码如上,懒得再改
 
看不懂;谢谢各位,事出较急,再线等待
 
我的问题没分没人答
你问题没分怎么有人答?[:(][?]
 
我真的没有分给大家了,又不是不给,便有些人就是有分数,不给人家

现在很急,请大家帮忙
 
D6  WIN2K 下通过
......
public
aa:word;
....
procedure TForm1.formcreate(sender:TObject);
begin
//搜索系统数据库看程序是否在运行
if globalfindatom('project1')=0 then
aa:=globaladdatom('project1')
else
begin
showmessage('该程序正在运行');
halt;
end;
end;
...
procedure TForm1.Formdestroy(sender:TObject);//退出时,从数据表中删除添加的文件名
begin
globaldeleteatom(aa);
end;
 
win api 里不是有个getpreviousinstance(_)之类的东西么?
 
接受答案了.
 
我想问一下楼主是用的谁的方法?
 
不了了之,我要的是只能打开一个程序;以是你们给的都是只打开一次,以后就不能再打开;

我试了,

但还是要感谢你们,改天有分数一定召你们过去
 
后退
顶部