2

ペインをクリックする必要があるアプリケーションがあります。ボタンをクリックするために使用する次のコードを使用しようとしましたが、サポートされていないパターンの例外が発生しました。

InvokePattern click_pattern = (InvokePattern)adjust_button.GetCurrentPattern(InvokePattern.Pattern); click_pattern.Invoke();

それを行う他の方法はありますか?

4

1 に答える 1

3

オブジェクトはクリック可能ですが、クリックが内部でどのように処理されているかによっては、必ずしも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());
于 2012-11-27T22:50:16.813 に答える