在用WEBBROWSER开发浏览器时,当鼠标移动WEBBROWSER上面,按CTRL+N,将新打开一个IE,不知道这个问题各位高手是如何解决的,还解指点。如何才能将这个快捷键关闭。
解决方案 »
- 动态生成组件并可随意拖放?
- 帮忙把我想要的代码提取出来
- 如何在表格里面加显示记录个数的状态栏?
- 如何开发这样一种打印功能(请各位大虾赐教)急
- 请问在"richviewedit"控件 中如何用代码设置行距????????????????? 急!!!!!!!!!
- 谁有ANIMATEIMAGE控件。
- 急!急!急!!如何在软件中集成2000系统的权限管理功能????????
- 我做比较时间的sql时,2002-12-16 竟然比2002-12-22还大,哪里出问题了.
- 关于adoquery2的问题,请高手解答!(在线等待)
- 请问用ADOQuery做的ActiveX控件如何释放连接
- TServerSocket和TClienSocket 的多线程和同步问题,请教...
- 如何动态更改应用程序的图标
Form onCreate 事件加入
Application.OnMessage := ProcessMsg;{********禁止键盘的一些组合键和鼠标右键函数*****************}
procedure TFrmMain.ProcessMsg(var Msg: TMsg; var Handled: Boolean);
begin
with Msg do
begin
if Message=WM_KEYDOWN then
begin
if Msg.wParam=17 then
FirstIsCtrl:=True;
if (Msg.wParam>=113) and(Msg.wParam<=123) then //禁止Fx键
Handled:=True;
if Msg.wParam=112 then // F1启动帮助
BtnHelp.Click;
end;
if Message=WM_KEYUP then
if Msg.wParam=17 then
FirstIsCtrl:=False;
if ((message = WM_RBUTTONDOWN) or
(message = WM_RBUTTONDBLCLK)) or
(message = WM_CONTEXTMENU) then
begin
Handled := True;
end;
if FirstIsCtrl then
begin
if Message=WM_KEYDOWN then
if (Msg.wParam<>86) then
if (Msg.wParam>=65) and (Msg.wParam<=90) then
Handled:=True;
end;
end;
end;
其实我是有一个菜单也是ctrl+n的组合键,单焦点不在WEBBROWSER上面的时候,控CTRL+N就是新建一个窗口,焦点在WEBBROWSER上面时,控ctrl+n就成了打开一个IE了。晕啊。==================我想,不管焦点在那,只要控ctrl+n就是新建一个窗口,而不是去响应WEBBROWSER里的CTRL+N=================根本不响应主程序的CTRL+N腾讯我试了一下,就不会。好好的。
可以实现IDocHostUIHandler::TranslateAccelerator来处理
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, OleCtrls, SHDocVw;type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
test1: TMenuItem;
test11: TMenuItem;
Edit1: TEdit;
WebBrowser1: TWebBrowser;
clear1: TMenuItem;
procedure test11Click(Sender: TObject);
procedure clear1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.test11Click(Sender: TObject);
begin
edit1.Text:='ctrl+n'
end;procedure TForm1.clear1Click(Sender: TObject);
begin
edit1.Text:='clear'
end;procedure TForm1.FormCreate(Sender: TObject);
begin
webbrowser1.Navigate('www.google.com');end;end.源码都在这了。菜单里有一项设了ctrl+n的快捷,单webbroser1获得焦点时,这个快捷就用不了。气死我了。=================所以这个快捷要是能响应主菜单的就好了。省了关闭它。
========返过来就好了。
begin
Application.OnMessage := ProcessMsg;
end;
procedure TForm1.ProcessMsg(var Msg: TMsg; var Handled: Boolean);
begin
if (msg.Message=WM_KEYdown) and (msg.wParam =78) and ((GetKeyState(VK_CONTROL) and $8000) <> 0) then
begin
showmessage('ctrl+N');
handled:=true;
exit;
end;
end;