Habe gemerkt, dass man mit Strg+A das Dokument immer noch markieren kann.
Diese Funktion deaktiviert nun das Popupmenue, Strg+A, markieren mit der Maus.
Delphi-Quellcode:
function GetElementAtPos(Doc: IHTMLDocument2; x, y: Integer): IHTMLElement;
begin
Result :=
nil;
Result := Doc.elementFromPoint(x, y);
end;
procedure TForm1.ApplicationEvents1Message(
var Msg: tagMSG;
var Handled: Boolean);
var
ShiftState: TShiftState;
var
MousePos: TPoint;
Element: IHTMLElement;
Doc: IHTMLDocument2;
begin
// only handle Webbrowser messages
if IsChild(Webbrowser1.Handle, Msg.hwnd)
then
begin
// Convert keyboard message data to TShiftState
ShiftState := KeyDataToShiftState(Msg.lParam);
// ctrl + A
if (ShiftState = [ssCtrl])
and (Msg.
message = WM_KEYDOWN)
and
(Msg.wParam = ord('
A'))
then
begin
// event subsequent processing of the message
Handled := True;
Exit;
end;
// right-, left-, double click
if (Msg.
Message = WM_RBUTTONDOWN)
or (Msg.
Message = WM_LBUTTONDOWN)
or
(Msg.
Message = WM_RBUTTONDBLCLK)
then
begin
Doc := Webbrowser1.Document
as IHTMLDocument2;
if Assigned(doc)
then
begin
GetCursorPos(MousePos);
MousePos := Webbrowser1.ScreenToClient(MousePos);
// get the element under the mouse
Element := GetElementAtPos(doc, MousePos.x, MousePos.y);
if Assigned(Element)
then
begin
// if a link
if element.tagName = '
A'
then
Exit;
end;
end;
// if not a link, don't process the message
Handled := True;
end;
end;
end;