判断程序是否已经运行,然后kill旧的或者新的.

1.利用  CreateMutex

CreateMutex(nil, false, 'project');
  result := true;
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
 //   SendMessage(MSG_CLOSE_WIN, RegisterWindowMessage('project'), 0, 0);       //  HWND_BROADCAST
    close;
    ShowMessage('You have the program running allready!!');
    Halt(0);                                 
    result := false;    //     true   false
  end;     

2.利用SendMessage和FindWindow(FindWindow(类名,caption),)

SendMessage(FindWindow('TfrmSimulator',nil), WM_CLOSE, 0 ,0);    // Simulator

3.GlobalFindAtom (用此函数一定得销毁)

{搜寻表看是否程序已运行}
if GlobalFindAtom('PROGRAM_RUNNING') = 0 then
{ 如果没运行,则在表中增加信息 }
atom := GlobalAddAtom('PROGRAM_RUNNING')
else begin
{ 如果程序已运行,则显示信息然后退出 }
MessageDlg('You have the program running
all ready!!', mtWarning,[mbOK], 0);
Halt;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
{从表中移走信息以便程序能再运行}
GlobalDeleteAtom(atom);
end;


如果是想关闭以前的然后再打开新的建议用2.建议3最好不要用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值