| |
|
|
- Página 1 - |
|
Georg Hovenbitzer | ¡Hola Sebastian,
Yo veces otra vez una größeres Problema. Der geniale folgende Code stammt vom Pascal, soetwas podría Yo no ausdenken. Er ermittelt el Quellcode de una geöffneten IE Ventana, como z.B. www.google.de. Zum Test Por favor, no große Página nehmen, como el Zuweisung para Editar Feld en el Beispielt todavía por SetText va.
Im Interpreter y como Profano Exe se ejecuta él super, übersezt kommt siempre una Schutzverletzung. El Línea el el Fehler verursacht Es el: Error& = CallMethod(IHTMLElement&,62,@Addr(Text&))
Der Grund es dafür, dass el Aufruf davor de: Error& = CallMethod(IHTMLDocument2&,9,@Addr(IHTMLElement&))
Un Error& Nummer <> 0 zurückt son y IHTMLElement&, igual 0 es.
Könnte dieses Problema des Übersetzen ser ? KompilierenMarcaSeparación $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
End
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 17.05.2006 ▲ |
|
|
|
| |
|
- Página 2 - |
|
|
Georg Hovenbitzer | ¡Hola Sebastian,
hay una Möglichkeit el CPP Source manuell así a ändern como später por Schalter ser se. Como lo sí doch así unos pocos Problemas son (DLL necesario por UseDLL geladen voluntad, urlmon.dll funktioniert con manchen Links no mehr, Hotkeys ir no) sería Yo dies gerne veces versuchen. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 24.05.2006 ▲ |
|
|
|
|
Michael Wodrich | Das Conjunto(...,x) war ya bien - sólo debería lo sólo vom Präprozessor abgearbeitet voluntad.
Wenn XPSE ahora así una erweiterbaren Befehl bekäme, entonces könnten auch todos de Profano no verstandenen XPSE-Befehle como hinein.
$Conjunto(XPSE,cx) $Conjunto(P2CPP,external_on) $Conjunto(P2CPP,call_on)
Lo hatte mich ya öfter gestört, Yo una con XPSE getestetes Programa sólo nachbearbeiten muß si veces sin XPSE aufgerufen se (vorausgesetzt es nichts XPSE-spezifisches drin).
Dann muß Yo siempre sólo el XPSE-Direktive auskommentieren.
Wenn XPSE el encima Kommentare löst, entonces se ejecuta lo auch así. Und como XPSE a Kompatibilität sagt: lo se ejecuta siempre sólo el neuesten XProfan-Versión podría uno hier doch veces una Interruptor vornehmen.
Damit es entonces ausschließlich una Kommentar el con $Conjunto( beginnt, a ignorieren - y dieser kann entonces incluso específicamente koloriert voluntad.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 24.05.2006 ▲ |
|
|
|
|
Michael Wodrich | [quote:c61d21d565] [quote:c61d21d565] ¿Por qué also no
Conjunto(P2CPP:...,1) [/quote:c61d21d565] 2. XProfan sería una solche Anweisung con Unbekannter Schalter: P2PP... quittieren... [/quote:c61d21d565] Nein, IF meinte el neuen Befehl de XProfan10: KompilierenMarcaSeparación Nur veces así para Verständnis.
Schöne Grüße Michael Wodrich
Wobei me gerade auffällt, el XPSE el neuen Befehle sí todos todavía beigebracht voluntad necesario. Un gute Gelegenheit para el Präprozessor-Schalter... |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 24.05.2006 ▲ |
|
|
|
|
| [quote:25d48ad347]Wobei me gerade auffällt, el XPSE el neuen Befehle sí todos todavía beigebracht voluntad necesario. Un gute Gelegenheit para el Präprozessor-Schalter...[/quote:25d48ad347] Einige 10él Yo el XPSE ya beigebracht - Yo bemühe mich auch el el Rest no así largo en se warten lässt. |
|
|
| |
|
|
|
| @Sebastian: Yo mi sólo el Kommentare auch solche ser bleiben debería. Yo glaub uno podría irre voluntad si uno nun auch darauf achten debería qué el Comments beinhalten. Ne ne, Rems con Bedeutung - el find Yo garnicht bien!
Yo glaube una otro Solución muß her, y el no deshalb porque Yo el XPSE beibringen debería el Comments a parsen. |
|
|
| |
|
|
|
Sebastian König | [quote:4dc4baa0c2]hay una Möglichkeit el CPP Source manuell así a ändern como später por Schalter ser se. Como lo sí doch así unos pocos Problemas son (DLL necesario por UseDLL geladen voluntad, urlmon.dll funktioniert con manchen Links no mehr, Hotkeys ir no) sería Yo dies gerne veces versuchen.[/quote:4dc4baa0c2] sí - klar Pero algo mühsam: Alle Externo y Call zwischen el Schaltern müssten en External_ST o. Call_ST geändert voluntad... |
|
|
| |
|
|
|
Michael Wodrich | Und como wäre lo entonces hiermit?
$DEFINE Name: setzt una Condición $UNDEF Name: setzt una Condición zurück
Es doch sowieso ausschließlich Futter para el Präcompiler. Hier kann Sebastian entonces el entsprechenden Namen vorgeben, el verwendet voluntad darf, z.B.:
$DEFINE p2cpp_irgendeinschalter
Damit braucht una continuación auch nichts neues a erfinden - XProfan 10 ha lo sí a Bord.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 24.05.2006 ▲ |
|
|
|
|
Sebastian König | [quote:d6877f32d4]Das Conjunto(...,x) war ya bien - sólo debería lo sólo vom Präprozessor abgearbeitet voluntad.
Wenn XPSE ahora así una erweiterbaren Befehl bekäme, entonces könnten auch todos de Profano no verstandenen XPSE-Befehle como hinein.
$Conjunto(XPSE,cx) $Conjunto(P2CPP,external_on) $Conjunto(P2CPP,call_on) ...[/quote:d6877f32d4] Solange Todo en una Kommentar es y somit Profano incluso no stört es sí ok - wobei Yo el Syntax ya fast a kompliziert finde... ;)
[quote:d6877f32d4]$DEFINE Name: setzt una Condición $UNDEF Name: setzt una Condición zurück
Es doch sowieso ausschließlich Futter para el Präcompiler. Hier kann Sebastian entonces el entsprechenden Namen vorgeben, el verwendet voluntad darf, z.B.:
$DEFINE p2cpp_irgendeinschalter[/quote:d6877f32d4] Eigentlich una schöne Concepto - aber desafortunadamente auch no abwärtskompatibel a älteren Profano-Versionen |
|
|
| |
|
|
|
Sebastian König | [quote:d01220718e]@Sebastian: Yo mi sólo el Kommentare auch solche ser bleiben debería. Yo glaub uno podría irre voluntad si uno nun auch darauf achten debería lo que el Comments beinhalten. Ne ne, Rems con Bedeutung - el find Yo garnicht bien![/quote:d01220718e] Das sehe Yo wirklich anders - y lo son con el #!/bin/sh auch una bastante bekanntes Ejemplo para una Kommentar-Línea con Bedeutung!
Yo finde auch, uno debería todos no überbewerten: Lo va hier realmente una muy spezielle Situtation, nämlich a Beeinflussung el Übersetzung de Externo(), Call() para bastante cierto Teile des Codes - womöglich se el außer Georg en diesem Fall nichtmal alguien benötigen... In casi allen Fällen Es el bastante normale Übersetzung dieser Características sí völlig Haga clic en Aceptar!
Wenn uno dies bedenkt, es el con el Kommentaren wirklich el schönste Möglichkeit, el me así einfällt... |
|
|
| |
|
|
|
Michael Wodrich | Und si uno de estos Spezialkommentaren determinado, daß davor kein Befehl posición darf - also después de beliebigen Whitespaces folgt el Kommentarzeichen con el Spezialbefehl - entonces läßt se el auch entsprechend herausfiltern (Kommentare ir sí a para Zeilenende). Es entonces sí siempre en uno Línea para se.
Yo sehe el auch como einzige Möglichkeit para el Abwärtskompatibilität - y el ha se P2CPP sí en el Fahne geschrieben.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 24.05.2006 ▲ |
|
|
|
|
Georg Hovenbitzer | [quote:fec088bf63]sí - klar Pero algo mühsam: Alle Externo y Call zwischen el Schaltern müssten en External_ST o. Call_ST geändert voluntad...[/quote:fec088bf63] ¡Hola Sebastian,
si yo lo correcto verstanden habe, muss Todavía sólo el Aufrufe el el Fehler verursachen con .._ST versehen y no define conjunto. Wenn dies stimmt son no así viele |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 24.05.2006 ▲ |
|
|
|
|
Sebastian König | ¡Hola Georg,
[quote:e363eebe1e]si yo lo correcto verstanden habe, muss Todavía sólo el Aufrufe el el Fehler verursachen con .._ST versehen y no define conjunto. Wenn dies stimmt son no así viele [/quote:e363eebe1e] sí, aber así el Hilo-Kontext siempre stimmt, solltest Usted sicherheitshalber todos Aufrufe en el Prozeur Runningie_gettext adaptar.
MfG
Sebastian |
|
|
| |
|
|