Page 1 sur 1

Comment désactiver le bouton droit dans un webgadget[Résolu]

Publié : mer. 23/avr./2008 6:07
par Stefou
Salut à tous

J'utilise un webgadget et je ne voudrais pas voir apparaitre les menu accessible avec le bouton droit. Est ce que quelqu'un sait comment faire ?

Merci d'avance et bonne journée

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 640, 480, "WebGadget Edit", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  If CreateGadgetList(WindowID(0))
    
    WebGadget(0, 5, 5, 630, 340, "www.google.com")
    
    Repeat
      EventID = WaitWindowEvent()
    Until EventID=#WM_CLOSE    
  EndIf
EndIf

Publié : mer. 23/avr./2008 16:56
par gnozal
Il y a peut-être plus élégant mais çà a l'air de fonctionner :

Code : Tout sélectionner

;
; Disable WebGadget RightClick [Using a hook]
;
Procedure DisableWebGadgetRightClick(nCode.l, wParam.l, lParam.l)
  Protected Cursor.POINT, WindowRect.RECT
  Shared WebGadgetHandle.l
  If wParam = #WM_RBUTTONDOWN
    If IsWindowVisible_(WebGadgetHandle)
      GetCursorPos_(@Cursor)
      GetWindowRect_(WebGadgetHandle, @WindowRect)
      If PtInRect_(@WindowRect, Cursor\x, Cursor\y)
        ProcedureReturn #True
      EndIf
    EndIf
  EndIf
  ProcedureReturn #False
EndProcedure
;
If OpenWindow(0,0,0,600,600, "Disable WebGadget right-click", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
    WebGadgetHandle = WebGadget(1,0,0,600,400,"http://www.purebasic.com")
    ;
    hHook = SetWindowsHookEx_(#WH_MOUSE, @DisableWebGadgetRightClick(), GetModuleHandle_(0), GetWindowThreadProcessId_(WindowID(0),0))
    ;
    StringGadget(2, 0, 401, 600, 200, "Right-click still works here !")
  EndIf
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break  
    EndSelect
  ForEver
  UnhookWindowsHookEx_(hHook)
EndIf

Publié : mer. 23/avr./2008 18:24
par nico
En un peu plus élégant:

Code : Tout sélectionner

;
; Disable WebGadget RightClick [Using a hook]
;
Global hHook.l

ProcedureDLL DisableWebGadgetRightClick(nCode, wParam, lParam)
  Static *MOUSESTRUCT.MOUSEHOOKSTRUCT,Name.s

  If nCode < 0
    ProcedureReturn CallNextHookEx_(hHook, nCode, wParam, lParam)
  EndIf
 
   *MOUSESTRUCT.MOUSEHOOKSTRUCT = lParam

   Select wParam
         Case #WM_RBUTTONUP,#WM_RBUTTONDOWN
            Name=Space(100)
            GetClassName_(*MOUSESTRUCT\hwnd,@Name,99)
            If Name="Internet Explorer_Server"
                ProcedureReturn 1
            EndIf 
   EndSelect
   
   ProcedureReturn CallNextHookEx_(hHook, nCode, wParam, lParam)
EndProcedure 
;
If OpenWindow(0,0,0,600,600, "Disable WebGadget right-click", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
    WebGadgetHandle = WebGadget(1,0,0,600,400,"http://www.purebasic.com")
    ;
    hHook = SetWindowsHookEx_(#WH_MOUSE, @DisableWebGadgetRightClick(), GetModuleHandle_(0), GetWindowThreadProcessId_(WindowID(0),0))
    ;
    StringGadget(2, 0, 401, 600, 200, "Right-click still works here !")
  EndIf
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break 
    EndSelect
  ForEver
  UnhookWindowsHookEx_(hHook)
EndIf

Publié : mer. 23/avr./2008 19:21
par Stefou
:D Je vous aime les gars :D

Et en plus sa marche dans mon code aussi ! :D

Publié : jeu. 24/avr./2008 10:58
par gnozal
nico a écrit :En un peu plus élégant
Oui, c'est mieux.
Une restriction cependant : çà ne fonctionnera pas avec #PB_Web_Mozilla.