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

請問要如何由一個應用程式去接收另一應用程式的window message呢?

尚未結案
JS
一般會員


發表:22
回覆:26
積分:9
註冊:2002-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-28 16:14:08 IP:61.219.xxx.xxx 未訂閱
我是想由一支應用程式去監督另一支應用程程式如果逾時就將它關掉,那我要如何作呢?謝謝
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-28 16:49:45 IP:140.135.xxx.xxx 未訂閱
JS您好:   
引言:一支應用程式去監督另一支應用程程式如果逾時就將它關掉
您可以參考下面的連結: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30344 RaynorPao 大哥的範例,及相關連結 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
JS
一般會員


發表:22
回覆:26
積分:9
註冊:2002-07-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-28 17:01:05 IP:61.219.xxx.xxx 未訂閱
但是我是想要在自行設定的時間逾時則關閉,而不是等到無回應時才去作關閉的動作!所以我必須知道何時Button被click,應此我希望由另一應用程式去接收click所產生的window message,再去作計時的動作!
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-28 17:54:26 IP:140.135.xxx.xxx 未訂閱
JS您好:      關閉視窗的方式為PostMessage(hWnd,WM_CLOSE,0,0);   或SendMessage(hWnd,WM_CLOSE,0,0);   其他的我幫不上忙了,對不起 > <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 -
bundur
一般會員


發表:16
回覆:44
積分:22
註冊:2002-11-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-28 19:34:56 IP:218.5.xxx.xxx 未訂閱
引言: 但是我是想要在自行設定的時間逾時則關閉,而不是等到無回應時才去作關閉的動作!所以我必須知道何時Button被click,應此我希望由另一應用程式去接收click所產生的window message,再去作計時的動作!
如果两支程式都是自己写的,可以在被監督的程式的Button click时,发出一个 Message 通过作为監督的程式,然后在超时的时候发出WM_CLOSE Message 给它 但如果被監督的程式不是自己写的,这样一監督过滤所有的 Windows Messages 可能不大现实。
JS
一般會員


發表:22
回覆:26
積分:9
註冊:2002-07-20

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-28 19:50:53 IP:61.219.xxx.xxx 未訂閱
這觀念我了解,不過可否有寫一簡單的code示範一下,因為不知如何在兩個應用程式之間通訊,我記得sendmessage or postmessage好像是送回自己的AP message queue,其它的application要如何收呢?thank you!
bundur
一般會員


發表:16
回覆:44
積分:22
註冊:2002-11-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-28 21:28:07 IP:218.66.xxx.xxx 未訂閱
引言: 這觀念我了解,不過可否有寫一簡單的code示範一下,因為不知如何在兩個應用程式之間通訊,我記得sendmessage or postmessage好像是送回自己的AP message queue,其它的application要如何收呢?thank you!
自己定义一个 MessageID 如: const C_MyMessage_1 = WM_USER $001; // 通过该 MessageID 进行识别 然后在你的被監督程式的 Button Click 时,发出消息如: SendMessage(你的監督程式的Handle, C_MyMessage_1, 0, 0); // 注:其中 wParam 和 lParam 参数可以带上你自己的东东, // 比如你把 Handle 发给别一支程式, // 你可以定义 wParam 为你的 Command, lParam 为你的消息内容 // 约定 100: 为发给 Handle Command 如: // SendMessage(你的監督程式的Handle, 100, Self.Handle); // 这样就可组成你自己的消息处理系统 在你的監督程式和被監督程式都应该有一个消息处理过程,如: procedure Form1.WndProc(var Message: TMessage); begin with Message do case Msg of C_MyMessage_1: begin {在这时对于監督程式和被監督程式分别做各自的动作} case WParam of 100: SaveHandle := lParam; else; end; end; end; inherited WndProc(Message); end; 当然,这里还有一个问题是如何得到对方的 Handle, 解决方法1、如果一个程式由另一程式调用,可以在调用时加入命令行参数, 被调用的程式启动时发 MESSAGE 给调用他的程式,带上它自己的 Handle, 这样两支程式都得到了对方的Message了。 解决方法2、如果上述条件不存在,即两支程式都由用户分别开启。 那可以在程式开启时,将自己的Handle写入到一个文件或注册表中, 在关闭时删除文件或注册表中的键值。 当需要用时与取,比如:被監督程式 Button Click 时,取得監督程式的Handle 如时这个Handle不存在,则表明監督程式没有开启。如此即可。 说了这么多,不知道我说清楚了没有。
系統時間:2024-04-27 21:50:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!