| |
|
|
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 | KompilierenMarkierenSeparierendeclare 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. |
|
|
| |
|
|
|
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? |
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
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 {$cleq}
{$compiler x11rc8}
{$runtime x11rc8}
windowStyle 512 | 8
cls
userMessages wm_eraseBkGnd,wm_close
long hMyMHook=setWindowsHookExA(7,procAddr(hpMyMH,3),hInstance,getWindowThreadProcessId(Hwnd,)),
hMyHTMLBox=create(HTMLWin,hWnd,http://gamsav.xprofan.com/Gamsav,1,,,600,400)
do {
waitinput
select uMessage
caseof wm_close
break
endSelect
}
unhookWindowsHookEx(hMyMHook)
end
hpMyMH(long _msg,_wp,_lp){
select _wp
caseof wm_rButtonDown
return true
endSelect
return /a>
}
|
|
|
| |
|
|
|
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... |
|
|
| |
|
|