项目需要一些全屏展示的web页面,结果碰到一个问题,当窗体上的webbrowse控件打开了网页之后,窗体就不响应键盘消息了~~~~郁闷了会儿,过后才研究出来用ApplicationEvents这个控件就可以实现~~~要么的话,就只有HOOK窗口消息了~~
以下是OnMessage事件,用来阻止Webbrowser的右键菜单:
procedure TfrmSearch.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
//如果是Webbrowser,则不许使用右键菜单
if IsChild(Webbrowser1.Handle,Msg.Hwnd) and ((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message=WM_RBUTTONUP)) then
begin
Handled:=True;
end;
end;
当焦点在Webbrowser控件中时,窗体是不会响应键盘消息的,可以用以下方法来处理,比如中按ESC运行命令~
//用ApplicationEvents控件,拦截ESC键按下的消息!
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = WM_KEYDOWN) AND (Msg.wParam=VK_ESCAPE) then
begin
if IsChild(Webbrowser1.Handle,Msg.hwnd) then
showmessage('在这里做你想做的');
end else;
end;
应用的地方,还有,DCube与DBgrideh 在使用时,用鼠标滚动来代替一条一条滚动。