Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Strg+N in Webbrowser deaktivieren ? (https://www.delphipraxis.net/124886-strg-n-webbrowser-deaktivieren.html)

thomas2009 26. Nov 2008 22:22


Strg+N in Webbrowser deaktivieren ?
 
Hallo

ich versuche mit diesem Tutorial die Tastenkombination Strg+N in Webbrowser zu deaktivieren:
http://www.swissdelphicenter.com/en/...de.php?id=2360

Es klappt bei mir nicht. Was muss ich noch tun ?
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
// hier muss ich vielleicht Message senden ?
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Put a TApplicationEvents component on your form and assign a OnMessage event handler:

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  // check if Ctrl-N pressed
  if (GetKeyState(VK_CONTROL) < 0) and (Msg.Message = WM_KEYDOWN) and
    (Msg.wParam = Ord('N')) then
  begin
    Handled := True;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://google.com');
end;

end.

mkinzler 26. Nov 2008 22:24

Re: Strg+N in Webbrowser deaktivieren ?
 
Zitat:

// hier muss ich vielleicht Message senden ?
Nein die Methode sollte bei einer Message aufgerufen werden

API 26. Nov 2008 22:29

Re: Strg+N in Webbrowser deaktivieren ?
 
Du brauchst die Komponente TApplicationEvents

toms 26. Nov 2008 22:33

Re: Strg+N in Webbrowser deaktivieren ?
 
Zudem würde ich es so machen:

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  // Strg + n deaktivieren
  if (Msg.wParam = Ord('N')) and (GetKeyState(VK_CONTROL) < 0) and
   (Msg.Message = WM_KEYDOWN) then
    begin
      Handled := IsChild(Webbrowser1.Handle, Msg.hwnd);
    end;
end;

thomas2009 26. Nov 2008 23:12

Re: Strg+N in Webbrowser deaktivieren ?
 
Zitat:

Zitat von mkinzler
Zitat:

// hier muss ich vielleicht Message senden ?
Nein die Methode sollte bei einer Message aufgerufen werden

Und wie sollte die Methode bei einer Message aufgerufen werden?

mkinzler 26. Nov 2008 23:22

Re: Strg+N in Webbrowser deaktivieren ?
 
Indem du diese mit dem genannten Event eines TApplicationEvent-Objektes verbindest

ToFaceTeKilla 27. Nov 2008 15:00

Re: Strg+N in Webbrowser deaktivieren ?
 
Falls du das nur machst um die Tastenkombination zu ändern und dein Programm nur mittel zum Zweck ist, gibts noch einen anderen weg:
Start > ausführen > cmd
in das Installationsverzeichnis von FF wechseln
Code:
cd "..\..\Programme\Mozilla Firefox\chrome"
(falls du das Standart-Verzeichnis genommen hast) (..\..\ wechselt nur aus dem Benutzerverzeichnis raus, das cmd ja standardmäßig darin startet)

dort dann das Jar-Archiv toolkit.jar extrahieren
Code:
jar xf toolkit.jar
(erfordet installiertes JRE)

und im entstandenen Ordner global/content/ die Datei platformHTMLBindings.xml deinen Wünschen anpassen.

Dann das ganze wieder zusammenpacken

Bernhard Geyer 27. Nov 2008 15:03

Re: Strg+N in Webbrowser deaktivieren ?
 
Zitat:

Zitat von ToFaceTeKilla
Falls du das nur machst um die Tastenkombination zu ändern und dein Programm nur mittel zum Zweck ist, gibts noch einen anderen weg:
Start > ausführen > cmd
in das Installationsverzeichnis von FF wechseln

Bringt jedoch wenig wenn er mit WebBrowser TWebbrowser von Delphi meint welche den IE im Hintergrund verwendet

ToFaceTeKilla 27. Nov 2008 15:07

Re: Strg+N in Webbrowser deaktivieren ?
 
Hm recht hast du... hab mir eingebildet irgendwo was von FireFox gelesen zu haben :oops:

thomas2009 27. Nov 2008 19:20

Re: Strg+N in Webbrowser deaktivieren ?
 
Zitat:

Zitat von mkinzler
Indem du diese mit dem genannten Event eines TApplicationEvent-Objektes verbindest

Das hätte ich gerne wissen wie

mkinzler 27. Nov 2008 19:39

Re: Strg+N in Webbrowser deaktivieren ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Z.B. im OI

thomas2009 27. Nov 2008 20:22

Re: Strg+N in Webbrowser deaktivieren ?
 
Aber meine Version D7 hat leider den Event OnMessage nicht
Ich meinte wie man den Event programmiert

Die Muhkuh 27. Nov 2008 21:50

Re: Strg+N in Webbrowser deaktivieren ?
 
Auch Delphi 7 hat das Event OnMessage, wenn du ein TApplicationEvent auf die Form machst...

thomas2009 27. Nov 2008 22:04

Re: Strg+N in Webbrowser deaktivieren ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
So sieht es bei mir aus D7 pro

mkinzler 27. Nov 2008 22:08

Re: Strg+N in Webbrowser deaktivieren ?
 
Hilfe mein Fahrrad kann nicht Fliegen :stupid:
TForm != TApplicationEvents
Wenn man dir sagt lege eine TApplicationEvent-Komponente auf die Form und weise deren Eventhandler die Methode zu, dann meinen wir das auch!!!

toms 27. Nov 2008 22:14

Re: Strg+N in Webbrowser deaktivieren ?
 
Wenn du es ohne TApplicationEvents Komponente machen möchtest:

In der private Sektion

Delphi-Quellcode:
private
    procedure OnAppMessge(var Msg: tagMSG; var Handled: Boolean);
im OnCreate:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := OnAppMessge;
end;
und dann:

Delphi-Quellcode:
procedure TForm1.OnAppMessge(var Msg: tagMSG; var Handled: Boolean);
begin
 if (Msg.wParam = Ord('N')) and (GetKeyState(VK_CONTROL) < 0) and
   (Msg.Message = WM_KEYDOWN) then
    begin
      Handled := IsChild(Webbrowser1.Handle, Msg.hwnd);
    end;
end;

thomas2009 27. Nov 2008 22:26

Re: Strg+N in Webbrowser deaktivieren ?
 
Danke @Toms
Nun ist damit Strg+N deaktiviert und damit kann man keine neue Seite in ein neues Fenster öffnen

Es gibt ein kleine Lücke und zwar mit der Tastenkombination Shift+Klick auf einen Link in Webbrowser wird auch (leider) die Seite in ein neues Fenster geöffnet

Wie lautet der Code, der Shift+Click deaktiviert ?

toms 27. Nov 2008 22:44

Re: Strg+N in Webbrowser deaktivieren ?
 
Zitat:

Zitat von thomas2009
Wie lautet der Code der Shift+Click deaktiviert ?


Delphi-Quellcode:
 Handled := IsChild(WebBrowser1.Handle, Msg.Hwnd) and
  ((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP) and
  (GetKeyState(VK_SHIFT) < 0));

thomas2009 27. Nov 2008 23:07

Re: Strg+N in Webbrowser deaktivieren ?
 
Es stimmt was nicht um Shift + Click zu deaktivieren
Es wird trotzdem ein neues Fenster erstellt :

Delphi-Quellcode:
procedure TForm1.OnAppMessge(var Msg: tagMSG; var Handled: Boolean);
begin

if ((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP) and
  (GetKeyState(VK_SHIFT) < 0)) then begin
  Handled := IsChild(WebBrowser1.Handle, Msg.Hwnd);
 Caption:='shift pressed ;)';
  end;
end;
aber wenn ich Shift allein deaktiviere dann funktioniert :
Delphi-Quellcode:
if (GetKeyState(VK_SHIFT) < 0)) then begin
  Handled := IsChild(WebBrowser1.Handle, Msg.Hwnd);
 Caption:='shift pressed ;)';
  end;
end;

toms 28. Nov 2008 06:31

Re: Strg+N in Webbrowser deaktivieren ?
 
Tipp: setze die Klammern richtig

thomas2009 28. Nov 2008 11:12

Re: Strg+N in Webbrowser deaktivieren ?
 
Zitat:

Zitat von toms
Tipp: setze die Klammern richtig

ich habe folgendes gemacht :
// 1:
Delphi-Quellcode:
if (GetKeyState(VK_SHIFT) < 0) and
(Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP)
 then begin
  Handled := IsChild(WebBrowser1.Handle, Msg.Hwnd);
 Caption:='shift pressed +Click ;)';
  end;
//2:

Delphi-Quellcode:
if (GetKeyState(VK_SHIFT) < 0) and
(Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP)
 then begin
  Handled := IsChild(WebBrowser1.Handle, Msg.Hwnd);
 Caption:='shift pressed +Click ;)';
  end;
//3:
Delphi-Quellcode:
if ((GetKeyState(VK_SHIFT) < 0) and (Msg.Message = WM_RBUTTONDOWN)) or
((GetKeyState(VK_SHIFT) < 0) and (Msg.Message = WM_RBUTTONUP))
 then begin
  Handled := IsChild(WebBrowser1.Handle, Msg.Hwnd);
 Caption:='shift pressed +Click ;)';
  end;
keine funktioniert

toms 28. Nov 2008 11:20

Re: Strg+N in Webbrowser deaktivieren ?
 
Delphi-Quellcode:
if ((Msg.Message = WM_LBUTTONDOWN) or (Msg.Message = WM_LBUTTONUP)) and
  (GetKeyState(VK_SHIFT) < 0) then
begin
  Handled := IsChild(WebBrowser1.Handle, Msg.Hwnd);
  Caption := 'shift+ click';
end;

thomas2009 28. Nov 2008 17:04

Re: Strg+N in Webbrowser deaktivieren ?
 
Es funktioniert jetzt. Danke!

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz