| Ratón Hook Rechte Ratón HTML Control sperren
{$cleq}
{$compiler x11rc8}
{$runtime x11rc8}
windowStyle 512 | 8
cls
mensajes de los usuarios 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
seleccionar uMessage
caseof wm_close
romper
EndSelect
}
unhookWindowsHookEx(hMyMHook)
end
hpMyMH(long _msg,_wp,_lp){
seleccionar _wp
caseof WM_RBUTTONDOWN
volver true
EndSelect
volver falso
}
sin Hook: Andreas Miethe
$H messages.ph
$H Windows.ph
declarar html&,subwin&
cls
html&=Crear(HTMLWin,%hWnd,http://www.ampsoft.eu,1,0,0,600,400)
mientras que HTMLWin(GetBusy,html&)
Wend
~EnumChildWindows(html&,ProcAddr(GetServerWindow,2),0)
SubClass subwin&,1
mientras que 1
waitinput
endwhile
SubClassProc
If SubClassMessage(subwin&,~wm_contextmenu)
settext %hwnd,Time$(0)+:+Time$(1)
Conjunto(WinProc,0)
endif
ENDPROC
Proc GetServerWindow
parámetros 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
Volver 1
ENDPROC
por OCX Uwe Pascal Niemeier
¡Hola Personas! Der Vollständigkeit halber, auch si el meisten wohl a kompliziert es ... Un Möglichkeit, el Kontextmenü uno WebBrowser-Controls a ändern Es el Erstellung uno eigenen IDocHostUIHandler-Interfaces, el anstelle des Originals eingesetzt se. Dieses Interface enthält u.A. el método ShowContextMenu, para el una Profano-Proc verwendet voluntad kann: (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()
declarar VTable#
dim VTable#,76
proc CreateIMD---------------------------CreateInterfaceMethodDummy
var a&=~GlobalAlloc(0,16)
long a&,0=-1192457387,&(2),-1034033781,&(1)*4+4
volver a&
ENDPROC-------------------------------------------------------------
proc ShowContextMenu--------------------------------ShowContextMenu
parámetros This&,ID&,Point&,IUnknown&,IDispatch&
~ScreenToClient(%hwnd,Point&)
createmenu
caso ID&=0:appendmenu 101,Kontextmenü leerer Zona
caso ID&=1:appendmenu 102,Kontextmenü Bild
caso ID&=4:appendmenu 103,Kontextmenü markierter Texto
caso ID&=5:appendmenu 104,Kontextmenü Link
trackmenu long(Point&,0),long(Point&,4)
~RedrawWindow(%hwnd,0,0,$485)
volver 0
ENDPROC-------------------------------------------------------------
proc InitICustomDoc----------------------IDocHostUIHandler-Interface
parámetros 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-------------------------------------------------------------
declarar Control&
var URL$=C:Test.html---Irgendeine HTML(!)-Expediente
var Object&=ocxCreate(Url$,%hwnd,10,10,400,300,$50b00000,addr(Control&))
InitICustomDoc(Object&)
mientras que 1
waitinput
caso %umessage=16:romper
settext %hwnd,str$(%menuitem)
endwhile
ocxRelease(Object&)
destroywindow(Control&)
ocxDeInit()
PS: El Proc CreateIMD producido por Embedded ASM una Art Dummy, así no para jede Método una propio Proc se instalará muß. Genauere Descripción y weitere Demos para Thema Event-Handling (Ereignis-Auswertung) voluntad en el OCX-Package 3 enthalten ser, así lo porque jemals fertig se y bajo XProfan 11 lauffähig es SeeYou Pascal |
|