David Strutz, 26.03.2008 12:31: Roland hat zum X11-Paket ein Demo "QueryInterface.prf" beigelegt.
Ich habe Uwe's [...]
ocxPackage's nutzen wollen um eine Brücke zwischen dem X11-htmlWin zum ocx zu schlagen, gelang mir aber nicht.
Es gelang mir auch nicht mit dem ocxPackage eine https Seite zu öffnen.
Kurzum: Ich möchte den vom Browser erzeugten Quelltext einer https Seite ablesen wie z.B. dieser: [...] 
Tatsächlich habe ich es über einen "gemeinen" Workaround mit urlDownloadToFileA hinbekommen indem ich JavaScripts der Seite in eine normale per http erreichbare Seite abgelegt habe. Der Browser ruft dann die per https erreichbaren Scripts ab - führt diese aus - und urlDownloadToFileA läd dann den erzeugten HTML. Wenn Datei jedoch lokal abgelegt ist, dann funktioniert der "Trick" nicht mehr - und ich möchte auf eine "Hilfsseite" verzichten.
Da ich von OCX & Co. keine Ahnung habe bitte ich um Hilfe.

David Strutz, 26.03.2008 13:33: Hier ein Quelltext (Vorlage von Roland) welcher die Seite schon korrekt "läd" und zeigt, ich nur nicht an den HTML heran komme: [...] 
David Strutz, 26.03.2008 15:14: Habe mich bis zum Document&,"body" durchgearbeitet und sehe per ocxBrowse() das ein get innerHTML möglich wäre - welches beim Testen jedoch bei mir nur Abstürze verursacht - vielleicht weil hinter dem Interface-Pointer kein Objekt steht heul...
David Strutz, 26.03.2008 15:52: Es scheint mir das durch das Protokoll https Methoden oder Eigenschaften nicht "normal" abrufbar sind... 
David Strutz, 26.03.2008 15:56: Ich kann mich wohl vom "Document" bis zur Eigenschaft bgcolor "hangeln", aber egal was ich bei "bgcolor" eingebe - h& ist immer 0 NULL. Gebe ich jedoch ein nicht vorhandenes Attribut ein dann erscheint korrekterweise eine Fehlermeldung.
var Document&=ocxGet(WebObject&,"Document")'klappt
var body&=ocxGet(Document&,"body")'klappt
var h&=ocxGet(body&,"bgcolor")'klappt nicht :(
David Strutz, 26.03.2008 18:14: Es ist mir gelungen, ich brauche vielleicht dann doch keine Hilfe mehr. 
'--Alle Links einer Webseite auflisten
'--Es könnten noch weitere Eigenschaften (ID, Target usw.) ermittelt werden
window 10,100-780,400
$H Windows.ph
$H ocx2.ph
$I ocx2.inc
$I HtmlExtra.inc
$I ocxinfo.inc
ocxInit()
cls
print "jo"
declare WebControl&
var WebObject&=ocxCreate("https://seite",%hwnd,500,10,250,100,$50800000,addr(WebControl&))
whilenot %mousekey
sleep 50
setText %hWnd,"Läd: "+ocxget(WebObject&,"readystate")
endwhile
while %mousekey
wend
var Document&=ocxGet(WebObject&,"Document")
var collection&=ocxGet(Document&,"Body")
print ocxGet(collection&,"innerHTML")
waitinput
end
Der Source läd die Seite und gibt den "gerenderten" HTMLText zurück. Der Haken: Erst nachdem sich das ReadyState auf 4 eingepegelt hat - das muss man wohl beachten... (sicher weil hier der Server die Daten "chunked" übermittelt)
Die Vorlagen von UWE und die Include und das Headfile sind einfach grosse Klasse - danke Uwe! 
Zwar konnte ich bisher die Brücke von Uwe's Include zum XProfan11'schen htmlWIN hier nicht schlagen - aber das bekommt sicher jemand hin der sich mit der Materie auskennt.
Frank Abbing, 26.03.2008 19:55: Dieser Thread erinnert ein bischen an diverse AH-Threads...
...darum texte ich mal was zwischendurch... 
David Strutz, 26.03.2008 21:05: Ja, mich auch lol.
Jörg Sellmeyer, 27.03.2008 01:25: Zitat von ""Frank Abbing"": Dieser Thread erinnert ein bischen an diverse AH-Threads...
...darum texte ich mal was zwischendurch...
LOL Daran fühlte ich mich auch erinnert, mit dem Unterschied, dass hier kein geheimnisvolles Geraune über nicht zu postenden Code auftaucht, sondern nutzbarer Quelltext!
David Strutz, 27.03.2008 01:50: Hier eine überarbeitete ocx2.ph (2 kleine Syntaxfehler entfernt) und für XProfan 11 angepasste ocx2.inc und ein Beispiel (um das es mir lediglich ging) welches den Body eines html Dokumentes über https (mgl. SSL) abruft.
ocx.zip
Uwe P.N., 27.03.2008 09:12: Hallo Leute!
Erstmal dank an iF für die Blumen
Der Brückenschlag zwischen XProfan11 und ocx müsste eigendlich so aussehen (ungetestet):
ocxInit()
var WebControl&=create("HTMLWin",%hwnd,"www.xprofan.de",1,10,10,500,500)
var WebObject&=HTMLWin("QueryInterface",WebControl&)
var Document&=ocxGet(WebObject&,"Document")
bzw.
ocxInit()
declare WebControl&
var WebObject&=ocxCreate("about:blank",%hwnd,10,10,500,500,$50800000,addr(WebControl&))
HTMLWin("GoHome",WebControl&)
Soweit ich das sehe, sollte man Zugriff auf alles kriegen, was im WebBrowser-Fenster angezeigt wird, auch wenn's zB. über Scripts zur Laufzeit erzeugt wird. Haarig wird es allerdings, wenn Frames enthalten sind, weil jedes von denen ein eigenes Document-Object enthält.
Aber da kann man sich an diversen JavaScript-Codes orientieren, die man dann nach Profan portieren kann.
BTW: Ich arbeite bereits mit der nächsten ocx-Version, bei der man Fehlermeldungen unterdrücken kann. Werde bei Gelegenheit daraus ein neues Package schnüren
PS: Hab gerade gesehen, dass ich mich noch garnicht bei Roland bedankt habe für sein Interface-Beispiel...
Das hole ich hiermit nach!
Die Idee, ein Interface in eine Struktur zu übertragen ist genial! Und ich hab mich mit Dutzenden(!) selbstdefinierter Header rumgeschlagen...
PPS: Die asynchronen Ladefunktionen haben mich inzwischen auch schon Nerven gekostet...
SeeYou
Pascal
David Strutz, 27.03.2008 12:07: Ich habe die "Fehlermeldungs"messagebox einfach ausgeklammert um ohne Messagebox prüfen zu können ob document.body.innerHTML bereits befüllt ist - z.B. mit </html>.
Sicher ist es auch nur dann "so kompliziert" wenn im Header Transfer-Encoding: chunked definiert ist und damit der Server die Datei häppchenweise zum Client brabbelt.
Ich freue mich definitiv auf Deine OCX3.ZIP. 
Dies ist die Offlinevariante vom Thread [htmlWin->Queryinterface erzeugten HTML abrufen https SSL].
©2006 XProfan.Com