我正在使用將密鑰發送給遊戲的WPF應用程序。我將鍵盤上的按鍵作爲鍵盤,向觀察者打開spy ++。然後我在應用程序上按下我的按鈕,然後我注意到spy ++消息中有不同的掃描代碼。這可能與Windows 7 64位有關嗎? 部分清單:Windows 7上的SendInput掃描碼x64
var down = new INPUT();
down.Type = (UInt32)InputType.KEYBOARD;
down.Data.Keyboard = new KEYBDINPUT();
down.Data.Keyboard.Vk = (UInt16)keyCode;
down.Data.Keyboard.Scan = 0;
down.Data.Keyboard.Flags = 0;
down.Data.Keyboard.Time = 0;
down.Data.Keyboard.ExtraInfo = IntPtr.Zero;
//down.Data.Keyboard.ExtraInfo = GetMessageExtraInfo();
var up = new INPUT();
up.Type = (UInt32)InputType.KEYBOARD;
up.Data.Keyboard = new KEYBDINPUT();
up.Data.Keyboard.Vk = (UInt16)keyCode;
up.Data.Keyboard.Scan = 0;
up.Data.Keyboard.Flags = (UInt32)KeyboardFlag.KEYUP;
up.Data.Keyboard.Time = 0;
up.Data.Keyboard.ExtraInfo = IntPtr.Zero;
//up.Data.Keyboard.ExtraInfo = GetMessageExtraInfo();
INPUT[] inputList = new INPUT[2];
inputList[0] = down;
inputList[1] = up;
var numberOfSuccessfulSimulatedInputs = SendInput(2, inputList, Marshal.SizeOf(typeof(INPUT)));
的圖片顯示,當我用我的代碼來發送關鍵我收到的掃描碼:從諜++消息輸出00fExtended。當我實際上按相同的鍵時,我收到ScanCode:1FfExtended。其他一切都是相同的。
http://spilmansoftware.com/images/scancode.gif http://spilmansoftware.com/images/scancode.gif
好抓!謝謝。 – Stanomatic 2010-04-14 16:22:50