該怎麼關閉其他程式? |
|
loraibar
一般會員 發表:7 回覆:5 積分:2 註冊:2007-03-08 發送簡訊給我 |
||
anyone
中階會員 發表:1 回覆:63 積分:52 註冊:2007-02-12 發送簡訊給我 |
||
loraibar
一般會員 發表:7 回覆:5 積分:2 註冊:2007-03-08 發送簡訊給我 |
||
anyone
中階會員 發表:1 回覆:63 積分:52 註冊:2007-02-12 發送簡訊給我 |
||
loraibar
一般會員 發表:7 回覆:5 積分:2 註冊:2007-03-08 發送簡訊給我 |
您好 我試過下列三個方法 我要關定執行中的程式girder --------------------------------------------------------------------------- 1. HWND hWnd=FindWindow(NULL, "Girder"); PostMessage(hWnd,WM_CLOSE,0,0) ; 結果只關掉視窗 沒有終止程式 --------------------------------------------------------------------------- 2. HWND hWnd=FindWindow(NULL, "Girder"); SendMessage(hWnd, WM_CLOSE, 0, 0); 結論與上面一樣 結果只關掉視窗 沒有終止程式 ---------------------------------------------------------------------------- 3. 接下來是 HANDLE hh = OpenProcess(PROCESS_ALL_ACCESS, True,pid); TerminateProcess(hWnd, 0); 但是pid 每次執行都不一樣.... 因此我現在的問題是 有何指令可以知道目前執行中的某程式的pid????? 上網找到這個 DWORD pid = Shell("C:\\Program Files\\girder32\\Girder", vbNormalFocus) 但是 Shell 無法compilier是不是要再補上什麼lib????? 新手發問..... ---------------------------------------------------------------------------- |
|
anyone
中階會員 發表:1 回覆:63 積分:52 註冊:2007-02-12 發送簡訊給我 |
OpenProcess你改一下
OpenProcess(PROCESS_TERMINATE,FALSE,pid); ======================================== HANDLE hh = OpenProcess(PROCESS_ALL_ACCESS, True,pid); TerminateProcess(hWnd, 0); 另外OpenProcess最後一個參數是ProcessID 取得方式為GetWindowThreadProcessID(Handle,ProcessID) PostMessage和sendMessage的方式是一樣的 差別嘛....是在於是否等待其他程序消息處理 PostMessage剛試了一下,好像真的不行 那你就用TerminateProcess的方式吧! 補充一下: 若你用到OpenProcess的方式 在程式的最後記得要關掉CloseHandle(hProcess) 我試過,用TerminateProcess是可以的 |
|
loraibar
一般會員 發表:7 回覆:5 積分:2 註冊:2007-03-08 發送簡訊給我 |
||
anyone
中階會員 發表:1 回覆:63 積分:52 註冊:2007-02-12 發送簡訊給我 |
你要終止別的程式,首先必需要取得它的Handle值
取得它的Handle後 用GetWindowThreadProcessID得到它的ProcessID 取得ProcessID是為了接下來的hProcess hProcess:=OpenProcess(PROCESS_TERMINATE,FALSE,ProcessID); 有了hProcess後才能關掉它 再用TerminateProcess(hProcess,0); 最後關掉你開啟的hProcess(有開就有關嘛!) CloseHandle(hProcess); 就能關掉那支程式了 這樣你瞭嗎? ===================引 用 文 章=================== ?? 您好?? 謝謝您的回答?? 我的真正問題是 ?? 我有一個正在執行的程式? 程式叫做? C:\Program Files\girder32\Girder.exe ? 現在我要寫一個BUTTON來終止它 ? 您提到 ????? GetWindowThreadProcessID(Handle,ProcessID) ? 可是??? ProcessID 與 程式? C:\Program Files\girder32\Girder.exe??? 這兩個要用什麼指令讓它們有關係???? ????????????再麻煩你回答一次...? 真不好意思.... ? |
|
loraibar
一般會員 發表:7 回覆:5 積分:2 註冊:2007-03-08 發送簡訊給我 |
經由你的解說 我已明白流程
但是COMPILIER 還是出現錯誤 攪盡進腦汁時在想不出來哪裡宣告錯誤.... 煩請解惑........ 程式 ----------------------------- <textarea class="cpp" rows="10" cols="70" name="code">DWORD ProcessID; HWND Handle1=FindWindow(NULL, "Girder"); GetWindowThreadProcessId(Handle1 ,ProcessID) ; HANDLE hProcess=OpenProcess(PROCESS_TERMINATE,false,ProcessID); TerminateProcess(hProcess, 0); CloseHandle(hProcess); </textarea> 錯誤訊息 [C Error] Unit7.cpp(98): E2034 Cannot convert 'unsigned long' to 'unsigned long *' [C Error] Unit7.cpp(98): E2342 Type mismatch in parameter 'lpdwProcessId' (wanted 'unsigned long *', got 'unsigned long') PS 第98行是 GetWindowThreadProcessId(Handle1 ,ProcessID) ; |
|
anyone
中階會員 發表:1 回覆:63 積分:52 註冊:2007-02-12 發送簡訊給我 |
在C++裡似乎要
GetWindowThreadProcessID(Handle1,&ProcessID); 要用位址去接吧! 我不懂C 但應該是如此 若可以或有問題趕快回應 不然我得等到明天才能回你了 ===================引 用 文 章=================== 經由你的解說?? 我已明白流程 但是COMPILIER 還是出現錯誤 攪盡進腦汁時在想不出來哪裡宣告錯誤.... ????? 煩請解惑........ 程式 ----------------------------- <textarea class="cpp" rows="10" cols="70" name="code">DWORD ProcessID; HWND Handle1=FindWindow(NULL, "Girder"); GetWindowThreadProcessId(Handle1 ,ProcessID) ; HANDLE hProcess=OpenProcess(PROCESS_TERMINATE,false,ProcessID); TerminateProcess(hProcess, 0); CloseHandle(hProcess); </textarea>? 錯誤訊息 [C Error] Unit7.cpp(98): E2034 Cannot convert 'unsigned long' to 'unsigned long *' [C Error] Unit7.cpp(98): E2342 Type mismatch in parameter 'lpdwProcessId' (wanted 'unsigned long *', got 'unsigned long') PS 第98行是??GetWindowThreadProcessId(Handle1 ,ProcessID) ; |
|
loraibar
一般會員 發表:7 回覆:5 積分:2 註冊:2007-03-08 發送簡訊給我 |
||
anyone
中階會員 發表:1 回覆:63 積分:52 註冊:2007-02-12 發送簡訊給我 |
剛好我有碰過,所以可以幫你
不過你應該要學習著如何看錯誤訊息吧! 這樣才會知道自己的程式錯在哪、而又該怎麼改 又或者是該學習上網查東西(Google真的很好用唷!) ===================引 用 文 章=================== 居然可以了 ? 想不到居然是要CALL BY ADDRESS..........................????? ?摸索了一天???? ?????????????????????????? 結果被你一語道破................................. ?????????????????? 真是萬分感謝????????? THANK YOU????? THANK YOU?? ? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |