ペインをクリックする必要があるアプリケーションがあります。ボタンをクリックするために使用する次のコードを使用しようとしましたが、サポートされていないパターンの例外が発生しました。
InvokePattern click_pattern = (InvokePattern)adjust_button.GetCurrentPattern(InvokePattern.Pattern);
click_pattern.Invoke();
それを行う他の方法はありますか?
ペインをクリックする必要があるアプリケーションがあります。ボタンをクリックするために使用する次のコードを使用しようとしましたが、サポートされていないパターンの例外が発生しました。
InvokePattern click_pattern = (InvokePattern)adjust_button.GetCurrentPattern(InvokePattern.Pattern);
click_pattern.Invoke();
それを行う他の方法はありますか?
オブジェクトはクリック可能ですが、クリックが内部でどのように処理されているかによっては、必ずしもInvokePatternを使用してクリックを実行できるとは限りません。ここではそうなっているようです。
別の方法として、コードを使用してマウスカーソルをペイン上に移動し、P/Invokeを使用してクリックを発行することもできます。このようなもの:
private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;
[DllImport("user32.dll")]
private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo);
...
...
AutomationElement paneToClick;
...
...
Cursor.Position = paneToClick.GetClickablePoint();
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, new IntPtr());
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, new IntPtr());