2017-08-11 90 views
2

我想將某些鼠標點擊消息發送到另一個程序的指定窗口。我目前使用WM_LBUTTONUPWM_LBUTTONDOWN消息,其工作正常。檢查鼠標按鈕是否在C++中交換了

無論用戶的鼠標按鈕設置如何,這些消息的執行方式都完全相同。反過來,我想知道用戶是否從鼠標設置控制面板交換了鼠標按鈕。

我研究發現SwapMouseButton功能,它工作正常,但我不想實際交換鼠標按鈕,我只是想知道它是否以前交換過或沒有。

從MSDN:

如果鼠標按鈕的含義之前逆轉,被調用的函數之前,返回值是非零。

我可以得到我想要的信息,但它也可以將它們恢復到鼠標按鈕的原始狀態。我只想檢查而不是恢復到原始狀態。

我目前調用這個函數,如:

SwapMouseButton(FALSE); 

我想知道的任何其他替代方式(類似SystemParametersInfo)只檢查(不也恢復)是否鼠標按鍵由用戶以前換。

基本上,我想要做的是根據用戶的鼠標按鈕意義來模擬主鼠標按鈕單擊和輔助鼠標按鈕單擊。

例如,當我模擬主鼠標按鈕單擊時,如果用戶交換了鼠標按鈕,則鼠標右鍵單擊應該模擬,否則像往常一樣左鍵單擊。沒有消息存在稱爲WM_PRIMARY...WM_SECONDARY...爲我做我想做的。

在此先感謝。

+2

您提出了錯誤的問題,現在需要錯誤解決方案的幫助。 [您無法使用PostMessage模擬鍵盤輸入](https://blogs.msdn.microsoft.com/oldnewthing/20050530-11/?p=35513)(相同的基本原則適用於鼠標輸入)。您應該問的問題是:*「如何自動化UI?」*該問題的答案是:*「使用[UI自動化](https://msdn.microsoft.com/en-us/library/ windows/desktop/ee684009.aspx)「。*這樣做的一個優點是,您不需要知道用戶的本地鼠標按鈕設置。 – IInspectable

+0

@IInspectable謝謝!我將刪除PostMessage。您提供的鏈接非常有用。 :-) – GTAVLover

回答

5

您可以使用GetSystemMetricsSM_SWAPBUTTON參數值。

SM_SWAPBUTTON 23

非零,如果左和右鼠標按鈕 被交換的含義;否則爲0.

相關問題