[過去ログ] C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
347
(3): デフォルトの名無しさん [sage] 2016/11/26(土) 16:13:12.18 ID:dXHq99jt(1/3) AAS
>>346
346(1): デフォルトの名無しさん [sage] 2016/11/26(土) 15:34:45.46 ID:w/Dhvdu8(1/2) AAS
WindowsのAPIだからC#とは直接的には関係ないけど教えてほしい。
特定のウィンドウにキーボードイベントを送信しようと考えている。
keybd_eventを使用してキーボードイベントの送信する事は成功した。
ちなみに第二引数のスキャンコードは使用しない、みたいな事を書いてあるサイト(MSDN含む)が多かったが
スキャンコードを指定しないと対象アプリがキーボード処理を受け付けてくれなかったため指定してある。
対象アプリがバックグラウンド中であっても操作しようと考えてSendMessage(またはPostMessage)に変更しようとしたのだが
スキャンコードはどこにどのように設定すればいいのだろう?
第四引数のlParamであろうと言う事は想像がつくが、スキャンコードをそのまま設定しても駄目だった。
WM_KEYDOWNならこれ、カーソルキーとかも24ビット立てる必要があったかな
外部リンク:msdn.microsoft.com
SendMessage(hWnd, WM_KEYDOWN, uCode, MapVirtualKey(uCode, 0) << 16 | 1)
とかそんな感じだったはず、離すときはWM_KEYUPにして32ビットを立てる

C++でWM_KEYDOWNイベントのlParamを吐くウィンドウプロシージャでも作ると良い
348
(1): 347 [sage] 2016/11/26(土) 16:22:01.70 ID:dXHq99jt(2/3) AAS
> 離すときはWM_KEYUPにして32ビットを立てる
うっかりミスった、30〜31ビットね
WM_KEYDOWN時のlParam | 0xC0000000する形
349
(1): 347 [sage] 2016/11/26(土) 16:37:54.65 ID:dXHq99jt(3/3) AAS
あ、そもそもC#でもウィンドウプロシージャオーバーライド出来たっけ
protected override void WndProc(ref Message m) {
base.WndProc(ref m);
if(0x0100 <= m.Msg && m.Msg <= 0x0102) Text = m.ToString();
}
とか適当なフォームでやれば実際のウィンドウメッセージが確認できるよ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.037s