Italia
Foro

Kontextmenü von HTMLWin verhindern

 

Jac
de
Lad
Ich hab schon alles probiert, was mir dazu eingefallen ist. Weiß jemand, wie ich das Kontextmenü in einem HTMLWin verhindern kann (Rechtsklick) und stattdessen zum Beispiel ein eigenes Mostra kann? Ich denke mal, das geht circa die subclassproc, aber ich habs einfach nicht hingekriegt.

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
12.07.2008  
 




Jac
de
Lad

KompilierenMarkierenSeparieren
declare html&
cls
html&=Create(HTMLWin,%hWnd,http://gamsav.xprofan.com/Gamsav,1,0,0,600,400)
SubClass html&,1

while 1

    waitinput

endwhile

SubClassProc

    If SubClassMessage(html&,32)

        settext %hwnd,Str$(&GetTickCount)
        Set(WinProc,0)

    endif

endproc


Damit lässt sich das zwar abfangen und eventuell auch bearbeiten, aber das Kontextmenü erscheint trotzdem...
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
12.07.2008  
 




Frank
Abbing
Du subclasst das falsche Fenster. Das Control ist ein Verbund mehrerer Einheiten. WM_CONTEXTMENU wird bei mir als Fensterclass InternetExplorer_Server angezeigt.
Irgendwo hatte ich da mal eine Lösung, finde sie aber nicht mehr auf Anhieb.
 
12.07.2008  
 




Jac
de
Lad
Das seltsame ist ja, dass die Message 32 bei Rechtsklick gesendet und abgefangen wird. Ich nehme mal an, dass die also ne andere Funktion hat.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
12.07.2008  
 




Frank
Abbing
32? Welche Konstante ist das?
 
12.07.2008  
 




Jac
de
Lad
Keine Ahnung. Ich hab mir das Ergebnis mittels %sMessage Mostra lassen.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
12.07.2008  
 




Frank
Abbing
Lade deine Testexe mal mit meinem Botschafter. Dann siehst du klarer.
 
12.07.2008  
 




Detlef
Jagolski
Hallo Jac,

ich mache das immer so:
KompilierenMarkierenSeparieren
 $P+
SetErrorLevel 0
Declare appexit%
Declare Edit1&
 $H WINDOWS.PH
 $H MESSAGES.PH
Def EnableMenuItem(3) !USER32,EnableMenuItem

SubClassProc

    If SubClassMessage(Edit1&, ~WM_CONTEXTMENU)

        ConTextMenu Edit1&, hConTextMenu&, LoWord(&sLParam), HiWord(&sLParam)
        Set(WinProc, 0)

    ElseIf SubClassMessage(Edit1&, ~WM_COMMAND)

        WMCommand Edit1&, &sWParam
        Set(WinProc, 0)

    EndIf

EndProc

Proc ConTextMenu

    Parameters handle&, hConTextMenu&, X&, Y&

    If SendMessage(handle&,~EM_GETMODIFY,0,0) = 0

        EnableMenuItem (hConTextMenu&,0,~MF_BYPOSITION | ~MF_GRAYED)

    Else

        EnableMenuItem (hConTextMenu&,0,~MF_BYPOSITION | ~MF_ENABLED)

    EndIf

    If GetClip$() =

        EnableMenuItem (hConTextMenu&,4,~MF_BYPOSITION | ~MF_GRAYED)

    Else

        EnableMenuItem (hConTextMenu&,4,~MF_BYPOSITION | ~MF_ENABLED)

    EndIf

    IfNot HiWord(SendMessage(handle&,~EM_GETSEL,0,0)) = LoWord(SendMessage(handle&,~EM_GETSEL,0,0))

        EnableMenuItem (hConTextMenu&,2,~MF_BYPOSITION | ~MF_ENABLED)
        EnableMenuItem (hConTextMenu&,3,~MF_BYPOSITION | ~MF_ENABLED)
        EnableMenuItem (hConTextMenu&,5,~MF_BYPOSITION | ~MF_ENABLED)

    Else

        EnableMenuItem (hConTextMenu&,2,~MF_BYPOSITION | ~MF_GRAYED)
        EnableMenuItem (hConTextMenu&,3,~MF_BYPOSITION | ~MF_GRAYED)
        EnableMenuItem (hConTextMenu&,5,~MF_BYPOSITION | ~MF_GRAYED)

    EndIf

    If GetText$(handle&) =

        EnableMenuItem (hConTextMenu&,7,~MF_BYPOSITION | ~MF_GRAYED)

    Else

        EnableMenuItem (hConTextMenu&,7,~MF_BYPOSITION | ~MF_ENABLED)

    EndIf

    ~TrackPopupMenu(hConTextMenu&, ~TPM_LEFTALIGN | ~TPM_RIGHTBUTTON, X&, Y&, 0, handle&, 0)

EndProc

Proc WMCommand

    Parameters handle&, wParam&

    If wParam& = 1000

        SendMessage(handle&,~EM_UNDO,0,0)

    ElseIf wParam& = 1002

        SendMessage(handle&,~WM_CUT,0,0)

    ElseIf wParam& = 1003

        SendMessage(handle&,~WM_COPY,0,0)

    ElseIf wParam& = 1004

        SendMessage(handle&,~WM_PASTE,0,0)

    ElseIf wParam& = 1005

        SendMessage(handle&,~WM_CLEAR,0,0)

    ElseIf wParam& = 1007

        SetFocus(handle&)
        SendMessage(handle&,~EM_SETSEL,0,-1)

    EndIf

EndProc

SetTrueColor 1
WindowStyle $003F
WindowTitle DesignForm
Window %maxX + 5,114 - 498,415
Cls 500
var Rueckgaengig$    = Das ist jetzt das neue Menü
var Ausschneiden$    = Ausschneiden
var Kopieren$        = Kopieren
var Einfuegen$       = Einfügen
var Loeschen$        = Löschen
var AllesMarkieren$  = Alles markieren
var hConTextMenu& = ~CreatePopupMenu()
~AppendMenu(hConTextMenu&, ~MF_STRING,1000,Addr(Rueckgaengig$))
~AppendMenu(hConTextMenu&, ~MF_SEPARATOR,101,0)
~AppendMenu(hConTextMenu&, ~MF_STRING,1002,Addr(Ausschneiden$))
~AppendMenu(hConTextMenu&, ~MF_STRING,1003,Addr(Kopieren$))
~AppendMenu(hConTextMenu&, ~MF_STRING,1004,Addr(Einfuegen$))
~AppendMenu(hConTextMenu&, ~MF_STRING,1005,Addr(Loeschen$))
~AppendMenu(hConTextMenu&, ~MF_SEPARATOR,106,0)
~AppendMenu(hConTextMenu&, ~MF_STRING,1007,Addr(AllesMarkieren$))
UseFont MS Sans Serif,13,0,0,0,0
SetDialogFont 1
Edit1&=CreateEdit(%hwnd,,117,78,121,21)
SubClass Edit1&, 1
SetWindowPos %hwnd = 207,114 - 498,415;0

WhileNot appexit%

    WaitInput

    If %key = 2

        appexit%=1

    ElseIf GetFocus(Edit1&)

    ElseIf %key = 4

        Fenstergröße

    ElseIf %key = 5

        Hilfe

    EndIf

Wend

SubClass Edit1&, 0

Saluto

Detlef

P.S. WM_SETCURSOR = 32
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
12.07.2008  
 




Jac
de
Lad
@Frank: Öhh, da muss ich mir das Teil erstmal ziehen. Hast du ne gecrackte Version?

@Detlef: Neeee, das hab ich auch gedacht, aber das HTMLWin sendet kein WM_ContextMenu, hehehe...
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
12.07.2008  
 



@Jac: Schau Dir einmal das hier an:
KompilierenMarkierenSeparieren
 
12.07.2008  
 




Jac
de
Lad
Geht fest. Funktioniert also...
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
12.07.2008  
 




Frank
Abbing

@Frank: Öhh, da muss ich mir das Teil erstmal ziehen. Hast du ne gecrackte Version?


Wie, gecrackt? Der Botschafter ist ein Freeware-Tool von mir, um alle Messages eines Programms aufzulisten.


Geht fest. Funktioniert also...


Sofort einen Hook setzen? Bin sicher, es gab noch eine systemunlastige Möglichkeit, finde sie aber nicht...
 
12.07.2008  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.947 Views

Untitledvor 0 min.
Rainer Hoefs25.06.2023
Peter Max Müller17.10.2017
HofK08.09.2016
Paul Glatz01.04.2015
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie