Pytanie przedszkolaka - popup menu TWebBrowser

0

Cześć :)

Wiem że dostanę po łbie za tak proste pytanie, ale utknołem deczko :)
Więc zapytam - Jak pozbyć się upierdliwego PopupMenu myszki
z TWebBrowser ?
Zrobiłem własne menu i przypisałem je do TWebBrowsera ale ciągle klikając prawym przyciskiem myszy pojawia się standardowe z IE :-/

Czuje to w kościach że jest na to jedna prosta formułka, ale stary
sklerotyk ze mnie i nie zapamiętałem ;(
Więc proszę Panów o wyrozumiałość i przypomienie tej formółki ;)

0

Jejku jaki ze mnie sklerotyk !!
a to takie proste wystarczy w odpowiednim kluczu jedyneczkę wstawić.

Podaje ten wpisik może komuś się przyda

PROCEDURE TFormPomoc.BlokujPopup;
var
 reg :TRegistry;
Begin
 Reg:= TRegistry.Create;
 with Reg do try
   RootKey:= HKEY_CURRENT_USER;
   OpenKey('Software\Policies\Microsoft\Internet Explorer\Restrictions', True);
   WriteInteger('NoBrowserContextMenu',1);  //wartość 1 - wyłączone
   CloseKey;
 finally
   Reg.Free;
 end;
End;

Od dziś nie jem kiełbasy bo skleroza się wzmaga ;)
a Panom ślicznie dziękuje bo wiem żebyście mnie poratowali

0

Obciach ! <glowa>
Ja mam wyłączyć u siebie w programie , a nie w IE !
i na dodatek podstawić swoje menu :-/
Więc litości ponawiam pytanie...

0

przejrzyj "tips" na www.torry.net (użyj tam wyszukiwarki ;) )

0

Dziękuje pięknie Eristoff <szlachetny trunek="trunek"> :)

Dobra wskazówka na 99,9% - a ten ułameczek procenta to jeszcze malutki problemik.
Ponieważ procedurka którą znalazłem zakłada hooka na prawy przycisk myszki , no i będę miał kłopot z wywołaniem mojego TPopupMenu.
Ale i tak jestem bardzo zadowolony ;)

Dla zainteresowanych tematem:

http://www.swissdelphicenter.ch/torry/showcode.php?id=571

0

[...]
Ponieważ procedurka którą znalazłem zakłada hooka na prawy przycisk myszki , no i będę miał kłopot z wywołaniem mojego TPopupMenu.

No to, kiedy hook przejmie kliknięcie, po zablokowaniu menu IE, wywołuj swoje menu i po kłopocie.

0

Cześć ;)

Nareszcie znalazłem coś skutecznego i o dość krótkim kodzie.
Odgrzebałem stary post pisany przez Eristoffa
http://4programmers.net/Forum/viewtopic.php?id=44281

Skopiowałem go poniżej ponieważ mam pytanie (dobrze by było gdyby on na to zerknoł).
Kod działa pięknie - podmienia standardowe PopupMenu myszki, drugim
popupem (moim) ale musiałem wyciąć kawałek kodu:

   and 
(GetParent(GetParent(msg.hwnd)) =PrivFrm.PrvChatWebBrowser.Handle

I pytanie co jest w tej linii schrzanione ?
Bez tego działa pięknie - ale umrę z ciekawości dlaczego z tą linią nie działa ? ;)

Poniżej podaje cały kod (pisał Eristoff) z tą linijką:

type
   TPrivFrm = class(TForm)
      PrvChatWebBrowser: TWebBrowser;
      PopMenuPrvChatWebBrowser: TPopupMenu;
      procedure MessageLoop(var Msg : TMsg ; var Handled : Boolean);
   private
      { Private declarations }
   public
      { Public declarations }

   end;

var
   PrivFrm: TPrivFrm;

function Klasa(Handle : THandle) : string;
var str : array[0..MAX_PATH] of Char;
begin
   GetClassName(Handle, str, MAX_PATH);
   result := StrPas(str);
end;

procedure TPrivFrm.MessageLoop(var Msg: TMsg; var Handled: Boolean);
var
mouse:Tpoint;
begin
if (Klasa(msg.hwnd) =   'Internet Explorer_Server')
   and 
(GetParent(GetParent(msg.hwnd)) =PrivFrm.PrvChatWebBrowser.Handle)   then
begin
   if (Msg.message = WM_RBUTTONDOWN) or (Msg.message = WM_RBUTTONUP) or (Msg.message = WM_CONTEXTMENU)
   then begin
    handled:=true;
      getcursorpos(Mouse);
    self.PopMenuPrvChatWebBrowser.Popup(Mouse.X, Mouse.Y);
   end
else Handled := False; //not rbutton
end
else
Handled := false; //not webbrowser msg
end;

procedure TPrivFrm.FormActivate(Sender: TObject);
begin
Application.OnMessage := self.MessageLoop;
end;


PopMenuPrvChatWebBrowser <== popupmenu


<url></url>

0

hehe po prostu wkleiłem kawałek mojego kodu z programu i nie zauważyłem drugiego warunku. Dotyczy on jedynie mojego programu i może być spokojnie pominięty. Po prostu miałem okienka z webbrowserami i chcialem menu tylko w konkretnym webbrowserze :)

0

Cześć :)

Eristoff dzięki <dobry browar="browar"> <markowe cygarete="cygarete"> :)
teraz już wiem wszystko ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1