2012-11-17 4 views
2

단축키 응용 프로그램에 SendInput API를 사용하려고합니다. 그래서 내가하고있는 일은 글로벌 키크 훅 (keyhook)을 갖는 것이고, 어떤 키 조합이 성공하면 다른 키를 보내고 싶습니다.SendInput ExtraInfo/Flags

내 문제는 시뮬레이션 된 키를 보낼 때 내 후크가 해당 메시지를 받고 재귀 루프로 끝나는 것입니다.

그래서 ExtraInfo/Flags를 사용해 보았습니다. 그러나 어떤 이유로 내가 설정 한 값이 내가 후크에서받는 값과 같지 않습니다. 아무리

var down = new INPUT(); 
down.Type = (UInt32)InputType.Keyboard; 
down.Data.Keyboard = new KEYBDINPUT(); 
down.Data.Keyboard.KeyCode = (UInt16)keyCode; 
down.Data.Keyboard.Scan = 0; 
down.Data.Keyboard.Flags = 0; //doesn't matter whatever I set here... never gets back to my hook 
down.Data.Keyboard.Time = 0; 
down.Data.Keyboard.ExtraInfo = IntPtr.Zero; //doesn't matter whatever I set here... never gets back to my hook 

어떻게 내가 내 후크의 메시지가 나타날 때의를 다시 ... ExtraInfo를/플래그 설정 :

private IntPtr KeyStateChangeCallback(int nCode, IntPtr wParam, ref KEYBDINPUT lParam) 
    { 
     //lParam.ExtraInfo and lParam.Flags ... is always some mumbo jumbo value or zero... 
    } 

나는 lowlevelkeyboard 후크, "WH_KEYBOARD_LL"를 사용하고 있습니다를 다음과 같이 설정하십시오 :

 proc = KeyStateChangeCallback; 
     using (Process curProcess = Process.GetCurrentProcess()) 
     using (ProcessModule curModule = curProcess.MainModule) 
     { 
      hookID = NativeMethods.SetWindowsHookEx(WH_KEYBOARD_LL, proc, NativeMethods.GetModuleHandle(curModule.ModuleName), 0); 
     } 

다른 누구나 비슷한 문제가있어 도움을받을 수 있습니까? 작동중인 코드 샘플은 환상적 일 것입니다.

+0

어떤 종류의 후크를 사용하고 있습니까? – shf301

+0

감사합니다 :) WH_KEYBOARD_LL 훅을 사용하고 있습니다. 게시물을 다시 살펴보고 추가 정보로 업데이트하십시오. – user1831153

답변

1

documentation에 따르면 GetMessageExtraInfoExtraInfo 필드의 데이터를 가져옵니다.

+0

고마워, 그게 실제로 내가 지금까지 사용하고있는 해결책이지만, GetMessageExtraInfo를 사용하면 SetMmessageExtraInfo를 사용할 필요가 있기 때문에 메시지 자체와 함께 값을 전달하는 것이 훨씬 안전하다고 생각하고있다. "입력 당"기준 ... 전체 메시지에 대해서만, 메시지는 여러 입력, "키 A 다운", "키 B 다운", "키 A 업"등과 같은 "키 누름"으로 구성 될 수 있습니다. .. 그리고 플래그와 함께 문제에 관해 무엇? 분명히 플래그에 대한 Set/Get 조합은 없습니다. – user1831153

+0

흠, x64 모드에서는 응용 프로그램을 실행할 때 ExtraInfo를 보내지 만 x86에서는 그렇지 않은 것 같습니다. (컴퓨터도 x64입니다) 그래서 구조 중 하나가 틀린 것처럼 보일 것입니다 ... 그러나 나는 어느 것을 알아낼 수 없습니다 ... – user1831153

관련 문제