1
我有一個獨立工作的應用程序。它使用原始輸入處理所有的鍵盤/鼠標輸入。當切換到NPAPI客戶端窗口插件時,我通過鍵盤的WM_KEYDOWN
接收輸入,而它們應該被我的設置禁用,而且我沒有收到鍵盤的任何原始輸入事件WM_INPUT
事件。其他一切正在工作,包括窗口中的D3D9渲染。在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原始輸入鍵盤?
確實有效。阿爾但現在我必須自己處理窗口的樣式,位置和大小。我仍然想知道爲什麼我們不能根據需要操縱提供的窗口。 無論如何感謝您的幫助! – g012
如果你讓窗戶成爲其他窗戶的孩子,並且做得正確,你應該自動獲得位置和尺寸。儘管如此,我是基於別人所說的話講話的。我從來沒有做過,所以我不是100%確定的。 – taxilian
啊有趣,我會嘗試。在測試解決方案時,我簡單地設置了窗口的父窗口,但是我可以嘗試在窗口創建時指定父窗口。 – g012