我的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)
,但没有幸运。
这里有什么建议吗?它现在阻止了我,也不能谷歌任何有用的解决方案。
1条答案
按热度按时间kxkpmulp1#
已经有了解决方案,无论是wpf还是electron,它们都是win32窗口,当
WM_PARENTNOTIFY
到来时,我们可以获得其句柄和监视消息,一旦检测到WM_LBUTTONDOWN
,则SetFocus
。