Von Roland G. Hülsmann am 17 April, 1998 um 23:36:32:
Antwort auf: SendString und UseFont von Oliver Hahn am 06 April, 1998 um 13:03:01:
>> 1. @SendString funktioniert unter NT nicht.
>> Was unter 3.1 hervorragend klappt ist unter NT offenbar nicht möglich.
>> Ich habe es nicht fertiggebracht Strings an Word 7.0 zu senden. Beispiel:
>>
>> declare word%,hword%
>> cls
>> let word%=@winexec("D:\msoffice\winword\winword.exe",1)
>> Let hword%=GetActiveWindow()
>> @SendString(hWord%,"Dies ist ein Test!")
>> waitkey
>> end
>>
>> Das gleiche Skript läuft unter Win3.11 (Word6.0) tadellos.
>> Was mache ich falsch?
Unter 32 Bit funktioniert innerhalb von Windows einiges anders. Ohne auf
technische Details einzugehen: Ihr Script funktioniert unter 32 Bit,
wenn Sie CLS und WAITKEY weglassen (damit kein eigenes Fenster erzeugt
wird) und als ersten Parameter bei SendString die 0 nehmen (oder
%GetFocus), damit der Text ans aktive Element gesandt wird. Auch
GetActiveWindow führt nicht immer zum gewünschten Ergebnis, da es in
komplexeren 32-Bit-Programmen nicht zwingend das Hauptfenster der
Anwendung ist , ... Zu Sendstring ist auch das Beispielprogramm
NOTEPD.PRF hilfreich, daß jedoch so nicht 1:1 auf WORD übertragbar ist.
(Bei NOTEPAD funktioniert GetActiveWindow nämlich.)
>> 2. USEFONT wirkt unter NT nicht bei der Druckausgabe
>> und bei 16 Bit nicht richtig.
>> (...)
>> Wo liegt die Ursache?
Damit USEFONT wiegewünscht wirkt, muß es im Falle der Druckausgabe mit
STARTPRINT/NEXTPAGE/ENDPRINT hinter (!) dem ersten StartPrint stehen.
Grund: USEFONT wirkt auf das aktuelle Ausgabegerät. Da der Bildschirm
anders skaliert ist, als die Druckseite, gibt es bei umgekehrter
Reihenfolge seltsame Ergebnisse (z.B. ein zehnfach verkleinertes
Schriftbild, das zudem nach dem ersten NEXTPAGE wiksam wird.)
mfG
Roland G. Hülsmann