Hi!
Du benötigst einen MessageHandler, der die Tastatureingaben abfängt und an den WebBrowser weiterleitet.
Z.B. so:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| procedure TForm1.MsgHandler(var Msg: TMsg; var Handled: Boolean); const DialogKeys: set of Byte = [VK_LEFT, VK_RIGHT, VK_BACK, VK_UP, VK_DOWN, $30..$39, $41..$42, $44..$55, $57, $59..$5A]; var iOIPAO: IOleInPlaceActiveObject; Dispatch: IDispatch; begin if (WebBrowser1 = nil) then begin Handled := System.False; Exit; end;
Handled := (IsDialogMessage(WebBrowser1.Handle, Msg) = System.True);
if (Handled) and (not WebBrowser1.Busy) then begin if FOleInPlaceActiveObject = nil then begin Dispatch := WebBrowser1.Application ; if Dispatch <> nil then begin Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO); if iOIPAO <> nil then FOleInPlaceActiveObject := iOIPAO; end; end;
if FOleInPlaceActiveObject <> nil then if ((Msg.message = WM_KEYDOWN) ) and (Msg.wParam in DialogKeys) then else FOleInPlaceActiveObject.TranslateAccelerator(Msg); end; end; |
Um den Handler anzumelden:
Delphi-Quelltext
1:
| Application.OnMessage := MsgHandler; |
_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler