線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2536
推到 Plurk!
推到 Facebook!

偵測程式當機的問題...

答題得分者是:RaynorPao
taishyang
站務副站長


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-13 01:07:44 IP:140.135.xxx.xxx 未訂閱
請問大家:  要如何偵測自己寫的程式當機否?? 通常應用程式都會出現[沒有回應]的字樣  可是要怎麼讓程式自己判別呢(是否忙碌或當機)??  或是可以偵測到如圖所示[狀態]是執行中,或是沒有沒應呢?? 我看過 http://delphi.ktop.com.tw/topic.php?topic_id=27768 的相關文章與RaynorPao大哥的範例,但卡在Caption該如何Assign... 謝謝大家 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 -
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-13 01:11:40 IP:140.135.xxx.xxx 未訂閱
對不起大家,我又沒看仔細了 用 > <>~我也是在學習的階段,所以請您多多見諒與指教~
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-13 23:59:40 IP:61.221.xxx.xxx 未訂閱
引言: 對不起大家,我又沒看仔細了 用 > <>~我也是在學習的階段,所以請您多多見諒與指教~ < face="Verdana, Arial, Helvetica"> taishyang 你好: 試試看這樣子做行不行呢?? < class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { DWORD dwResult=0; LRESULT lr=0; HWND hWnd=NULL; hWnd=FindWindow(NULL, "NoResponse"); if(hWnd!=NULL) { lr=SendMessageTimeout(hWnd, WM_SETFOCUS, NULL, NULL, SMTO_NORMAL, 5000, &dwResult); if(lr==0) { ShowMessage("Failed or Timeout"); } } } -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-14 01:03:20 IP:140.135.xxx.xxx 未訂閱
RaynorPao大哥您好:    您真是太厲害了,這就是我需要的...    現在還有一個情況,當我要關閉[沒有回應]的程式用了     
 
   HWND hWnd=FindWindow(NULL, "NoResponse");
   PostMessage(hWnd,WM_CLOSE,0,0);
    
但會出現如下圖所示的訊息 我想要讓他自動關閉,所以我用了
 
   Sleep(5000);
   keybd_event(69,0,0,0);
   Sleep(5000);
   keybd_event(68,0,0,0);
   
但總覺得這是很笨的方式,還有其他更好的方法嗎?? 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 -
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-15 00:30:24 IP:61.221.xxx.xxx 未訂閱
引言: 我想要讓他自動關閉,所以我用了
 
   Sleep(5000);
   keybd_event(69,0,0,0);
   Sleep(5000);
   keybd_event(68,0,0,0);
   
但總覺得這是很笨的方式,還有其他更好的方法嗎??
taishyang 你好: 我認為你用的方法並不笨,滿簡潔的,很不錯喔 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
jageirene
一般會員


發表:2
回覆:3
積分:1
註冊:2003-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-22 15:57:38 IP:211.21.xxx.xxx 未訂閱
請問: 我已經照著RaynorPao所說寫了程式A和B , 我在B寫了後來提供的 ShowMessage("Failed or Timeout"); 發現它會ShowMessage("Failed or Timeout") 但是 我若是作 HWND hWnd=FindWindow(NULL, "NoResponse"); PostMessage(hWnd,WM_CLOSE,0,0); 卻不會出現taishyang的那個終止程式的畫面,反而也變"無回應" WHY?
clio4177
一般會員


發表:28
回覆:21
積分:9
註冊:2002-07-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-23 01:03:21 IP:203.203.xxx.xxx 未訂閱
請問我利用本文中的一些提示在Win2000平台上寫了一個測試程式"無回應"的應用程式,但卻無法透過SendmMessage或者PostMessage這兩個API函示將"無回應"的程式終止?請問還有沒有其他方式可以將此"無回應"程式作終止??我的測試碼如下: A.exe發生"無回應": void __fastcall TForm1::Button1Click(TObject *Sender) { Caption="無回應"; while(1) { Sleep(1); } } B.exe終止"無回應"程式: void __fastcall TForm1::BtnStartMonitorClick(TObject *Sender) { HWND hWnd= FindWindow(NULL,"無回應"); PostMessage(hWnd, WM_CLOSE, 0, 0); } 執行時卻發生B.exe無法關閉或終止A.exe,反而造成B.exe也發生"無回應"的狀況,請問該如何修改上面的程式碼?才能透過B.exe終止A.exe這個"無回應"程式。
系統時間:2024-05-04 9:31:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!