Das WebBrowser-Control lässt sich sehr leicht in eigene Anwendungen einbinden und auch anwenden. Lästig ist aber oftmals, daß das Standard PopUp-Menü angezeigt wird, wenn man mit der rechten Maustaste in das "Explorer-Fenster" klickt. Der nachfolgende Tipp zeigt, wie man mittels Subclassing gezielt den Rechtsklick abfragen, und somit das Anzeigen des PopUp-Menüs abschalten kann. Fügen Sie zunächst den nachfolgenden Code in ein Modul ein (keine Form)! Option Explicit ' zunächst die benötigten Deklarationen Public Declare Function SetWindowsHookEx Lib "user32" _ Alias "SetWindowsHookExA" ( _ ByVal idHook As Long, _ ByVal lpfn As Long, _ ByVal hmod As Long, _ ByVal dwThreadId As Long) As Long Public Declare Function UnhookWindowsHookEx Lib "user32" ( _ ByVal hHook As Long) As Long Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long Private Declare Function CallNextHookEx Lib "user32" ( _ ByVal hHook As Long, _ ByVal nCode As Long, _ ByVal wParam As Long, _ lparam As Any) As Long Private Declare Function GetClassName Lib "user32" _ Alias "GetClassNameA" ( _ ByVal hwnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Public Const WM_RBUTTONUP = &H205 Public Const WH_MOUSE = 7 Public Type POINTAPI x As Long y As Long End Type Public Type MOUSEHOOKSTRUCT pt As POINTAPI hwnd As Long wHitTestCode As Long dwExtraInfo As Long End Type Public glbMausProc As Long ' Maus-Ereignisse abfangen Public Function wbMausProc(ByVal nCode As Long, _ ByVal wParam As Long, MOUSEHOOK As MOUSEHOOKSTRUCT) As Long Dim sBuffer As String Dim sClassName As String Dim Result As Long ' rechte Maustaste wird losgelassen With MOUSEHOOK If (nCode >= 0 And wParam = WM_RBUTTONUP) Then sBuffer = Space(255) ' Klassenname des Browser-Fensters sClassName = "Internet Explorer_Server" ' Klassennamen des Fensters ermitteln, in welchem ' der Mausklick erfolgte Result = GetClassName(.hwnd, sBuffer, Len(sBuffer)) If Result > 0 Then If Left$(sBuffer, Result) = sClassName Then ' Klick erfolgte im Browser-Fenster wbMausProc = 1 Exit Function End If End If End If End With ' Mausereignis "weiterleiten" wbMausProc = CallNextHookEx(glbMausProc, nCode, wParam, _ MOUSEHOOK) End Function Und in den Codeteil der Form, welches das WebBrowser-Control enthält, fügen Sie dann nachfolgenden Code ein: Option Explicit Private Sub Form_Load() ' Windows benachrichtigen, daß Maus-Ereignisse an "unsere" ' wbMausProc geleitet werden sollen glbMausProc = SetWindowsHookEx(WH_MOUSE, _ AddressOf wbMausProc, App.hInstance, _ GetCurrentThreadId) End Sub Private Sub Form_Unload(Cancel As Integer) ' "Nachrichten-Umleitung" wieder aufheben UnhookWindowsHookEx glbMausProc End Sub Wie funktioniert's nun genau? Dieser Tipp wurde bereits 18.180 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |