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

請問 如何 讓我的程式 不要 被重複開啟呢?

答題得分者是:syntax
elva349
一般會員


發表:15
回覆:21
積分:17
註冊:2007-04-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-28 11:28:55 IP:61.31.xxx.xxx 訂閱
我有參考了站內的一些文章 都找不到 怎麼解決 
有一篇跟我很類似的 但是我看不懂...
http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=33852

if Form1 = Nil then Form1 := TForm1.Create (Self);
Form1.Show;

"Nil then" 和 ":=" 還有 "Tform1.Creat(Self)" 是什麼意思 !?

不好意思 新手發問...麻煩大家了...
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-28 11:49:48 IP:122.124.xxx.xxx 未訂閱
你要找的是給BCB用的吧?
請用[重複執行] 當關鍵字搜尋
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-28 14:25:34 IP:210.241.xxx.xxx 訂閱
[Delphi][發表] 用程序 (process) 數量判斷是否重複執行函式 
http://delphi.ktop.com.tw/board.php?cid=30&fid=72&tid=86113
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
elva349
一般會員


發表:15
回覆:21
積分:17
註冊:2007-04-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-09-28 14:29:39 IP:61.31.xxx.xxx 訂閱
多謝 我已經能夠讓程式不要重複開啟 但是...有些地方我不太懂

http://delphi.ktop.com.tw/board.php?cid=168&fid=914&tid=59477
中~ GeorgeKu 提到
在我的 Project1.cpp 中加入下面紅色的字 就可以 讓我程式不被重複執行

[code cpp]
#include
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HANDLE mutex;
const char ProgramName[]="project1";//應用程式名稱
try
{
mutex=CreateMutex(NULL,true,ProgramName);//設定互斥旗標
if(GetLastError()==ERROR_ALREADY_EXISTS)//系統中已開啟過就不再啟動本程式
{
ReleaseMutex(mutex);

return 0;
}

Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
ReleaseMutex(mutex);
return 0;
}

[/code]

但是我想請問的是
HANDLE mutex; ?

這個有什麼關係嗎?

===================引 用 taishyang 文 章===================
你要找的是給BCB用的吧?
請用[重複執行] 當關鍵字搜尋
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-29 06:58:54 IP:61.64.xxx.xxx 訂閱
向 Windows 註冊一組唯一的編號
註冊過在註冊,就會出錯,表示程式已經執行

ReleaseMutex(mutex); 結束時釋放

===================引 用 elva349 文 章===================
多謝 我已經能夠讓程式不要重複開啟 但是...有些地方我不太懂

http://delphi.ktop.com.tw/board.php?cid=168&fid=914&tid=59477
中~ GeorgeKu 提到
在我的 Project1.cpp 中加入下面紅色的字 就可以 讓我程式不被重複執行

[code cpp]
#include
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HANDLE mutex;
const char ProgramName[]="project1";//應用程式名稱
try
{
mutex=CreateMutex(NULL,true,ProgramName);//設定互斥旗標
if(GetLastError()==ERROR_ALREADY_EXISTS)//系統中已開啟過就不再啟動本程式
{
ReleaseMutex(mutex);

return 0;
}

Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
ReleaseMutex(mutex);
return 0;
}

[/code]

但是我想請問的是
HANDLE mutex; ?

這個有什麼關係嗎?

===================引 用 taishyang 文 章===================
你要找的是給BCB用的吧?
請用[重複執行] 當關鍵字搜尋
elva349
一般會員


發表:15
回覆:21
積分:17
註冊:2007-04-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-10-01 16:57:44 IP:211.22.xxx.xxx 訂閱
不好意思 我還是想問問
1 這是啥意思為啥需要這個因為我看重點是if (GetLastError()==ERROR_ALREADY_EXISTS) HANDLE mutex; ?

===================引 用 taishyang 文 章===================
你要找的是給BCB用的吧?
請用[重複執行] 當關鍵字搜尋

暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-10-01 17:53:35 IP:61.225.xxx.xxx 未訂閱
我覺得。你該去由 WIN API 全面看這個東西。
更該由 OS 的原理去了解它。
然後你就可以懂這個是什麼了。
如果你真的這麼想了解它的話。
因為這個很難一言以"斃"之。

===================引 用 elva349 文 章===================
不好意思 我還是想問問
HANDLE mutex;
這個 HANDLE 是用來做什麼的...?



elva349
一般會員


發表:15
回覆:21
積分:17
註冊:2007-04-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-10-02 10:00:15 IP:61.31.xxx.xxx 訂閱
其實再網路上 看了一些文章 大概了解 一些動作
所以能夠把問題縮小點了...

設定互斥旗標
用這句get 我的handle

但是 接下來的
if(GetLastError()==ERROR_ALREADY_EXISTS)//HANDLE mutex;
這個 HANDLE 是用來做什麼的...?



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