2017-08-11 12 views
2

別のプログラムの指定されたウィンドウにマウスクリックメッセージを送信したいと思います。私は現在WM_LBUTTONUPWM_LBUTTONDOWNのメッセージを使用しています。C++でマウスボタンがスワップされているかどうか確認してください

これらのメッセージは、ユーザーのマウスボタンの設定に関係なく、まったく同じ方法で実行されます。これとは反対に、ユーザーがマウス設定のコントロールパネルからマウスボタンを入れ替えたかどうかを知りたい。

SwapMouseButton機能を調査して見つけましたが、正常に機能しますが、マウスボタンを実際に交換する必要はなく、以前にスワップされているかどうかを知りたいだけです。 MSDNから

関数が呼び出された前に、マウスボタンの意味は、以前に逆転した場合には、戻り値がゼロ以外です。

このようにしたい情報を取得できますが、マウスボタンの元の状態に戻します。私は元の状態に戻っていないことを確認したいだけです。

ように私は現在、この関数を呼び出す:私は唯一のマウスボタンが予めユーザによって交換されたかどうか(も復元しない)をチェックするために、他の代替方法(SystemParametersInfoのようなもの)を知りたい

SwapMouseButton(FALSE); 

基本的には、マウスの主要なボタンのクリックをシミュレートし、ユーザーのマウスボタンの意味に従ってセカンダリのマウスボタンのクリックをシミュレートします。

例えば、主なマウスボタンのクリックをシミュレートしたときに、ユーザーがマウスボタンをスワップした場合は、通常のようにマウスの右クリックをシミュレートする必要があります。私が欲しいことをするために、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) "*これの利点の1つは、ユーザーのローカルマウスボタンの設定を知る必要がないことです。 – IInspectable

+0

@IInspectableありがとう! 'PostMessage'を削除します。あなたが提供したリンクは非常に便利です。 :-) – GTAVLover

答えて

5

GetSystemMetricsには、SM_SWAPBUTTONのパラメータ値を使用できます。

SM_SWAPBUTTON 23

左と右のマウスボタン の意味が入れ替わっている場合はゼロ以外。そうでない場合は、0

関連する問題