2009-04-27 139 views
1

我需要使用SendMessage來模擬目標程序中的用戶點擊作爲SendMessage塊,直到它觸發的事件完成處理。原因是這個阻塞提供了檢測是否有任何對話由於點擊而打開的機會。我目前的問題是,儘管我可以在模擬對話框中使用WM_LBUTTONDOWN和WM_LBUTTONUP消息來連續使用模擬對話框中的按鈕,但我無法使其在標準Windows應用程序中的菜單和菜單項上工作(記事本)。獲得以某種方式執行點擊菜單項目的能力的任何幫助都將得到滿足。我已經可以檢測到它是否是一個菜單項,只需要使用SendMessage就可以模擬點擊它。使用SendMessage模擬用戶鼠標點擊

乾杯

羅斯

+0

不知道我完全理解qu:你想阻止還是不想阻止?您是否嘗試過使用SendInput - 這是模擬鼠標/鍵盤輸入的常用方式。您通常需要將其與檢測輸入結果的其他方式進行配對 - 例如。使用WinEvents檢測是否出現對話框或菜單。還有一些測試框架可以爲你做這些工作。 – BrendanMcK 2012-02-20 07:32:00

回答

2

不幸的是,win32 hooks這個頁面說

模擬鼠標和鍵盤輸入(WH_JOURNALPLAYBACK)。掛鉤提供了模擬這些活動的唯一可靠方法。如果您嘗試通過發送或發佈消息來模擬這些事件,則Windows內部不會更新鍵盤或鼠標狀態,這可能會導致意外的行爲。如果用鉤子來回放鍵盤或鼠標事件,這些事件就像真正的鍵盤或鼠標事件一樣處理。

所以看起來你可能需要使用WH_JOURNALRECORDWH_JOURNALPLAYBACK訴諸某種宏錄製一樣的功能爲您的自動化測試?

+0

鏈接已過期,這是一個較新的鏈接: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644959(v=vs.85).aspx – Qwerty01 2014-01-28 14:41:22