タイトル : Re^2: 他のWindowにVK_MENUを送信してメニューをアクティブにする 投稿日 : 2005/10/29(Sat) 12:42 投稿者 : YAS 参照先 : http://jumbofoot.cocolog-nifty.com/yass_vbnet_tips/
[OSのVer]:Windows [VBのVer]:VB.NET 花ちゃんさん,ありがとうございます。 > ひょっとして Keys.Alt を送っていませんか? > Private Const VK_MENU = &H12 を送っていますか? はい,VK_MENU = &H12 を定義して送っています。 > VK_MENU = &H12 を使っているなら、同時に MapVirtualKey API関数も使っておられますか? はい,MapVirtualKeyを使って次のようなコードで送信しています。 ExtendedKeyFlag()は仮想キーコードの種類に応じてKEYEVENTF_EXTENDEDKEYを返す自作の関数です。 keybd_event(bVk, MapVirtualKey(CInt(bVk), 0), ExtendedKeyFlag(bVk) Or 0, 0) keybd_event(bVk, MapVirtualKey(CInt(bVk), 0), ExtendedKeyFlag(bVk) Or KEYEVENTF_KEYUP, 0) また,Spy++で送信先のWORDへのメッセージを見ると, P WM_SYSKEYDOWN nVirtKey:VK_MENU cRepeat:1 ScanCode38 fExtended:0 fAltDown:1 fRepeat:0 fUp:0 P WM_SYSKEYUP nVirtKey:VK_MENU cRepeat:1 ScanCode38 fExtended:0 fAltDown:0 fRepeat:1 fUp:1 となっています。 本物のAltキーを押した場合には,上の2つと全く同じメッセージの後に, S WM_SYSCOMMAND uCmdType:SC_KEYMENU xPos:0 yPos:0(ニーモニックを使用) R WM_SYSCOMMAND というメッセージが流れているようです。 こちらのサンプル集とPINVOKE.NETを参考にSendInputでも試したのですが,同じ結果でした。 また,KEYDOWNだけを送ってもだめでした。 VBが2005β2のためかもしれませんので,VB2003で試してみます。 |