| |
|
|
- Page 1 - |
|
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 ▲ |
|
|
|
| |
|
- Page 2 - |
|
|
| Jac
Keine Ahnung. Ich hab mir das Ergebnis mittels %sMessage Mostra lassen.
Für solche Fälle nutze ich Konstantinopel [...] .
Der Trick: Gib mal oben in das Eingabefeld 32 = w ein. |
|
|
| |
|
|
|
|
@Frank: ... Hast du ne gecrackte Version?
@Jac: Eine hier nicht gestattete Frage, selbst wenn sich dahinter ein Freeware-Tool verbirgt. Ich erwähne das nicht wegen Dir, sondern per Mitlesende.
@Frank: Hook dafür ansetzen ist naturalmente Tesafilm mit dem Hammer befestigen, und es ist auch sicher nicht meine Lieblingslösung zum Thema. Nennen wir es Workaround bis eine adäquatere Lösung gepostet wurde. |
|
|
| |
|
|
|
Frank Abbing |
@Frank: Hook dafür ansetzen ist naturalmente Tesafilm mit dem Hammer befestigen, und es ist auch sicher nicht meine Lieblingslösung zum Thema. Nennen wir es Workaround bis eine adäquatere Lösung gepostet wurde.
Kein Grund zum Rechtfertigen. Ich liebe mitunter ja auch Brachiallösungen. Ich meine nur, es gab auch eine simple Lösung, nur finde ich sie nicht wieder...
32 scheint WM_SETCURSOR zu sein. Wirklich nicht die richtige Message. |
|
|
| |
|
|
|
Jac de Lad | @iF: Sorry, war als Scherz gemeint.
@Frank: Irgendwie kommts bei mir nicht so richtig in die Gänge. Ich raff das nicht. |
|
|
| 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 ▲ |
|
|
|
|
Detlef Jagolski | Hallo Jac,
noch ein Versuch: KompilierenMarkierenSeparieren $P+
SetErrorLevel 0
Declare hSys&
Declare appexit%
SetTrueColor 1
WindowStyle $003F
WindowTitle DesignForm
Window %maxX + 5,114 - 498,415
Cls 500
var html&=Create(HTMLWin,%hWnd,D:Anpassen...........................INDEX.HTM,1,0,0,600,400)
SetWindowPos %hwnd = 207,114 - 498,415;0
WhileNot appexit%
WaitInput
If %key = 2
appexit%=1
ElseIf %key = 4
Fenstergröße
ElseIf %key = 5
Hilfe
EndIf
Wend
Ich glaube Du muss die HTML Seite Anpassen.
Saluto
Detlef |
|
|
| XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 12.07.2008 ▲ |
|
|
|
|
| Über JS, auch interessant. Geht aber weit aus kürzer! Leider kommt er wenn er darüber das Kontextmenü erledigt schlecht wieder raus aus der Seite ins Programm. (zumindest ohne ocx) |
|
|
| |
|
|
|
Detlef Jagolski | Hallo IF,
habe ich nur schnell aus dem Bestand zusammen Kopiert.
Saluto
Detlef |
|
|
| XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 12.07.2008 ▲ |
|
|
|
|
Andreas Miethe
| KompilierenMarkierenSeparieren $H messages.ph
$H Windows.ph
declare html&,subwin&
cls
html&=Create(HTMLWin,%hWnd,http://www.ampsoft.eu,1,0,0,600,400)
while HTMLWin(GetBusy,html&)
Wend
~EnumChildWindows(html&,ProcAddr(GetServerWindow,2),0)
SubClass subwin&,1
while 1
waitinput
endwhile
SubClassProc
If SubClassMessage(subwin&,~wm_contextmenu)
settext %hwnd,Time$(0)+:+Time$(1)
Set(WinProc,0)
endif
endproc
Proc GetServerWindow
parameters wnd&,lparam&
If ClassOf(wnd&) = Shell Embedding
~EnumChildWindows(wnd&,ProcAddr(GetServerWindow,2),0)
elseIf ClassOf(wnd&) = Shell DocObject View
~EnumChildWindows(wnd&,ProcAddr(GetServerWindow,2),0)
elseIf Classof(wnd&) = Internet Explorer_Server
Subwin& = wnd&
Windowtitle server gefunden
Endif
Return 1
EndProc
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 13.07.2008 ▲ |
|
|
|
|
Jac de Lad | @Andreas: Danke, die Lösung gefällt mir am besten.
@Detlef: Auch danke, aber irgendwie verstehe Io l' Ansatz nicht. Ich vermute aber, das hier die Webseite den Rechtklick bearbeitet. |
|
|
| 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 | 13.07.2008 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Leute!
Der Vollständigkeit halber, auch wenn es den meisten wohl zu kompliziert ist ... Eine Möglichkeit, das Kontextmenü eines WebBrowser-Controls zu ändern ist die Erstellung eines eigenen IDocHostUIHandler-Interfaces, das anstelle des Originals eingesetzt wird. Dieses Interface enthält u.A. die Methode ShowContextMenu, per die eine Profan-Proc verwendet werden kann: (Voraussetzung: OCX-Package 2 + XProfan 10) KompilierenMarkierenSeparierenwindow 10,10-500,400
usermessages 16
$H Messages.ph
$H Windows.ph
$H ocx2.ph
$I ocx2.inc
ocxInit()
declare VTable#
dim VTable#,76
proc CreateIMD---------------------------CreateInterfaceMethodDummy
var a&=~GlobalAlloc(0,16)
long a&,0=-1192457387,&(2),-1034033781,&(1)*4+4
return a&
endproc-------------------------------------------------------------
proc ShowContextMenu--------------------------------ShowContextMenu
parameters This&,ID&,Point&,IUnknown&,IDispatch&
~ScreenToClient(%hwnd,Point&)
createmenu
case ID&=0:appendmenu 101,Kontextmenü leerer Bereich
case ID&=1:appendmenu 102,Kontextmenü Bild
case ID&=4:appendmenu 103,Kontextmenü markierter Text
case ID&=5:appendmenu 104,Kontextmenü Link
trackmenu long(Point&,0),long(Point&,4)
~RedrawWindow(%hwnd,0,0,$485)
return 0
endproc-------------------------------------------------------------
proc InitICustomDoc----------------------IDocHostUIHandler-Interface
parameters Object&
long VTable#,0= CreateIMD(2,1)QueryInterface
long VTable#,4= CreateIMD(0,0)AddRef
long VTable#,8= CreateIMD(0,0)Release
long VTable#,12=procaddr(ShowContextMenu,5)
long VTable#,16=CreateIMD(1,1)GetHostInfo
long VTable#,20=CreateIMD(5,1)ShowUI
long VTable#,24=CreateIMD(0,0)HideUI
long VTable#,28=CreateIMD(0,1)UpdateUI
long VTable#,32=CreateIMD(1,1)EnableModeless
long VTable#,36=CreateIMD(1,1)OnDocWindowActivate
long VTable#,40=CreateIMD(1,1)OnFrameWindowActivate
long VTable#,44=CreateIMD(3,1)ResizeBorder
long VTable#,48=CreateIMD(3,1)TranslateAccelerator
long VTable#,52=CreateIMD(2,1)GetOptionKeyPath
long VTable#,56=CreateIMD(2,1)GetDropTarget
long VTable#,60=CreateIMD(1,1)GetExternal
long VTable#,64=CreateIMD(3,1)TranslateUrl
long VTable#,68=CreateIMD(2,1)FilterDataObject
long VTable#,72=VTable#
var IFace&=VTable#+72
var Document&=ocxGet(Object&,Document)
var ICustomDoc&=QueryInterface(Document&,{3050f3f0-98b5-11cf-bb82-00aa00bdce0b})
CallMethod(ICustomDoc&,3,IFace&)--ICustomDoc::SetUIHandler
ocxRelease(ICustomDoc&,Document&)
endproc-------------------------------------------------------------
declare Control&
var URL$=C:Test.html---Irgendeine HTML(!)-Datei
var Object&=ocxCreate(Url$,%hwnd,10,10,400,300,$50b00000,addr(Control&))
InitICustomDoc(Object&)
while 1
waitinput
case %umessage=16:break
settext %hwnd,str$(%menuitem)
endwhile
ocxRelease(Object&)
destroywindow(Control&)
ocxDeInit()
PS: Die Proc CreateIMD erzeugt per Embedded ASM eine Art Dummy, damit nicht per jede Methode eine eigene Proc eingebaut werden muß. Genauere Beschreibung und weitere Demos zum Thema Event-Handling (Ereignis-Auswertung) werden im OCX-Package 3 enthalten sein, so es denn jemals fertig wird und unter XProfan 11 lauffähig ist
SeeYou Pascal |
|
|
| |
|
|
|
Frank Abbing | Hehe, klasse! |
|
|
| |
|
|
|
| Mir kribbeln die Finger seit er von ocx3.inc spricht...
Hab das naturalmente (auch zur Vlstndgkt) mit hier aufgenommen: [...] |
|
|
| |
|
|