webbrowser响应回车键
unit Unit11;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, ComCtrls, activeX;
type TForm11 = class(TForm) pgc1: TPageControl; ts1: TTabSheet; ts2: TTabSheet; wb1: TWebBrowser; wb2: TWebBrowser; procedure FormCreate(Sender: TObject); procedure pgc1Change(Sender: TObject); private { Private declarations } //当前激活的WebBrowser控件 {当激活的WebBrowser控件变化时更新该字段的值, 在IEMessageHandler中使用} FCurrBW : TWebBrowser;
procedure IEMessageHandler(var Msg: TMsg; var Handled: Boolean); public { Public declarations } end;
var Form11: TForm11;
implementation
{$R *.dfm} procedure TForm11.IEMessageHandler(var Msg: TMsg; var Handled: Boolean); const StdKeys = [VK_TAB, VK_RETURN]; { 标准键 } ExtKeys = [VK_DELETE, VK_BACK, VK_LEFT, VK_RIGHT]; { 扩展键 } fExtended = $01000000; { 扩展键标志 } begin Handled := False;
if (FCurrBW = nil) then begin Handled := False; Exit; end;
with Msg do begin if ((Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST)) and ((wParam in StdKeys) or (GetKeyState(VK_CONTROL) < 0) or (wParam in ExtKeys) and ((lParam and fExtended) = fExtended)) then begin try with FCurrBW.Application as IOleInPlaceActiveObject do Handled := TranslateAccelerator(Msg) = S_OK;
if not Handled then begin Handled := True; TranslateMessage(Msg); DispatchMessage(Msg); end;
except end; end; end;
end; procedure TForm11.pgc1Change(Sender: TObject); begin case pgc1.ActivePageIndex of 0 : FCurrBW := wb1; 1 : FCurrBW := wb2; end; end;
procedure TForm11.FormCreate(Sender: TObject); begin FCurrBW := wb1; Application.OnMessage := IEMessageHandler; wb1.Navigate('http://bbs.csdn.net/topics/390341172?page=1#post-393434373'); wb2.Navigate('http://bbs.csdn.net/topics/390341172?page=1#post-393434373'); end;
end. ======================================================================================
Delphi WebBrowser 响应回车Enter键(兼容Silverlight)
在Form放置一个ApplicationEvents控件, 在OnMessage事件中写下面的代码:
uses ActiveX
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
const StdKeys = [VK_TAB, VK_RETURN, VK_DELETE, VK_BACK]; { standard keys } ExtKeys = [VK_LEFT, VK_RIGHT]; { extended keys } fExtended = $01000000; { extended key flag }
begin
Handled := False; with Msg do if ((Message > = WM_KEYFIRST) and (Message <= WM_KEYLAST)) and ((wParam in StdKeys) or {$IFDEF VER120}(GetKeyState(VK_CONTROL) < 0) or {$ENDIF} (wParam in ExtKeys) and ((lParam and fExtended) = fExtended)) then try if IsChild(WebBrowser1.Handle, hWnd) then { handles all browser related messages } begin with WebBrowser1.Application as IOleInPlaceActiveObject do Handled := TranslateAccelerator(Msg) = S_OK; if not Handled then begin Handled := True; TranslateMessage(Msg); DispatchMessage(Msg); end; end; except
end;
end;

浙公网安备 33010602011771号