- - PR -
C#でウィンドウメッセージをコントロールに送るには?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-03-18 18:24
皆様こんにちは。
C#にて業務アプリの開発を行っています。 バーコードスキャナを使って画面内の特定のコントロールへフォーカスを 移動するというものを実現したいと思っております。 (実現したい内容) バーコード識別文字列を用意("$BARCODE"など) 上記文字列の先頭$が入力されてから1秒以内に"$BARCODE"が入力されたら、 バーコードからの入力と判断して、その判断のための文字列"$BARCODE"は 破棄したい。 入力文字が別物だったり秒数がオーバーしたら、キーボードからの入力と判断し $以降入力された文字を通常のキーボード入力と同じ動作をさせたい。 現在困っているのは、キーボードからの入力と判断した場合に、 それまでに、入力された文字を通常のキー入力文字として扱いたいという部分です。 C++のように現在フォーカスを持っているコントロールに KEY_CHARのウィンドウメッセージを送って、あたかもキーボード入力が行われた ようにしたいのですが、C#でウィンドウメッセージをコントロールに送信するやり方が わかりません。 ご存知の方ご教授のほどよろしくお願いします。 |
|
投稿日時: 2004-03-18 18:45
TextBoxのHandleプロパティでウィンドウハンドルが取得できると思いますので、WIN32APIのSendMessage()でメッセージを送ってみるとか。
試していないので、実際できるかは判りません。 |
|
投稿日時: 2004-03-18 19:26
早速の回答ありがとうございます。
一郎さんの方法で出来ることが確認できました。 以下テストしたコード(抜粋) [DllImport("user32.dll")] extern static System.IntPtr SendMessage( System.IntPtr hWnd, // 送信先ウィンドウのハンドル System.UInt32 Msg, // メッセージ System.IntPtr wParam, // メッセージの最初のパラメータ System.IntPtr lParam // メッセージの 2 番目のパラメータ ); private void button1_Click(object sender, System.EventArgs e) { SendMessage(textBox1.Handle, 0x0102, (IntPtr)0x34, (IntPtr)0x50001); } ありがとうございました。 |
|
投稿日時: 2004-03-18 21:13
別の方法として、試してませんがSystem.Windows.Forms.Sendkeysを使うってのはできないのかな〜
|
1