程式監管. |
答題得分者是:Jiahong1012
|
kenbcb
中階會員 ![]() ![]() ![]() 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
Jiahong1012
一般會員 ![]() ![]() 發表:7 回覆:17 積分:9 註冊:2004-11-05 發送簡訊給我 |
Hi Kenbcb, 你可以去找 (B) 程式的 Title 名稱去判斷是否有在執行,
For example: HANDLE Mutex; const char ProgramName[]="程式title名稱"; Mutex = OpenMutex(MUTEX_ALL_ACCESS,false,ProgramName); if(Mutex == NULL)
Mutex = CreateMutex(NULL,true,ProgramName);
else
{
MessageBox(NULL,"程式已經開啟,禁止執行第二次!!!","Error",MB_OK|MB_DEFAULT_DESKTOP_ONLY);
exit(0);
}
ReleaseMutex(Mutex); 請試試看囉!
|
Jiahong1012
一般會員 ![]() ![]() 發表:7 回覆:17 積分:9 註冊:2004-11-05 發送簡訊給我 |
Hi kenbcb,
Sorry, 忘記把另一個結束(B)程式的範例放上去
For example: HWND f_hwd,s_hwd;
char buf[400]={0};
int i;
WINDOWINFO winfo; CString FindDynamic; f_hwd = NULL;
s_hwd = NULL;
f_hwd = ::FindWindow(NULL,DIAG_DLG_CAPTION);
if( (f_hwd))
{
memset(buf,0,sizeof(buf));
::GetWindowText(f_hwd,buf,sizeof(buf));
for(i = 0; i < 500; i )
{
s_hwd = ::GetNextWindow(f_hwd,GW_HWNDNEXT);
if(s_hwd != NULL)
{
if(!GetWindowInfo(s_hwd,&winfo))
{
::MessageBox(NULL,"Can't Get Window Info","Error",MB_OK | MB_ICONSTOP|MB_DEFAULT_DESKTOP_ONLY);
} if(winfo.dwStyle & WS_OVERLAPPEDWINDOW)
{
if(winfo.dwStyle & WS_VISIBLE)
{
memset(buf,0,sizeof(buf));
::GetWindowText(s_hwd,buf,sizeof(buf));
}
}
f_hwd = s_hwd;
FindDynamic=buf;
if (!FindDynamic.Find("程式title成稱"0))
{
pCalc =CWnd::FindWindow(NULL, buf);
pCalc->SendMessage(WM_CLOSE);
}
}
else
{
break;
}
} 以上範例是VC 所以把它改寫成BCB即可.
參考看看
|
kenbcb
中階會員 ![]() ![]() ![]() 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |