全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2600
推到 Plurk!
推到 Facebook!

如何控制exe執行檔只執行一次

尚未結案
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-16 14:54:27 IP:61.224.xxx.xxx 未訂閱
請問各位高手! Delphi 編譯的執行檔,可以控制重複執行嗎? 何明昌
------
何明昌
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-16 15:00:56 IP:202.39.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20777 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23708    --- 每個人都是一本書
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-16 19:06:12 IP:211.76.xxx.xxx 未訂閱
在dpr檔 考如下程式    program DupExe;    uses
  Forms,SysUtils,Windows,Dialogs,
  DupExe1 in 'DupExe1.pas' {Form1};    {$R *.res}
var h:integer;
    Fn,ExeFname:String;    begin
  Application.Initialize;
  ExeFName:=ExtractFileName(Application.ExeName);
  H:=OpenMutex(MUTEX_ALL_ACCESS,False,PChar(ExeFName));
  if H<>0 then //第一次執行
     showmessage('系統重覆執行')
  else
   begin
     CreateMutex(nil,False,PChar(ExeFName));
     Application.CreateForm(TForm1, Form1);
     Application.Run;
   end;
end.    
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-16 19:10:06 IP:61.224.xxx.xxx 未訂閱
hi!hagar:謝謝!你的回應!但因為只要每次在執行此程式 開使就中斷了。post 上我的code請幫忙看問題在那? 另外再請教: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20777 內的 TPBJustOne 元件要如何始用? program SNmainsql; uses Forms, Windows, Dialogs, Sysutils, Controls, USuMAIN in 'USuMAIN.pas' {FCHMAIN}, FPassDlg in 'FPassDlg.pas' {FPasswordDlg}; {$R *.RES} var tmpPassForm: TFPasswordDlg; hWnd: Integer; begin hWnd :=FindWindow('TApplication', PChar('SNMAINsql')); if hWnd <> 0 then begin //每次在執行此程式開使就中斷了 if IsIconic(hWnd) then ShowWindow(hWnd, SW_RESTORE) else SetForegroundWindow(hWnd); Exit; end; Application.Initialize; tmpPassForm := TFPasswordDlg.Create(Application); if Assigned(tmpPassForm) then begin tmpPassForm.ShowModal ; if tmpPassForm.ModalResult = mrOk then begin USuMAIN.cUserId := tmpPassForm.uId; //前面要注意是檔名.參數 USuMAIN.DatabaseName := tmpPassForm.DatabaseName; tmpPassForm.Free; Application.Initialize; Application.Title := 'SNMAINsql'; Application.CreateForm(TFCHMAIN, FCHMAIN); Application.Run; end else tmpPassForm.Free; end else tmpPassForm.Free; end. 何明昌
------
何明昌
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-16 20:14:09 IP:218.16.xxx.xxx 未訂閱
hWnd :=FindWindow('TApplication', PChar('SNMAINsql')); if hWnd <> 0 then begin //每次在執行此程式開使就中斷了 這是因為你自己也 TApplication 丫 所以當然找到啦 (你程式自己)。 cmj 的方法應可行你試試罷。
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-17 11:37:49 IP:61.224.xxx.xxx 未訂閱
hi!cmj:謝謝你的回應,那就算是你得分了,請問下列函數是什麼作用? CreateMutex(nil,False,PChar(ExeFName)) 也謝謝版主的解說。 何明昌
------
何明昌
系統時間:2024-11-23 11:17:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!