Foro | | | | Frank Tretter | Bin neu hier y el es mi erste Cuestión. Yo quería me selber una pequeña Navegador remendar y habe auch ya viel en el Netz dafür gefunden. Mein Programa benutzt IWebBrowser2.ph. Das Demo como el Ejemplo esta war se ejecuta auch bien. Nun möchte Yo aber el Menü erweitern y el Befehle como Marca, Kopieren einfügen.
Leider lässt el erzeugte Browserfenster auch no el Tastenkompination STRG+A a. Hoffe lo kann me alguien helfen y zeigen cómo hacerlo Menü erweitert. Mit el Befehlen AppendMenuBar komm Yo klar, pero no con el Procedure CallMethod el en el Demo benutzt wir.
Hier el Demo KompilierenMarcaSeparación $H c:XProfan 8.0INCLUDEWindows.ph
$H c:XProfan 8.0INCLUDEIWebBrowser2.ph
Declare a$, a&, a#, b#, Error&, ATLdll&, WebControl&, IUnknown&, IWebBrowser&
Dim a#,1024
Dim b#,256
Def CLSIDFromString(2) !ole32,CLSIDFromString
Def AtlAxWinInit(0) !atl.dll,AtlAxWinInit
Def AtlAxGetControl(2) !atl.dll,AtlAxGetControl
Proc CallMethod-----------------------------------------------Interface-Methoden aufrufen
Parameters IFace&,Method&
Declare VTable&
VTable&=long(IFace&,0)
Method&=long(VTable&,Method&*4)
case %pcount=2:return call( Method&,IFace& )
case %pcount=3:return call( Method&,IFace&,&(3) )
case %pcount=4:return call( Method&,IFace&,&(3),$(4) )
case %pcount=5:return call( Method&,IFace&,&(3),&(4),&(5) )
case %pcount=6:return call( Method&,IFace&,&(3),&(4),&(5),&(6) )
case %pcount=7:return call( Method&,IFace&,&(3),&(4),&(5),&(6),&(7) )
case %pcount=8:return call( Method&,IFace&,&(3),&(4),&(5),&(6),&(7),&(8) )
EndProc
proc WebOpen-------------------------------------------------------------Irgendwas öffnen
Parameters X$
~RedrawWindow(%hwnd,0,0,$485)
casenot len(x$):return
~MultiByteToWideChar(0,0,addr(x$),-1,a#,250)
clear b#
CallMethod(IWebbrowser&,~Navigate,a#,b#,b#,b#,b#)
EndProc
*****************************************************************************************
windowstyle 16+8+4+2+1
window 10,10-700,500
usermessages 16
ATLdll&=usedll(atl.dll)
AtlAxWinInit()
WebControl&=control(AtlAxWin,Shell.Explorer.1,$50000000,0,0,0,0,%hwnd,0,0,$200)
~GetClientRect(%hwnd,b#)
setwindowpos WebControl&=0,0-long(b#,8),long(b#,12)
Werte von Error& und IUnknown& im Fehlerfall ausgeben lassen!
Error&=AtlAxGetControl(WebControl&,addr(IUnknown&))
IWebBrowser2-Interface ermöglicht Kontrolle über das WebControl
clear a#,b#
a$=~IID_IWebBrowser2
~MultiByteToWideChar(1,1,addr(a$),-1,a#,80)-------------ANSI zu WideChar
CLSIDFromString(a#,b#)----------------------------------String zu Interface-ID
Error&=CallMethod(IUnknown&,~QueryInterface,b#,addr(IWebBrowser&))
--damit es beim Start nicht so leer aussieht
CallMethod(IWebBrowser&,~GoHome)
--------------------------------------------------------------------FensterMenü
appendmenubar 101,Zurück
appendmenubar 102,Vorwärts
appendmenubar 103,Abbrechen
appendmenubar 104,Aktualisieren
appendmenubar 105,Startseite
appendmenubar 106,Suchen
appendmenubar 107,Datei öffnen
appendmenubar 108,Ordner öffnen
appendmenubar 109,URL öffnen
--------------------------------------------------------------------Eingabeschleife
while 1
if %key=4----------------------------------------------Grössenänderung des Fensters
~GetClientRect(%hwnd,b#)
setwindowpos WebControl&=0,0-long(b#,8),long(b#,12)
elseif menuitem(101)-----------------------------------Zurück
CallMethod(IWebBrowser&,~GoBack)
elseif menuitem(102)-----------------------------------Vorwärts
CallMethod(IWebBrowser&,~GoForward)
elseif menuitem(103)-----------------------------------Abbrechen
CallMethod(IWebBrowser&,~Stop)
elseif menuitem(104)-----------------------------------Aktualisieren
CallMethod(IWebBrowser&,~Refresh)
elseif menuitem(105)-----------------------------------Startseite
CallMethod(IWebBrowser&,~GoHome)
elseif menuitem(106)-----------------------------------Suchen
CallMethod(IWebBrowser&,~GoSearch)
elseif menuitem(107)-----------------------------------Datei öffnen
a$=loadfile$(Bitte Bild oder HTML-Datei wählen,*.*)
WebOpen a$
elseif menuitem(108)-----------------------------------Ordner öffnen
a$=choosedir$(Bitte Ordner wählen)
WebOpen a$
elseif menuitem(109)-----------------------------------URL öffnen
a$=input$(Bitte Web-Adresse eingeben:,URL:,)
WebOpen a$
endif----------------------------------------------------------------------
while 1----------------------------Warten, bis Aktion ausgeführt ist
sleep 200
CallMethod(IWebBrowser&,~get_Busy,addr(a&))
casenot a&:break
endwhile------------------------------------------------------------
waitinput
case %umessage=16:break-----------Ende
endwhile-----------------------------------------------------------------Ende Eingabeschleife
destroywindow(WebControl&)
case ATLdll&:freedll ATLdll&
End
Saludo Fränki |
| | | Seit 2008 endlich XProfan 10, ist einfach klasse | 19.02.2007 ▲ |
| |
| | | Also para Ersten solltest Usted Su Quellcode auch con KompilierenMarcaSeparación ummanteln (el es en allen Foren üblich) - Codes con Smilies drin se se keiner anschauen. Usted puede Su Posting sí bearbeiten. Und entonces wäre lo todavía hilfreich si el zusätzliche PH auch como DateiAnhang beifügst - porque esta gehört no para XProfanumfang.
Wir wissen auch no welche XProfanversion Usted nutzt (hast sí nix angegeben) - el könntest Usted aber auch en Su Signatur escribir.
El Bereiche a# y b# voluntad no disposed .
Bis denne.
@Admins: Yo finde esta Postingform kommt en letzter Tiempo muy oft antes - wir debería antes el Puesto una Vorstellungsgespräch führen - inform uno Erklärungsseite howTo Post. Yo werd el veces zusammenbasteln. |
| | | | |
| | | | |
| | Frank Tretter | Sorry, saber mich como no tan de. Yo habe XProfan 8. iwebbrowser2.ph wurde de Usted ya hier adecuado, Gracias.
Jetzt versuch Yo el con el Code todavía una vez. KompilierenMarcaSeparación $H c:XProfan 8.0INCLUDEWindows.ph
$H c:XProfan 8.0INCLUDEIWebBrowser2.ph
Declare a$, a&, a#, b#, Error&, ATLdll&, WebControl&, IUnknown&, IWebBrowser&
Dim a#,1024
Dim b#,256
Def CLSIDFromString(2) !ole32,CLSIDFromString
Def AtlAxWinInit(0) !atl.dll,AtlAxWinInit
Def AtlAxGetControl(2) !atl.dll,AtlAxGetControl
Proc CallMethod-----------------------------------------------Interface-Methoden aufrufen
Parameters IFace&,Method&
Declare VTable&
VTable&=long(IFace&,0)
Method&=long(VTable&,Method&*4)
case %pcount=2:return call( Method&,IFace& )
case %pcount=3:return call( Method&,IFace&,&(3) )
case %pcount=4:return call( Method&,IFace&,&(3),$(4) )
case %pcount=5:return call( Method&,IFace&,&(3),&(4),&(5) )
case %pcount=6:return call( Method&,IFace&,&(3),&(4),&(5),&(6) )
case %pcount=7:return call( Method&,IFace&,&(3),&(4),&(5),&(6),&(7) )
case %pcount=8:return call( Method&,IFace&,&(3),&(4),&(5),&(6),&(7),&(8) )
EndProc
proc WebOpen-------------------------------------------------------------Irgendwas öffnen
Parameters X$
~RedrawWindow(%hwnd,0,0,$485)
casenot len(x$):return
~MultiByteToWideChar(0,0,addr(x$),-1,a#,250)
clear b#
CallMethod(IWebbrowser&,~Navigate,a#,b#,b#,b#,b#)
EndProc
*****************************************************************************************
*****************************************************************************************
windowstyle 16+8+4+2+1
window 10,10-700,500
usermessages 16
ATLdll&=usedll(atl.dll)
AtlAxWinInit()
WebControl&=control(AtlAxWin,Shell.Explorer.1,$50000000,0,0,0,0,%hwnd,0,0,$200)
~GetClientRect(%hwnd,b#)
setwindowpos WebControl&=0,0-long(b#,8),long(b#,12)
Werte von Error& und IUnknown& im Fehlerfall ausgeben lassen!
Error&=AtlAxGetControl(WebControl&,addr(IUnknown&))
IWebBrowser2-Interface ermöglicht Kontrolle über das WebControl
clear a#,b#
a$=~IID_IWebBrowser2
~MultiByteToWideChar(1,1,addr(a$),-1,a#,80)-------------ANSI zu WideChar
CLSIDFromString(a#,b#)----------------------------------String zu Interface-ID
Error&=CallMethod(IUnknown&,~QueryInterface,b#,addr(IWebBrowser&))
--damit es beim Start nicht so leer aussieht
CallMethod(IWebBrowser&,~GoHome)
--------------------------------------------------------------------FensterMenü
appendmenubar 101,Zurück
appendmenubar 102,Vorwärts
appendmenubar 103,Abbrechen
appendmenubar 104,Aktualisieren
appendmenubar 105,Startseite
appendmenubar 106,Suchen
appendmenubar 107,Datei öffnen
appendmenubar 108,Ordner öffnen
appendmenubar 109,URL öffnen
--------------------------------------------------------------------Eingabeschleife
while 1
if %key=4----------------------------------------------Grössenänderung des Fensters
~GetClientRect(%hwnd,b#)
setwindowpos WebControl&=0,0-long(b#,8),long(b#,12)
elseif menuitem(101)-----------------------------------Zurück
CallMethod(IWebBrowser&,~GoBack)
elseif menuitem(102)-----------------------------------Vorwärts
CallMethod(IWebBrowser&,~GoForward)
elseif menuitem(103)-----------------------------------Abbrechen
CallMethod(IWebBrowser&,~Stop)
elseif menuitem(104)-----------------------------------Aktualisieren
CallMethod(IWebBrowser&,~Refresh)
elseif menuitem(105)-----------------------------------Startseite
CallMethod(IWebBrowser&,~GoHome)
elseif menuitem(106)-----------------------------------Suchen
CallMethod(IWebBrowser&,~GoSearch)
elseif menuitem(107)-----------------------------------Datei öffnen
a$=loadfile$(Bitte Bild oder HTML-Datei wählen,*.*)
WebOpen a$
elseif menuitem(108)-----------------------------------Ordner öffnen
a$=choosedir$(Bitte Ordner wählen)
WebOpen a$
elseif menuitem(109)-----------------------------------URL öffnen
a$=input$(Bitte Web-Adresse eingeben:,URL:,)
WebOpen a$
endif----------------------------------------------------------------------
while 1----------------------------Warten, bis Aktion ausgeführt ist
sleep 200
CallMethod(IWebBrowser&,~get_Busy,addr(a&))
casenot a&:break
endwhile------------------------------------------------------------
waitinput
case %umessage=16:break-----------Ende
endwhile-----------------------------------------------------------------Ende Eingabeschleife
destroywindow(WebControl&)
case ATLdll&:freedll ATLdll&
End
|
| | | Seit 2008 endlich XProfan 10, ist einfach klasse | 19.02.2007 ▲ |
| |
| | Uwe ''Pascal'' Niemeier | ¡Hola Franco!
Das WebBrowser-Control se komplett encima sogenannte COM-Interfaces gesteuert; el gilt incluso para Clipboard-Aktionen. Mit Messages (como en Edits) es como nichts a machen; dafür muss incluso una neues Interface aufgerufen voluntad. Diese Procedimiento debería helfen: KompilierenMarcaSeparación
proc CopyToClipBoard----------------------------------------------------------
declare IOleCommandTarget&,CLSID$
CLSID$={b722bccb-4e68-101b-a2bc-00aa00404770}--IID_IOleCommandTarget
~MultiByteToWideChar(1,1,addr(CLSID$),-1,a#,80)--ANSI zu WideChar
CLSIDFromString(a#,b#)---------------------------String zu Interface-ID
CallMethod(IWebBrowser&,~QueryInterface,b#,addr(IOleCommandTarget&))
CLSID$={de4ba900-59ca-11cf-9592-444553540000}--CGID_MSHTML (Kommandomodus)
~MultiByteToWideChar(1,1,addr(CLSID$),-1,a#,80)--ANSI zu WideChar
CLSIDFromString(a#,b#)---------------------------String zu Interface-ID
CallMethod(IOleCommandTarget&,4,b#,15,0,0,0)-----Exec : IDM_COPY
CallMethod(IOleCommandTarget&,~Release)----------Interface freigeben
endproc----------------------------------------------------------------------
Un Rutina para Marca reiche Todavía después de!
@ IF: Bist du sicher, dass DISPOSE al Programmende así wichig es?
HTH Pascal |
| | | | |
| | RGH | Uwe Pascal Niemeier
@ IF: Bist du sicher, dass DISPOSE al Programmende así wichig es?
En Win9x (dazu gehört auch Win ME) grundsätzlich sí, como sonst el Speicher oiftmals no antes el nächsten Neustart freigegeben se. Win2000/XP/Vista regelt el Betriebssystem en Programmende el Freigabe en aller Regel nötigenfalls incluso.
Trotz allem debería uno se angewöhnen con DIM reservierten Speicher grundsätzlich por DISPOSE otra vez freizugeben. Sollte uno dieses z.B. veces en uno Procedimiento vergessen, ha uno muy rápidamente Problemas ...
Saludo Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 20.02.2007 ▲ |
| |
| | Frank Tretter | Vielen Dank primero para rápido Ayuda. Das bringt mich ya más. Wenn Yo entonces el Rutina para el Markiern bekomm bin Yo Glücklich y lo ha me muy geholfen.
Kann por desgracia, no siempre igual antworten, bin no siempre al PC y para Programmieren fehlt como el Tiempo.
Saludo Fränki |
| | | Seit 2008 endlich XProfan 10, ist einfach klasse | 21.02.2007 ▲ |
| |
|
RespuestaThemeninformationenDieses Thema ha 4 subscriber: |