当宿主在wpf HwndSource中时,BrowserWindow无法接管键盘焦点

mgdq6dx1  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(158)

我的wpf应用程序托管了一个由HwndSource提供的电子窗口,所有这些都已经在电子10.1.6上工作了几年,现在遵循文档break changes并尝试升级到20.3.0。仅更改:
在主窗口中,require('@electron/remote/main').initialize();在预加载窗口中,const remote = require('@electron/remote');在创建浏览器窗口时设置sandbox = false;contextIsolation = false;nodeIntegration = true;require('@electron/remote/main').enable(win.webContents);
然后鼠标在wpf部分和这个电子窗口之间点击。在10.1.6中,键盘焦点将在之间跳转。在20.3.2中,我可以点击电子区域中的任何按钮,但不能为它的文本框输入任何东西,通过snoop,我可以看到键盘焦点总是在wpf父窗口上。似乎电子不能从wpf窗口中获得键盘焦点。
在浏览器窗口显示后,我已经尝试了wnd.focus();wnd.focusOnWebView();wnd.webContents.focus();甚至调用blur()第一次然后focus(),或一个插件扩展调用win32 api SetFocus(HWND),但没有幸运。
这里有什么建议吗?它现在阻止了我,也不能谷歌任何有用的解决方案。

kxkpmulp

kxkpmulp1#

已经有了解决方案,无论是wpf还是electron,它们都是win32窗口,当WM_PARENTNOTIFY到来时,我们可以获得其句柄和监视消息,一旦检测到WM_LBUTTONDOWN,则SetFocus

case WM_PARENTNOTIFY:
    if (LOWORD(wParam) == WM_LBUTTONDOWN)
        SetFocus(hwnd);
    break;

相关问题