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

請教各位高手有關sendmessagetimeout的問題

尚未結案
nonokoko
一般會員


發表:10
回覆:10
積分:4
註冊:2003-11-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-06 02:35:44 IP:211.76.xxx.xxx 未訂閱
我想要關閉無回應的應用程式,我撰寫了以下的程式,但是我發現無論無回應的視窗是否存在,lr的值都是傳1,這是為什麼呢??我是不是那裡有寫錯呢?? 麻煩各位高手,幫小女子....感恩不盡!! >
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-06 09:01:31 IP:203.73.xxx.xxx 未訂閱
引言: 我想要關閉無回應的應用程式,我撰寫了以下的程式,但是我發現無論無回應的視窗是否存在,lr的值都是傳1,這是為什麼呢??我是不是那裡有寫錯呢?? 麻煩各位高手,幫小女子....感恩不盡!! > >< face="Verdana, Arial, Helvetica">
monokoko 你好:
(1)請問你用來模擬「無回應」的 Application 裡面的程式碼是怎麼寫的??
   一般來說,只需要在  >
    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
nonokoko
一般會員


發表:10
回覆:10
積分:4
註冊:2003-11-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-06 09:41:06 IP:211.20.xxx.xxx 未訂閱
引言:
引言: 我想要關閉無回應的應用程式,我撰寫了以下的程式,但是我發現無論無回應的視窗是否存在,lr的值都是傳1,這是為什麼呢??我是不是那裡有寫錯呢?? 麻煩各位高手,幫小女子....感恩不盡!! > >< face="Verdana, Arial, Helvetica">
monokoko 你好:
(1)請問你用來模擬「無回應」的 Application 裡面的程式碼是怎麼寫的??
   一般來說,只需要在  >
    -- >< face="Verdana, Arial, Helvetica">
RaynorPao你好,謝謝你的回答~~我已經用一個無迴圈的Form了!按ctrl alt del查看工作狀態也是沒有回應,但是lr的值卻沒抓到,想請教你一下,HWndCalculator := FindWindow(nil, '無回應')這一行裡的無回應是指視窗名稱嗎??還是要打noresponse呢??對不起~~第一次接觸api,很多函數都不熟!謝謝你~~~^^     
        
RaynorPao
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-06 09:43:58 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好,謝謝你的回答~~我已經用一個無迴圈的Form了!按ctrl alt del查看工作狀態也是沒有回應,但是lr的值卻沒抓到,想請教你一下,HWndCalculator := FindWindow(nil, '無回應')這一行裡的無回應是指視窗名稱嗎??還是要打noresponse呢??對不起~~第一次接觸api,很多函數都不熟!謝謝你~~~^^
monokoko 你好: 當然是指「視窗的名稱」啊 (例如: 'Form1', 'Form2',....) --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
nonokoko
一般會員


發表:10
回覆:10
積分:4
註冊:2003-11-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-06 11:08:04 IP:211.20.xxx.xxx 未訂閱
引言:
引言: RaynorPao你好,謝謝你的回答~~我已經用一個無迴圈的Form了!按ctrl alt del查看工作狀態也是沒有回應,但是lr的值卻沒抓到,想請教你一下,HWndCalculator := FindWindow(nil, '無回應')這一行裡的無回應是指視窗名稱嗎??還是要打noresponse呢??對不起~~第一次接觸api,很多函數都不熟!謝謝你~~~^^
monokoko 你好: 當然是指「視窗的名稱」啊 (例如: 'Form1', 'Form2',....) -- >< face="Verdana, Arial, Helvetica"> Dear 版主大人: 我已經將視窗名稱改好了!但是lr的值仍然是1~~嗚嗚~我是那裡有下錯了嗎??
RaynorPao
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-06 13:57:06 IP:203.73.xxx.xxx 未訂閱
引言: Dear 版主大人: 我已經將視窗名稱改好了!但是lr的值仍然是1~~嗚嗚~我是那裡有下錯了嗎??
nonokoko 你好:
(1)我想,有可能是因為在你的 Windows 作業系統裡面,還有相同名稱的視窗,
   因此才會導致抓到的視窗 Handle 並不是無回應的視窗;所以建議你為你的
   Form1 取一個特別、唯一的 Caption (例如: '唯一的視窗名字'),並且在
   FormCreate 的時候,動態指定給它 Form1.Caption:='唯一的視窗名字';
   當然,你在 FindWindow 的時候,也應該找這個特別、唯一的 Caption
(2)另外,在你的無窮迴圈裡面,是不可以加 Application.ProcessMessages;
   的,不然,還是會被判定「有回應」的
(3)如果還是不行的話,建議你把所有相關的程式碼貼上來,幫你看看
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
nonokoko
一般會員


發表:10
回覆:10
積分:4
註冊:2003-11-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-06 14:40:20 IP:211.20.xxx.xxx 未訂閱
Dear 版主大人: 以下是我的程式碼 unit Unit1;    interface    uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,   StdCtrls,ShellApi, ExtCtrls;    type   TForm1 = class(TForm)     Button1: TButton;     Edit1: TEdit;     Edit2: TEdit;     Timer1: TTimer;     procedure Button1Click(Sender: TObject);     procedure Timer1Timer(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;    var   Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.Button1Click(Sender: TObject); var HWndCalculator : HWnd; lr : Integer; aResult : Cardinal; begin HWndCalculator := FindWindow(nil,'沒有回應');   if HWndCalculator <> 0 then   //如果此視窗已存在   begin     lr:=SendMessageTimeout(HWndCalculator,WM_SETFOCUS,0,0,SMTO_NORMAL,5000,aResult);//無回應     edit1.text:=inttostr(lr);       if lr=0 then   //若無回應,關閉視窗,重新執行       begin         Sleep(5000);         keybd_event(69,0,0,0);         Sleep(5000);         keybd_event(68,0,0,0);         //SendMessage(HWndCalculator, WM_CLOSE, 0, 0);         ShellExecute(handle,'open','notepad.exe',nil,nil,SW_ShowNormal);       end;   end; end; end. 而經過我的測試發現當出現以下的圖片時,才會是0 可是我想在以下的圖片時,就能馬上終止程式,並且重新執行檔案,是不是我的SendMessageTimeout的語法有錯呢??非常感激您~一直回答我的問題~~因為工作的關係~~這個程式對我非常重要~~謝謝~~您~~~小女子感恩不盡!!
RaynorPao
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-06 16:42:30 IP:203.73.xxx.xxx 未訂閱
引言: Dear 版主大人: 以下是我的程式碼 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ShellApi, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var HWndCalculator : HWnd; lr : Integer; aResult : Cardinal; begin HWndCalculator := FindWindow(nil,'沒有回應'); if HWndCalculator <> 0 then //如果此視窗已存在 begin lr:=SendMessageTimeout(HWndCalculator,WM_SETFOCUS,0,0,SMTO_NORMAL,5000,aResult);//無回應 edit1.text:=inttostr(lr); if lr=0 then //若無回應,關閉視窗,重新執行 begin Sleep(5000); keybd_event(69,0,0,0); Sleep(5000); keybd_event(68,0,0,0); //SendMessage(HWndCalculator, WM_CLOSE, 0, 0); ShellExecute(handle,'open','notepad.exe',nil,nil,SW_ShowNormal); end; end; end; end. 而經過我的測試發現當出現以下的圖片時,才會是0 可是我想在以下的圖片時,就能馬上終止程式,並且重新執行檔案,是不是我的SendMessageTimeout的語法有錯呢??非常感激您~一直回答我的問題~~因為工作的關係~~這個程式對我非常重要~~謝謝~~您~~~小女子感恩不盡!!
nonokoko 你好: 請先參考這篇文章中的做法,看是否能夠解決問題??
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-05-10 14:53:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!