| souris Hook Rechte souris HTML Contrôle sperren
{$cleq}
{$compiler x11rc8}
{$runtime x11rc8}
windowStyle 512 | 8
cls
messages de l'utilisateur 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
sélectionner uMessage
caseof wm_close
pause
EndSelect
}
unhookWindowsHookEx(hMyMHook)
end
hpMyMH(long _msg,_wp,_lp){
sélectionner _wp
caseof WM_RBUTTONDOWN
return vrai
EndSelect
return faux
}
sans Hook: Andreas Miethe
$H messages.ph
$H Windows.ph
declare html&,subwin&
cls
html&=Créer(HTMLWin,%hWnd,http://www.ampsoft.eu,1,0,0,600,400)
tandis que HTMLWin(GetBusy,html&)
Wend
~EnumChildWindows(html&,ProcAddr(GetServerWindow,2),0)
SubClass subwin&,1
tandis que 1
waitinput
endwhile
SubClassProc
Si SubClassMessage(subwin&,~wm_contextmenu)
settext %hwnd,Time $(0)+:+Time $(1)
Set(WinProc,0)
endif
endproc
Proc GetServerWindow
parameters wnd&,lparam&
Si 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 trouvé
Endif
Retour 1
ENDPROC
per OCX Uwe Pascal Niemeier
allô gens! qui Vollständigkeit halber, aussi si es den meisten wohl trop compliqué ist ... une Possibilité, cela Kontextmenü eines WebBrowser-Controls trop changement ist qui Erstellung eines eigenen IDocHostUIHandler-Interfaces, cela anstelle des Originals eingesetzt wird. cet Interface contient u.A. la méthode ShowContextMenu, pour qui une Profan-Proc verwendet volonté peux: (Voraussetzung: OCX-Package 2 + XProfan 10)window 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
cas ID&=0:appendmenu 101,Kontextmenü leerer Bereich
cas ID&=1:appendmenu 102,Kontextmenü Bild
cas ID&=4:appendmenu 103,Kontextmenü markierter Text
cas 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(!)-Dossier
var Object&=ocxCreate(Url$,%hwnd,10,10,400,300,$50b00000,addr(Control&))
InitICustomDoc(Object&)
tandis que 1
waitinput
cas %umessage=16:pause
settext %hwnd,str$(%menuitem)
endwhile
ocxRelease(Object&)
destroywindow(Control&)
ocxDeInit()
PS: qui Proc CreateIMD erzeugt per Embedded ASM une Art Dummy, avec cela pas pour chacun Methode une eigene Proc incorporé volonté doit. Genauere Beschreibung et weitere Demos zum Thema Event-Handling (Ereignis-Auswertung) volonté im OCX-Package 3 enthalten son, so es car jamais fertig wird et sous XProfan 11 courir ist SeeYou Pascal |
|