需要寫程式后臺復制當前打開的旺旺訊息視窗的訊息區域的文本。我的想法是原始粗暴的方式,模擬滑鼠選中和鍵盤復制操作,后臺向旺旺視窗發送選中和復制訊息,然后在把復制的文本拷貝出來。
現在碰到了一個問題,我向旺旺訊息視窗的訊息區域發送全選訊息后,每次都是定位到訊息輸入框,無法定位到訊息區域。我懷疑訊息區域和訊息輸入框是兩個不同的子視窗,我想向訊息區域子視窗直接發送訊息,請問如何獲取訊息區域子視窗的句柄。

獲取旺旺訊息視窗代碼:
// 獲取滑鼠位置視窗的hwnd
HWND swnd = WindowFromPoint(scmPt);
訊息區域坐標獲取:
GetWindowRect(swnd, &reca);
POINT pt = { (reca.right + reca.left) / 2, (reca.bottom + reca.top) / 2 };
發送滑鼠左鍵按下和彈起訊息:
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
發送Ctrl+A全選訊息:
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('A', 0, 0, 0);
keybd_event('A', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
uj5u.com熱心網友回復:
GetWindow(hwnd, GW_CHILD); 回傳為空,連視窗上的控制元件都找不到,快被折磨死了uj5u.com熱心網友回復:
人家為了避免黑客通過這種方式做非法的事情,界面控制元件實際上都是完全繪制出來的,怎么可能讓你抓取到。你試試QQ,也是這樣uj5u.com熱心網友回復:
使用GetWord控制元件。uj5u.com熱心網友回復:
那是DUI,找不到子視窗的HWND句柄的。uj5u.com熱心網友回復:
旺旺的訊息框是最好獲取的啦,剛試了下,可以通過FindWindowEx找到訊息訊息區域句柄,激活該視窗,發送Ctrl+A,Ctrl+C就能復制到文本,樓主再試試吧uj5u.com熱心網友回復:
搞定了,再請教個問題,旺旺的視窗是基于cef的,我看了視窗控制元件為aef.dll,應該是基于cef的控制元件,有沒有辦法從視窗句柄hwnd獲取到cef的browser?然后我可以用broser獲取到frame,再查看當前訊息視窗的html代碼uj5u.com熱心網友回復:
訊息視窗應該是基于chrome的cef控制元件。有沒有方法能夠從訊息視窗的句柄hwnd,獲取到控制元件的browser呢?我想獲取到該視窗的html源代碼
uj5u.com熱心網友回復:
訊息視窗應該是基于chrome的cef控制元件。有沒有方法能夠從訊息視窗的句柄hwnd,獲取到控制元件的browser呢?我想獲取到該視窗的html源代碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/112567.html
標籤:界面
