[問題] sendmessage 模擬滑鼠在背景下點擊

看板C_and_CPP (C/C++)作者 (牧羊人)時間10年前 (2015/10/12 21:33), 10年前編輯推噓6(604)
留言10則, 2人參與, 最新討論串1/1
開發平台(Platform): vc++ 2015 程式碼(Code): HWND Find = FindWindow(NULL, WindowName); SendMessage(Find, WM_LBUTTONDOWN, (WPARAM)MK_LBUTTON, (LPARAM)MAKELPARAM(x, y)); Sleep(250); SendMessage(Find, WM_LBUTTONUP, (WPARAM)MK_LBUTTON, (LPARAM)MAKELPARAM(x, y)); Sleep(2000); SendMessage(Find, WM_LBUTTONDOWN, (WPARAM)MK_LBUTTON, (LPARAM)MAKELPARAM(x, y)); Sleep(250); SendMessage(Find, WM_LBUTTONUP, (WPARAM)MK_LBUTTON, (LPARAM)MAKELPARAM(x, y)); 補充說明(Supplement): 抓到window後我讓程式去執行在fb網頁下 點擊左上角fb的圖樣更新網頁,每次程式 自動點擊第一下的時候window還不會自動彈出來 過兩秒Sleep(2000)後,再點擊一次window就會自動從背景跳出來,請問大大們 程式哪裡出問題了呢?? 想讓網頁自動一直在背景執行我想要傳送的點擊按鍵就好了,可是window都會在 執行點擊第二下之後每點擊一次就跳出視窗一次 感激 Q_Q -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.130.205 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1444656812.A.C7C.html

10/12 22:19, , 1F
這是callback的預設動作啊... 點擊後會跳到最前面
10/12 22:19, 1F

10/12 22:21, , 2F
抱歉 我沒看清楚 @_@
10/12 22:21, 2F

10/12 22:22, , 3F
既然跟sleep時間有關 何不試試多少以下不會跳出來
10/12 22:22, 3F

10/12 22:22, , 4F
可能比較好抓原因
10/12 22:22, 4F
有測過Sleep十秒後再點擊,結果還是一樣.. ※ 編輯: Noora (180.176.130.205), 10/12/2015 22:28:47

10/12 22:46, , 5F
正常用滑鼠去點的視窗都會跑到最上層吧
10/12 22:46, 5F
用Sendmessage的方式不會像mouse_event那樣游標被搶走,也有看過有人 做出不會跑到最上層的方式點擊滑鼠.. ※ 編輯: Noora (180.176.130.205), 10/12/2015 22:53:42

10/12 22:55, , 6F
也許SetForegroundWindow,這個function要弄掉
10/12 22:55, 6F
沒有使用這個function喔 ※ 編輯: Noora (210.69.13.1), 10/13/2015 08:30:58

10/13 13:26, , 7F
call LockSetForegroundWindow ,也許有用
10/13 13:26, 7F
好像有點改善,不過在視窗轉換的時候他還是會再跳出來一次 EX:我在Skype底下還不會跳出來,轉到pcman底下又跳出來了這樣的感覺 在此感謝大大的協助 ※ 編輯: Noora (180.176.130.205), 10/13/2015 20:17:50 ※ 編輯: Noora (180.176.130.205), 10/13/2015 20:24:41 ※ 編輯: Noora (180.176.130.205), 10/13/2015 20:36:06

10/13 21:07, , 8F
不是你的程式call喔,是chrome來call才有用吧
10/13 21:07, 8F

10/13 21:08, , 9F
如果是fb網頁在pcman,要pcman call LockSetForeground
10/13 21:08, 9F
大大您好 我是直接在點擊之前加上LockSetForegroundWindow(LSFW_LOCK); 不太懂其他的參數要怎麼加 在用LockSetForegroundWindow(LSFW_LOCK);前 有先加上SetForegroundWindow(Find);指令 這麼做就可以定住了 另外我又試了另一個指令 SendMessage(Find, WM_KEYDOWN, VK_F5, NULL); SendMessage(Find, WM_KEYUP, VK_F5, NULL); 想說直接按下F5讓他直接按下F5更新網頁 可是就變成window要置頂才會動作... 只要讓window在背景就不會動作了,但滑鼠卻可以背景執行.. 感謝回答 >< ※ 編輯: Noora (180.176.130.205), 10/13/2015 22:58:48 ※ 編輯: Noora (180.176.130.205), 10/13/2015 23:00:21

10/13 23:38, , 10F
遠程執行緒可以控制別的程式
10/13 23:38, 10F
文章代碼(AID): #1M6xQiny (C_and_CPP)
文章代碼(AID): #1M6xQiny (C_and_CPP)