Internet explorer keybd#u事件不';postmessage不能在activex中工作,但可以';t模拟VK_返回
我正在开发一个与javascript交互的浏览器插件。我使用开源框架firebreath开发插件,该插件将NPAPI(非ie浏览器)插件和activex(用于ie)打包在一个dll文件中 以下代码在使用NPAPI插件的非ie浏览器下运行良好(“enter”、“delete”、“backspace”键可以正确按下): 但是如果我在ie中运行插件,则不会发生任何事情。我也尝试了发送输入,但仍然不会发生任何事情:Internet explorer keybd#u事件不';postmessage不能在activex中工作,但可以';t模拟VK_返回,internet-explorer,plugins,activex,Internet Explorer,Plugins,Activex,我正在开发一个与javascript交互的浏览器插件。我使用开源框架firebreath开发插件,该插件将NPAPI(非ie浏览器)插件和activex(用于ie)打包在一个dll文件中 以下代码在使用NPAPI插件的非ie浏览器下运行良好(“enter”、“delete”、“backspace”键可以正确按下): 但是如果我在ie中运行插件,则不会发生任何事情。我也尝试了发送输入,但仍然不会发生任何事情: KEYBDINPUT kb={0}; INPUT Input={0};
KEYBDINPUT kb={0};
INPUT Input={0};
kb.wScan = VK_BACK;
kb.dwFlags = KEYEVENTF_UNICODE;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1,&Input,sizeof(Input));
奇怪的是,键的组合在ie中正确工作。例如(ctrl+x):
因此,我将keybd_事件更改为PostMessage:
::PostMessage(hbrowser,WM_KEYDOWN,vKey,1); //vKey stands for key pressed
::PostMessage(hbrowser,WM_KEYUP,vKey,1);
“VK_选项卡”、“VK_删除”、“VK_返回”、“VK_选项卡”、“VK_空间”起作用,但“VK_返回”不起作用。有谁能帮我一下忙吗。这件事困扰了我两天,请帮帮我。这已经困扰了我两天了
> keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL,0), 0 ,0);
> keybd_event(bCharKey,(BYTE)0, 0 ,0);
> Sleep(10);
> keybd_event(bCharKey,(BYTE)0, KEYEVENTF_KEYUP,0);
> keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL,0),
> KEYEVENTF_KEYUP,0);
::PostMessage(hbrowser,WM_KEYDOWN,vKey,1); //vKey stands for key pressed
::PostMessage(hbrowser,WM_KEYUP,vKey,1);