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

防此程式重複執行 BCB2010

 
shchen
一般會員


發表:12
回覆:27
積分:7
註冊:2003-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-12-27 21:59:59 IP:202.173.xxx.xxx 訂閱
從BCB5到BCB6,一路用到BCB2010,發現舊的防止程式重複執行的方法,不管用了,只能夠防止程式重複執行,卻不能將已開啟的程呼叫出來,將就用了舊方法3個月,討論板上用"重複執行"去搜尋,不乏許多方式,但都是將程式碼放在Application.Create內,今日有時間研究研究,將原本出自BCB 心得(一)內的程式碼修改了一下,成功了,分享給大家比較簡便的方法,只要將以下程式碼貼到FromCreate事件內即可.(記得依自己的MainForm改名喔)
以下程式碼只支援BCB2010,已試過了BCB6不行喔.若有人需要BCB6的請再留言.

[code cpp]
//***********防止程式重複執行功能***************STRART
Application->Title=MainForm->Caption;
//TrayIcon1->Hint=MainForm->Caption;

HWND PrevInstHandle;
HANDLE Mutex = OpenMutex(SYNCHRONIZE,false,Application->Title.t_str());

if (Mutex != NULL)
{
SetWindowText(this->Handle,NULL);

PrevInstHandle = FindWindow(NULL,Application->Title.t_str() );
if (PrevInstHandle != 0)
{
if (IsIconic(PrevInstHandle))
ShowWindow(PrevInstHandle, SW_RESTORE);
else
BringWindowToTop(PrevInstHandle);

SetForegroundWindow(PrevInstHandle);
}
Application->ShowMainForm = false;
Application->Terminate();
}
else CreateMutex(NULL, false, Application->Title.t_str());
//***********防止程式重複執行功能***************END

[/code]

編輯記錄
shchen 重新編輯於 2010-12-27 07:01:56, 註解 無‧
shchen 重新編輯於 2010-12-27 07:09:03, 註解 重排版‧
系統時間:2024-11-01 8:35:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!