В коде включается поддержка всех функциональных клавиш:
| Код | unit Unit3;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, ActiveX, AppEvnts;
type TForm1 = class(TForm) WebBrowser1: TWebBrowser; ApplicationEvents1: TApplicationEvents; procedure FormCreate(Sender: TObject); procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
threadvar FOleInPlaceActiveObject: IOleInPlaceActiveObject;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1.Navigate('http://forum.vingrad.ru/index.php?showtopic=34567&st=0&unread=&#entry256086'); end;
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); var iOIPAO: IOleInPlaceActiveObject; Dispatch: IDispatch; begin if not Assigned(WebBrowser1) then begin Handled:= False; Exit; end;
Handled:= IsDialogMessage(WebBrowser1.Handle, Msg) = True;
if (Handled) {and (not WebBrowser.Busy)} then begin //{and (not WebBrowser.Busy)} - если "разкомментировать", то код будет // работать только после полной загрузки // страницы if not Assigned(FOleInPlaceActiveObject) then begin Dispatch := WebBrowser1.Application; if Assigned(Dispatch) then begin Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO); if Assigned(iOIPAO) then FOleInPlaceActiveObject:= iOIPAO; end; end; if Assigned(FOleInPlaceActiveObject) then if Msg.wParam = VK_RETURN then FOleInPlaceActiveObject.TranslateAccelerator(Msg); end; end;
initialization OleInitialize(nil);
finalization OleUninitialize; FOleInPlaceActiveObject:= nil;
end.
| |