2016-05-05 27 views
0

C#WPFアプリケーションでは、一度クリックするだけでアンインストール画面のラジオボタンをクリックしようとしています。Win32 SendMessageからラジオボタンをクリック

2つのラジオボタン

  • は、 "以前の状態にアプリケーションを復元します。" があります(これはデフォルトで にチェックされています)
  • "このコンピュータからアプリケーションを削除してください。" (これは私がチェックされたい です)。

いくつかのWin32 APIを使用して、ラジオボタンのハンドルを見つけてクリックします。残念ながら何も起こりません(ラジオボタンはチェックされません)。私はうまくクリックしたウィンドウにOkボタンがあります。

私はSpy ++を使用して、ラジオボタンを手動でクリックしてコードを送信しているメッセージと比較しました(どちらも同じです)。私はコードから送信

スパイ++のメッセージ私は以下マウス

<00099> 000D1136 S BM_SETCHECK fCheck:BST_CHECKED 
<00100> 000D1136 R BM_SETCHECK 

私はラジオをクリックして使用しているコードのスニペットですを使用してラジオボタンをクリックしたときに送信され

<00001> 000D1136 S BM_SETCHECK fCheck:BST_CHECKED 
<00002> 000D1136 R BM_SETCHECK 

スパイ++のメッセージボタン。

[DllImport("User32.Dll")] 
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, IntPtr lParam); 

private const int BST_CHECKED = 0x0001; 
private const int BM_SETCHECK = 0x00F1; 


public static void DoRadioButtonClick(IntPtr RadioButtonHandle) 
{ 
    SendMessage(RadioButtonHandle, BM_SETCHECK, BST_CHECKED, IntPtr.Zero); 
} 
+0

ほとんどの質問:_automate_でどの技術アプリケーションを構築したいのですか?たとえば、WinFormsアプリケーションはラジオボタンのBM_SETCHECKに反応しません。 2点目:BM_SETCHECKを使って_click_OKボタンを押さないと思います。 3番目のポイント:SendKeys()を使用してキーボードをシミュレートすることもできます... –

+0

私はWPFアプリケーションを使用していますが、ラジオボタンがオンのウィンドウがWPFアプリケーションであるかどうかはわかりません。 OKボタンは、SendMessage(ButtonHandle、BM_CLICK、IntPtr.Zero、IntPtr.Zero)を使用してクリックされます。ラジオボタンがフォーカスを持っていないので、SendKeysをどのように使うのかわかりません。 – Scott

+0

UIオートメーションを使用してUIを自動化する –

答えて

1

ラジオボタンにマウスのダウンイベントを送信して問題を解決しました。他の二つの値わからない

SendMessage(RadioButtonHandle, 513, 0x00000001, 0x000d0026); 

513 =のMouseDownメッセージ 。

関連する問題