2012-10-15 5 views
1

잘 작동하는 응용 프로그램이 있습니다. 원시 입력을 사용하여 키보드/마우스 입력을 모두 처리합니다. NPAPI 클라이언트 창 플러그인으로 전환 할 때, 키보드에 대해 WM_KEYDOWN을 통해 입력을 받지만, 설정에 따라 사용하지 않도록 설정해야합니다. 그리고 나쁘게 키보드 입력을 전혀받지 못합니다. WM_INPUT 이벤트. 창에 D3D 렌더링을 포함하여 다른 모든 작업이 진행 중입니다.Chrome의 NPAPI 창 플러그인에서 Windows raw_input 사용

여기에 윈도우가 대략 (꽤 긴입니다) 어떻게 설정입니다 :

... 
SetWindowLongPtr(Application_hWnd, GWL_WNDPROC, (LONG_PTR)&Application_WndProc); 
... 

DEV_BROADCAST_DEVICEINTERFACE notificationFilter; 
GUID hid = { 0 }; 
RAWINPUTDEVICE rid[4] = { 0 }; 

rid[1].usUsagePage = 0x01; // HID_USAGE_PAGE_GENERIC (in WDK) 
rid[1].usUsage = 0x06; // HID_USAGE_GENERIC_KEYBOARD (in WDK) 
rid[1].dwFlags = RIDEV_NOLEGACY;//RIDEV_DEVNOTIFY; 
rid[1].hwndTarget = Application_hWnd; // capture only for this window 

RegisterRawInputDevices(rid, sizeof(rid)/sizeof(rid[0]), sizeof(rid[0])); 
... other raw device detection and related HID stuff 

수신 :

case WM_INPUT: 
{ 
    if (GET_RAWINPUT_CODE_WPARAM(wParam) == RIM_INPUT) 
    { 
      RAWINPUT raw = { 0 }; 
      UINT dwSize = sizeof(raw); 

      if (GetRawInputData((HRAWINPUT)lParam, RID_INPUT, &raw, &dwSize, sizeof(RAWINPUTHEADER)) > 0) 
      { 
       switch (raw.header.dwType) 
       { 
       case RIM_TYPEKEYBOARD: 
        // never reaches here 

오류 검사가 명확성을 위해 생략되어 있지만, 에러가 어디보고되지 않습니다. 그러나 키보드에 아무런 영향을 미치지 않는 것 같지만 마우스에 대해서는 WM_INPUT을 수신합니다.

누구나 NPAPI에 성공적으로 작동하는 원시 입력 키보드가 있습니까?

답변

0

나는 브라우저가 당신에게 무슨 일이 일어나고 있는지 더 잘 제어 할 수있는 곳에서 자신 만의 자식 HWND를 만들려고합니다.

+0

실제로 작동합니다. Arr하지만 지금은 창 스타일, 위치 및 크기를 직접 처리해야합니다. 나는 왜 우리가 원하는대로 제공된 창을 조작 할 수 없는지 궁금해. 어쨌든 도와 주셔서 감사합니다! – g012

+0

창을 다른 창의 하위 창으로 만들고 올바르게 수행하면 자동으로 위치와 크기를 가져와야합니다. 나는 다른 사람들이 말한 것에 근거하여 말하고있다. 나는 그것을 스스로 해본 적이 없기 때문에 나는 100 % 확실하지 않다. – taxilian

+0

아, 재미있어. 솔루션을 테스트 할 때 창의 생성 후 창 부모를 간단히 설정했지만 창 생성시 부모를 지정해 볼 수는 있습니다. – g012