想用MFC寫一個程式來操作一個另外一個程式,操作包括:向其輸入框輸入用戶名密碼,模擬滑鼠點擊其登錄按鈕,登錄成功后通過一系列點擊匯出資料Excel,定時1個小時操作一次。
請教各位大神,如何實作,通過向其句柄PostMessage可實作嗎?
有沒有相關開源專案推薦下?
uj5u.com熱心網友回復:
一種獲得對應視窗句柄發送訊息,SendMessage或者PostMessage一種就模擬滑鼠與鍵盤操作,如先將程式移動到指定位置,然后模擬滑鼠點擊與鍵盤輸入
uj5u.com熱心網友回復:
能詳細說說嘛?
uj5u.com熱心網友回復:
你要怎么詳細,函式用法可以去MSDN上看,幾句話又說不清
uj5u.com熱心網友回復:
明確告訴你是可以的。跨行程通訊有很多方法。除了訊息投遞之外,有剪貼板 socket 管道 郵槽等,除了訊息投遞,其它幾個方式都需要制定協議
uj5u.com熱心網友回復:
可以封裝應用程式的訊息出來,前提是應用程式的代碼是你寫的uj5u.com熱心網友回復:
SPY ++ 監視應用程式, 手動操作, 看看 你需要的操作是否有相應的訊息支持uj5u.com熱心網友回復:
如果該程式標題不變,HANDLE handle = ::FindWindow(NULL, strCaption);
if (handle != NULL)
::PostMessage(handle, WM_TEST, 0, 0);
如果該程式標題變了
用Spy++查看視窗類名
HANDLE handle = ::FindWindow(strClassName, NULL);
if (handle != NULL)
::PostMessage(handle, WM_TEST, 0, 0);
如果視窗類名是公用,得修改視窗類名,VC或者c++builder改視窗類名詳情見我博客,其它自行百度。
uj5u.com熱心網友回復:
是使用其他程式的功能, 而不是去操作她的UI.uj5u.com熱心網友回復:
你發送一些傳遞整數的訊息是可以的,傳遞字串引數的訊息就不可以了,行程有邊界的uj5u.com熱心網友回復:
如果你能FindWindow/FindWindowEx()得到另外一個行程視窗中的子控制元件視窗的話,你就可以給它們發送訊息SendMessage/SendMessageTimeout/PostMessage等。如果不能,你可以使用模擬鍵盤輸入和滑鼠點擊的方式keybd_event/mouse_event/SendInput();
uj5u.com熱心網友回復:
類似的東西我做過用的是注入的方法
網上有很多相關資料
例如http://blog.csdn.net/fysy0000/article/details/6659986
uj5u.com熱心網友回復:
FindWindow查找對應的視窗句柄,然后PostMessage/SendMessage等發送訊息來插入資料等。但對于不是標準視窗的windows程式,就需要其他方法,比如注入。
uj5u.com熱心網友回復:
http://www.autohotkey.com轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/105215.html
標籤:基礎類
