Forum | | | | Frank Tretter | suis récente ici et c'est mon erste Frage. je voulais mir selber une kleinen Browser bricoler et habe aussi déjà viel im Netz pour trouvé. mon Programme benutzt IWebBrowser2.ph. cela Demo cela comme Beispiel dabei était fonctionne aussi bien. eh bien voudrais je mais cela menu erweitern et qui Befehle comment Marque, Kopieren insérer.
malheureusement peut cela erzeugte Browserfenster aussi pas qui Tastenkompination STRG+A trop. Hoffe es peux mir quelqu'un aider et montrer comment on cela menu erweitert. avec den Befehlen AppendMenuBar komm je bien sûr, mais pas avec qui Procedure CallMethod qui im Demo benutzt wir.
ici cela Demo KompilierenMarqueSéparation $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&
Fin
Salut Fränki |
| | | Seit 2008 endlich XProfan 10, ist einfach klasse | 19.02.2007 ▲ |
| |
| | | alors zum Ersten devrait Du Deinen Quellcode aussi avec KompilierenMarqueSéparation ummanteln (c'est dans allen Foren üblich) - Codes avec Smilies drin wird sich aucun anschauen. tu peux Dein Posting oui Travailler. et ensuite wäre es encore hilfreich si Du qui zusätzliche PH aussi comme DateiAnhang beifügst - car cet est pas zum XProfanumfang.
nous savons aussi pas quelle XProfanversion Du utilise (la hâte oui nix angegeben) - cela könntest Du mais aussi dans Votre Signatur écrivons.
qui Bereiche a# et b# volonté pas disposed .
jusqu'à denne.
@Admins: je trouve cet Postingform venez dans dernier Zeit très souvent avant - wir devrait avant dem Poste un Vorstellungsgespräch mener - inform einer Erklärungsseite howTo poste. je werd cela la fois zusammenbasteln. |
| | | | |
| | | | |
| | Frank Tretter | Sorry, kenne mich là encore pas so aus. j'ai XProfan 8. iwebbrowser2.ph wurde de Dir déjà ici angezeigt, merci.
maintenant versuch je cela avec dem Code encore einmal. KompilierenMarqueSéparation $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&
Fin
|
| | | Seit 2008 endlich XProfan 10, ist einfach klasse | 19.02.2007 ▲ |
| |
| | Uwe ''Pascal'' Niemeier | allô Frank!
cela WebBrowser-Contrôle wird komplett sur sogenannte COM-Interfaces gesteuert; cela gilt sogar pour Clipboard-Aktionen. avec Messages (comment chez Edits) ist là rien trop machen; pour muss sogar un nouveau Interface aufgerufen volonté. cet Procédure sollte aider: KompilierenMarqueSéparation
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----------------------------------------------------------------------
une Routine zum Marque reiche je encore pour!
@ iF: es du sûrement, dass DISPOSE am Programmende so wichig ist?
HTH Pascal |
| | | | |
| | RGH | Uwe Pascal Niemeier
@ iF: es du sûrement, dass DISPOSE am Programmende so wichig ist?
chez Win9x (en supplément est aussi Win ME) grundsätzlich oui, là sonst qui grenier oiftmals pas avant dem prochain Neustart freigegeben wird. Win2000/XP/Vue regelt cela Betriebssystem chez Programmende qui Freigabe dans aller règle nötigenfalls selbst.
Trotz allem sollte on sich angewöhnen avec DIM reservierten grenier grundsätzlich par DISPOSE wieder freizugeben. Sollte on cet z.B. la fois dans einer Procédure oublier qc, hat on très vite Probleme ...
Salut 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 erstmal pour qui schnelle Aider. cela bringt mich déjà plus. si je ensuite encore qui Routine pour cela Markiern bekomm suis je Glücklich et es hat mir très geholfen.
peux malheureusement pas toujours juste répondre, suis pas toujours am PC et zum Programmieren fehlt comme qui Zeit.
Salut Fränki |
| | | Seit 2008 endlich XProfan 10, ist einfach klasse | 21.02.2007 ▲ |
| |
|
répondreOptions du sujet | 3.786 Views |
Themeninformationencet Thema hat 4 participant: |