| |
|
|
- page 1 - |
|
 Georg Hovenbitzer | allô Sebastian,
j'ai la fois wieder un größeres Problem. qui geniale folgende Code stammt vom Pascal, soetwas pourrait je Je ne ausdenken. il ermittelt den Quellcode aus einem geöffneten IE la fenêtre, comment z.B. www.google.de. Zum Test s'il te plaît aucun grand page prendre, là qui Zuweisung zum Éditer champ im Beispielt encore per SetText allez.
Im Interpreter et comme Profan Exe fonctionne il super, übersezt venez toujours une Schutzverletzung. qui la ligne qui den faute verursacht ist qui: Error& = CallMethod(IHTMLElement&,62,@Addr(Text&))
qui Grund ist pour, dass qui Aufruf devant de: Error& = CallMethod(IHTMLDocument2&,9,@Addr(IHTMLElement&))
une Error& numéro <> 0 zurückt gibt et IHTMLElement&, juste 0 ist.
Könnte cet Problem des Übersetzen son ? KompilierenMarqueSéparation $H D:PrivatProfanXProfan9INCLUDEWindows.ph
---------------Umwandlung String > globally unique identifier
Proc StringToGUID
Parameters GUID$,GUID&
Declare Temp$
Temp$ = @Space$(80)
~MultiByteToWideChar(1,1,@Addr(GUID$),-1,@Addr(Temp$),80)
@External("ole32","CLSIDFromString",@Addr(Temp$),GUID&)
EndProc
-----------------------------------------------------------------------
--------------------------Methode eines COM-Interfaces aufrufen
Proc CallMethod
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))
EndProc
-----------------------------------------------------------------------
----------WideChar (UniCode) zu MultiByte (Ansi) [nur OLE!]
Proc OLE_WideToMulti
Parameters Text&
Declare Text$,Size&,Text#
Size& = @External("oleaut32","SysStringLen",Text&)
Dim Text#,Size&
Clear Text#
~WideCharToMultiByte(0,0,Text&,-1,Text#,Size&,0,0)
@External("oleaut32","SysFreeString",Text&)
Text$ = @String$(Text#,0)
Dispose Text#
Return Text$
EndProc
-----------------------------------------------------------------------
------------------------------EnumChildProc---------------------------
Proc EnumChildProc
Parameters wnd&
Declare Name#
Dim Name#,255
~GetClassName(wnd&,Name#,255)
Case @String$(Name#,0)="Internet Explorer_Server" : IEServerWnd& = wnd&
Dispose Name#
Return 1
EndProc
---------------------------------------------------------------------------------
--------------------------RunningIE_GetText-----------------------
Proc RunningIE_GetText
Parameters IEHwnd&
Declare Error&,IID#,Msg&,Result&,oleacc&,IHTMLDocument2&,IHTMLElement&,Text&,Text$,Url&,Url$
Dim IID#,16
Declare IEServerWnd&
~EnumChildWindows(IEHwnd&,@ProcAddr(EnumChildProc,2),0)
@ProcAddr(EnumChildProc,-2)--ProcAddr freigeben
Print "IEServerwnd&",IEServerWnd&
Print
Msg& = ~RegisterWindowMessage("WM_HTML_GETOBJECT")
Print "msg",Msg&
Print
Error& = ~SendMessageTimeout(IEServerWnd&,Msg&,0,0,~SMTO_ABORTIFHUNG,1000,@Addr(Result&))
Print "Error SendMessageTimeout",Error&
Print "Result SendMessageTimeout",Result&
@External("ole32","CoInitialize",0)
oleacc& = @UseDLL("oleacc.dll")
Print "oleacc",oleacc&
Print
StringToGUID("{332c4425-26cb-11d0-b483-00c04fd90119}",IID#)--IID_IHTMLDocument2
Error& = @External("oleacc","ObjectFromLresult",Result&,IID#,0,@Addr(IHTMLDocument2&))
Print "Error ObjectFromLresult",Error&
Print "IHTMLDocument2",IHTMLDocument2&
FreeDLL oleacc&
Error& = CallMethod(IHTMLDocument2&,9,@Addr(IHTMLElement&))--IHTMLDocument2::get_body
Print "Error IHTMLDocument2::get_body",Error&
Print "IHTMLElement",IHTMLElement&
Print
----------------------------------------------Quelltext ermitteln
Error& = CallMethod(IHTMLElement&,62,@Addr(Text&))--IHTMLElement::get_outerHTML
Print "Error IHTMLElement::get_outerHTML",Error&
Print "Result get_outerHTML",Text&
Print
Text$ = OLE_WideToMulti(Text&)
-------------------------------------------------------URL ermitteln
Error& = CallMethod(IHTMLDocument2&,40,@Addr(Url&))--IHTMLElement::get_URL
Print "Error IHTMLElement::get_URL",Error&
Print "Result get_URL",URL&
Print
Url$ = OLE_WideToMulti(Url&)
Print "URL = ";Url$
Dispose IID#
@External("ole32","CoUninitialize")
Return Text$
EndProc---------------------------------------------------------------------------------
Window 0,0-800,600
Declare Fenster&
Declare Edit&
Declare Quell$
Declare IEServerWnd&
Fenster& = ~FindWindow("IEFrame",0)--Hier könnte man auch andere Möglichkeiten nehmen,
IfNot Fenster&---------------------z.B. Suche nach Fenstertitel.
Print "Bitte IE starten!!"------Benötigt wird das gewünschte Hauptfenster des IE!
WaitInput
End
EndIf
Quell$ = RunningIE_GetText(Fenster&)
If @Len(Quell$)
Edit& = @Create("multiedit",%hwnd,"",300,20,450,500)----Text anzeigen
SetText Edit&,Quell$
EndIf
'./../../funktionsreferenzen/XProfan/waitkey/'>WaitKey
Fin
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 17.05.2006 ▲ |
|
|
|
|
| |
|
- page 2 - |
|
 Michael Wodrich | [quote-part:c61d21d565] [quote-part:c61d21d565] pourquoi alors pas
Set(P2CPP:...,1) [/quote-part:c61d21d565] 2. XProfan serait une solche Anweisung avec Unbekannter commutateur: P2PP... quittieren... [/quote-part:c61d21d565] non, iF meinte den neuen Befehl de XProfan10: KompilierenMarqueSéparation seulement la fois so zum Verständnis.
belle Grüße Michael Wodrich
Wobei mir justement auffällt, cela XPSE qui neuen Befehle oui alle encore beigebracht volonté doit. une gute Gelegenheit pour den Präprozessor-commutateur... |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 24.05.2006 ▲ |
|
|
|
|
 | [quote-part:25d48ad347]Wobei mir justement auffällt, cela XPSE qui neuen Befehle oui alle encore beigebracht volonté doit. une gute Gelegenheit pour den Präprozessor-commutateur...[/quote-part:25d48ad347] quelques 10il habe je dem XPSE déjà beigebracht - je bemühe mich aussi cela qui reste pas so longtemps sur sich attendre peut.  |
|
|
| |
|
|
|
 | @Sebastian: je mon seulement cela Kommentare aussi solche son rester devrait. je glaub on pourrait irre volonté si on eh bien aussi puis achten sollte quoi qui Comments beinhalten. Ne ne, Rems avec signification - cela find je garnicht bien!
je crois une autre Solution doit her, et cela pas c'est pourquoi weil je dem XPSE beibringen devrait qui Comments trop parsen. |
|
|
| |
|
|
|
 Sebastian König | [quote-part:4dc4baa0c2]gibt es une Possibilité qui CPP Source manuel so trop changement comme später per commutateur son wird. là es oui doch so un paire Probleme gibt (DLL doit per UseDLL geladen volonté, urlmon.dll funktioniert avec manchen à gauche pas plus, Hotkeys aller pas) serait je ca volontiers la fois versuchen.[/quote-part:4dc4baa0c2] oui - bien sûr Ist mais quelque chose mühsam: Alle Externe et Call entre den Schaltern müssten dans External_ST bzw. Call_ST geändert volonté... |
|
|
| |
|
|
|
 Michael Wodrich | et comment wäre es ensuite hiermit?
$DEFINE nom: mets une Condition $UNDEF nom: mets une Condition zurück
c'est doch sowieso ausschließlich Futter pour qui Präcompiler. ici peux Sebastian ensuite den entsprechenden Namen vorgeben, qui verwendet volonté darf, z.B.:
$DEFINE p2cpp_irgendeinschalter
avec cela braucht on ensuite aussi rien nouveau trop erfinden - XProfan 10 hat es oui à Bord.
belle Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 24.05.2006 ▲ |
|
|
|
|
 Sebastian König | [quote-part:d6877f32d4]cela Set(...,x) était déjà bien - seulement sollte es arrêt vom Präprozessor abgearbeitet volonté.
si XPSE maintenant so une erweiterbaren Befehl bekäme, ensuite könnten aussi alle de Profan pas verstandenen XPSE-Befehle là hinein.
$Set(XPSE,cx) $Set(P2CPP,external_on) $Set(P2CPP,call_on) ...[/quote-part:d6877f32d4] Solange cela ganze dans einem Kommentar steht et somit Profan selbst pas stört ist es oui ok - wobei je qui Syntax déjà presque trop compliqué finde... ;)
[quote-part:d6877f32d4]$DEFINE nom: mets une Condition $UNDEF nom: mets une Condition zurück
c'est doch sowieso ausschließlich Futter pour qui Präcompiler. ici peux Sebastian ensuite den entsprechenden Namen vorgeben, qui verwendet volonté darf, z.B.:
$DEFINE p2cpp_irgendeinschalter[/quote-part:d6877f32d4] Eigentlich une belle concept - mais malheureusement aussi pas abwärtskompatibel trop älteren Profan-Versionen  |
|
|
| |
|
|
|
 Sebastian König | [quote-part:d01220718e]@Sebastian: je mon seulement cela Kommentare aussi solche son rester devrait. je glaub on pourrait irre volonté si on eh bien aussi puis achten sollte quoi qui Comments beinhalten. Ne ne, Rems avec signification - cela find je garnicht bien![/quote-part:d01220718e] cela vois je wirklich anders - et il y a avec dem #!/suis/sh aussi un droite bekanntes Beispiel pour une Kommentar-la ligne avec signification! 
je trouve aussi, on sollte cela ganze pas überbewerten: und dir ici vraiment de une très spezielle Situtation, nämlich à Beeinflussung qui Übersetzung de Externe(), Call() pour entier bestimmte Teile des Codes - womöglich wird cela sauf Georg dans diesem le cas nichtmal quelqu'un besoin... dans si bien comment allen Fällen ist qui entier normale Übersetzung cette Funktionen oui völlig dans Ordre!
si on ca bedenkt, ist cela avec den Kommentaren wirklich qui schönste Possibilité, qui mir so einfällt... |
|
|
| |
|
|
|
 Michael Wodrich | et si on chez cette Spezialkommentaren bestimmt, qui devant ne...aucune Befehl stehen darf - alors pour beliebigen Whitespaces folgt cela Kommentarzeichen avec dem Spezialbefehl - ensuite läßt sich cela aussi entsprechend herausfiltern (Kommentare aller oui jusqu'à zum Zeilenende). c'est ensuite oui toujours sur einer la ligne pour sich.
je vois cela aussi comme einzige Possibilité pour qui Abwärtskompatibilität - et qui hat sich P2CPP oui sur qui drapeau geschrieben.
belle Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 24.05.2006 ▲ |
|
|
|
|
 Georg Hovenbitzer | [quote-part:fec088bf63]oui - bien sûr Ist mais quelque chose mühsam: Alle Externe et Call entre den Schaltern müssten dans External_ST bzw. Call_ST geändert volonté...[/quote-part:fec088bf63] allô Sebastian,
si je es richtig verstanden habe, muss je doch seulement qui Aufrufe qui den faute verursachen avec .._ST versehen et aucun define mettons. si ca stimmt sommes es pas so viele  |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 24.05.2006 ▲ |
|
|
|
|
 Sebastian König | allô Georg,
[quote-part:e363eebe1e]si je es richtig verstanden habe, muss je doch seulement qui Aufrufe qui den faute verursachen avec .._ST versehen et aucun define mettons. si ca stimmt sommes es pas so viele [/quote-part:e363eebe1e] oui, mais avec cela qui Fil-Kontext toujours stimmt, devrait Du sicherheitshalber alle Aufrufe dans qui Prozeur Runningie_gettext anpassen.
MfG
Sebastian |
|
|
| |
|
|
| |
|
- page 3 - |
|
|
 Georg Hovenbitzer | allô Sebastian,
es hat geklappt  Alle Externals et Calls qui nécessaire wurden geänder et eh bien fonctionne alles sans faute  |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 25.05.2006 ▲ |
|
|
|
|
 | là peux je seulement dire Respekt Sebastian! 
quoi pour un Akt!  |
|
|
| |
|
|