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

PostMessage一問

答題得分者是:anyone
asiaking
一般會員


發表:2
回覆:6
積分:1
註冊:2006-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-08 16:32:42 IP:59.120.xxx.xxx 訂閱
 以下程式的功能要達到在筆記本內 (200,200) 處執行滑鼠右鍵 
但是是乎無法動作
但是我有加上
HANDLE f_Wnd = ::FindWindowEx(hWnd,0,"Edit",0);
是可以的
但是請問有其他方法嗎????
我不想使用
HANDLE f_Wnd = ::FindWindowEx(hWnd,0,"Edit",0);
這個函數
請各位大大幫我解答一下謝謝!!

//=========================================================

WORD wX=200; // X 座標
WORD wY=200; // Y 座標
LPARAM LParam = MAKELPARAM(wX, wY);

HANDLE hWnd = ::FindWindow("Notepad",NULL); //筆記本ClassName

for(int i = 1; i < 20 ; i )
{
PostMessage(hWnd, WM_RBUTTONDOWN, 0, LParam);
PostMessage(hWnd, WM_RBUTTONUP, 0, LParam);
}
幫忙解惑一下!!謝謝
hobolin
初階會員


發表:0
回覆:25
積分:25
註冊:2005-07-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-13 12:47:30 IP:61.230.xxx.xxx 訂閱
FineWindow 只是找 top level window 所以會找不到(你現在 focus 在 compiler 的 IDE 上)

所以不可以,有方法可以達到,不過qj
asiaking
一般會員


發表:2
回覆:6
積分:1
註冊:2006-12-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-13 15:01:20 IP:59.120.xxx.xxx 訂閱
hobolin 大大 那有其他辦法嗎
除了透過 FindWindowEx 這個之外還有其他法子嗎
請大大賜較.......
anyone
中階會員


發表:1
回覆:63
積分:52
註冊:2007-02-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-13 16:13:43 IP:59.127.xxx.xxx 訂閱
不用FindWindow的話
可以用EnumWindows(@EnumProc,0)
=================================
另外
SetCursorPos(x, y);
PostMessage(Handle,WM_MouseMove ,0,lParam);
PostMessage(Handle,WM_RButtonDown,0,lParam);
PostMessage(Handle,WM_RButtonUp ,0,lParam);
你試看看
ps.這是delphi寫法,不過應該差不多
asiaking
一般會員


發表:2
回覆:6
積分:1
註冊:2006-12-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-03-13 16:45:49 IP:59.120.xxx.xxx 訂閱
感謝anyone 大大 指點 

是這樣的我有一個程式 產生一個A 視窗 還有一個別人寫的 B視窗 為畫曲線圖

在A視窗中有許多功能按鈕 當User 按到當中一個按鈕時 則觸發 B視窗 的一個按鈕 而劃出曲線圖
但是又不要讓User 感覺上有畫面切換的感覺 因為按完鈕後還有其他事件要動作 不想要中斷
除了使用FindWindowEx 取的B視窗子元件外
是否還有其他用法????

不知 EnumWindows(@EnumProc,0) 該API要如何使用
可否在次請教一下
anyone
中階會員


發表:1
回覆:63
積分:52
註冊:2007-02-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-03-13 17:42:07 IP:59.127.xxx.xxx 訂閱
你若要A去觸發B的話,要先用EnumWindows去抓到B的Handle值後
再用EnumChildWindows去取得你要的Button之Handle值
再用PostMessage去觸發Button就可以了
EnumWindows和EnumChildWindows的用法你可以去google去搜尋
應該會搜尋到很多相關的,你再去試看看
學會自己上網去找尋資料或資訊也是挺重要的唷!
===================引 用 文 章===================
感謝anyone 大大 指點

是這樣的我有一個程式 產生一個A 視窗 還有一個別人寫的 B視窗? 為畫曲線圖

在A視窗中有許多功能按鈕? 當User 按到當中一個按鈕時 則觸發 B視窗 的一個按鈕 而劃出曲線圖
但是又不要讓User 感覺上有畫面切換的感覺 因為按完鈕後還有其他事件要動作 不想要中斷
除了使用FindWindowEx 取的B視窗子元件外
是否還有其他用法????

不知 EnumWindows(@EnumProc,0) 該API要如何使用
可否在次請教一下
asiaking
一般會員


發表:2
回覆:6
積分:1
註冊:2006-12-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-03-14 20:27:38 IP:61.62.xxx.xxx 訂閱
anyone 大大  我有試過摟~~ 但是好像還是不行A
我使用軟體去查B視窗的元件時 並沒有發現Button的元件
於是我想說 是否可以採用 "以視窗為基準移到固定位置(因為Button的位置是固定不變的) 在執行滑鼠左右鍵功能"
不知道是否能這樣使用??


===================引 用 文 章===================
你若要A去觸發B的話,要先用EnumWindows去抓到B的Handle值後
再用EnumChildWindows去取得你要的Button之Handle值
再用PostMessage去觸發Button就可以了
EnumWindows和EnumChildWindows的用法你可以去google去搜尋
應該會搜尋到很多相關的,你再去試看看
學會自己上網去找尋資料或資訊也是挺重要的唷!
anyone
中階會員


發表:1
回覆:63
積分:52
註冊:2007-02-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-03-15 08:37:36 IP:59.127.xxx.xxx 訂閱
不知道你的B視窗是什麼?遊戲嗎?
你那個做法可以
先SetCursorPos設定滑鼠XY的位置
再用PostMessage去做按的動作
(還是得先知道它的Handle值)
用PostMessage是因為它是依Handle的擁有者而送的訊息
比較能確保你是送到那個視窗
===================引 用 文 章===================
anyone 大大? 我有試過摟~~?但是好像還是不行A
我使用軟體去查B視窗的元件時 並沒有發現Button的元件?
於是我想說 是否可以採用 "以視窗為基準移到固定位置(因為Button的位置是固定不變的) 在執行滑鼠左右鍵功能"?
不知道是否能這樣使用??
anyone
中階會員


發表:1
回覆:63
積分:52
註冊:2007-02-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-03-15 08:55:12 IP:59.127.xxx.xxx 訂閱
補充一點:
抓不到Button元件除非它是用畫的或其它的工具做出來
不然一般Button都可以抓到它的Handle值
遊戲比較有可能而已
===================引 用 文 章===================
anyone 大大? 我有試過摟~~?但是好像還是不行A
我使用軟體去查B視窗的元件時 並沒有發現Button的元件?
於是我想說 是否可以採用 "以視窗為基準移到固定位置(因為Button的位置是固定不變的) 在執行滑鼠左右鍵功能"?
不知道是否能這樣使用??
asiaking
一般會員


發表:2
回覆:6
積分:1
註冊:2006-12-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-03-15 08:59:18 IP:59.120.xxx.xxx 訂閱
B視窗不是遊戲@@! 是一套統計繪圖軟體 是介由A視窗輸入資料後再按下A視窗按鈕 在去觸發B視窗 按鈕讀取在A視窗所輸入的資料去做統計

但是剛按下的A視窗按鈕只是要先讓B視窗預先讀資料統計 還沒有要讓B視窗顯示出來
才想要這樣子觸發

=========================
位啥我PostMessage 的是父視窗的Handle 沒有效果
但是我PostMessage 的是父視窗中的子視窗的Handle 是OK的
父視窗通常指的所看到的畫面不是嗎???

======請問要怎嚜結案阿!!! 感謝一值回覆我的問題=======

===================引 用 文 章===================
不知道你的B視窗是什麼?遊戲嗎?
你那個做法可以
先SetCursorPos設定滑鼠XY的位置
再用PostMessage去做按的動作
(還是得先知道它的Handle值)
用PostMessage是因為它是依Handle的擁有者而送的訊息
比較能確保你是送到那個視窗
anyone
中階會員


發表:1
回覆:63
積分:52
註冊:2007-02-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-03-15 09:52:02 IP:59.127.xxx.xxx 訂閱
我說過,一般來說遊戲抓不到Button值的機會比較大
因為可能用畫的...等等方式
若真抓不到,就試試上面我所講的方式去測看看
===================引 用 文 章===================
B視窗不是遊戲@@! 是一套統計繪圖軟體 是介由A視窗輸入資料後再按下A視窗按鈕 在去觸發B視窗 按鈕讀取在A視窗所輸入的資料去做統計

但是剛按下的A視窗按鈕只是要先讓B視窗預先讀資料統計 還沒有要讓B視窗顯示出來?
才想要這樣子觸發
asiaking
一般會員


發表:2
回覆:6
積分:1
註冊:2006-12-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-03-15 12:55:42 IP:59.120.xxx.xxx 訂閱
恩.....找了很久   是乎還是沒有不靠子元件觸發的方法   
對了 還是不知道怎嚜結案A@@!
anyone
中階會員


發表:1
回覆:63
積分:52
註冊:2007-02-12

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-03-15 14:34:58 IP:59.127.xxx.xxx 訂閱
http://delphi.ktop.com.tw/board.php?cid=32&fid=88&tid=22190
結案方式如上
===================引 用 文 章===================
恩.....找了很久?? 是乎還是沒有不靠子元件觸發的方法??
?? 對了 還是不知道怎嚜結案A@@!
系統時間:2017-10-19 8:12:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!