WDS API のビューア側アプリケーションにおいてキーボードイベントをカスタマイズしようとしています。
例えば以下のような処理を行いたいと考えています。
・[F1]キーを実行すると、相手側ではなく、自機に反映させる。
・[F12]キーを実行すると、設定画面を表示する。
・特定のキー、もしくは [Ctrl]キーと組み合わせて実行すると設定画面を表示する。
といった処理です。
しかし、アプリケーションウィンドウでキー入力をしても、ボタンやエディットボックスにフォーカスがあるときはKeyDown や KeyPress、KeyUpでメッセージを取得できますが、RdpViewerにフォーカスと合わせるとメッセージを取得できずに相手(Sharer)側にキーメッセージを送ってしまいます。
アプリケーションウィンドウではなく、RdpViewerコンポーネントに対してイベント処理の設定をしようとしましたが、プロパティウィンドウのイベントにはKeyDownなどのイベントが表示されないため、直接、以下のコードを記述してみましたが、これでもキーイベントは取得できませんでした。
また、マウスイベントも同様に取得できません。
// WinSharer側との接続が確立
private void OnConnectionEstablished(object sender, EventArgs e)
{
this.pRdpViewer.KeyPress += new KeyPressEventHandler(this.RdpViewer_KeyPress);
this.pRdpViewer.KeyDown += new KeyEventHandler(this.RdpViewer_KeyDown);
this.pRdpViewer.KeyUp += new KeyEventHandler(this.RdpViewer_KeyUp);
}
// KeyDownメッセージ
private void RdpViewer_KeyDown(object sender, KeyEventArgs e)
{
System.Diagnostics.Debug.Write("RdpViewer_KeyDown (" + e.KeyCode.ToString() + ")\n");
}
// KeyPressメッセージ
private void RdpViewer_KeyPress(object sender, KeyPressEventArgs e)
{
System.Diagnostics.Debug.Write("RdpViewer_KeyPress (" + e.KeyChar.ToString() + ")\n");
//e.Handled = true;
}
// KeyUpメッセージ
private void RdpViewer_KeyUp(object sender, KeyEventArgs e)
{
System.Diagnostics.Debug.Write("RdpViewer_KeyUp (" + e.KeyCode.ToString() + ")\n");
}
もし、WDSを使用したデスクトップ共有において、キーボード、マウスイベントのカスタマイズについての情報がありましたらアドバイス願います。
以上、よろしくお願いします。
マンモス