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

程式監管.

答題得分者是:Jiahong1012
kenbcb
中階會員


發表:171
回覆:129
積分:60
註冊:2003-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-30 14:27:45 IP:220.130.xxx.xxx 未訂閱
請問各位大大, 如何寫一程式(A)來判斷程式(B)是否在執行, 1.若程式(B)未執行,使程式(B)執行; 2.若程式(A)結束時,程式(B)也隨著結束. 各位大大指導或範例說明...
Jiahong1012
一般會員


發表:7
回覆:17
積分:9
註冊:2004-11-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-30 16:36:28 IP:203.75.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-30 16:53:21 IP:203.75.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-01 17:03:53 IP:220.130.xxx.xxx 未訂閱
上面的大大, 你第二段看不太懂意思...^^||
系統時間:2024-06-29 5:27:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!