Hab jetzt ne Lösung gefunden allerdings ist sie wieder E-Mail-Client spezifisch. Wenns interessiert:
Code: Alles auswählen
Procedure SendAKey(key.s)
vk = VkKeyScan_(Asc(key))
If vk>320:keybd_event_(#VK_LSHIFT,1,0,0):EndIf
keybd_event_(vk,1,0,0)
keybd_event_(vk,1,#KEYEVENTF_KEYUP,0)
If vk>320
keybd_event_(#VK_LSHIFT,1,0,0)
keybd_event_(#VK_LSHIFT,1,#KEYEVENTF_KEYUP,0)
EndIf
EndProcedure
Procedure EMail()
Mail = RunProgram("mailto:"+ empfaenger + "?" + "subject=Aktuelle Kinderliste "+ FormatDate("%mm/%yy", Date()) + "&body=","","")
WinTitle$ = "Verfassen: Aktuelle Kinderliste "+ FormatDate("%mm/%yy", Date())
While handle = 0
Fensteroffen = 1
Delay(100)
handle.l=FindWindow_(0, WinTitle$)
Fensteroffen + 1
If Fensteroffen > 30
Break
EndIf
Debug "Fensteroffen"
Wend
If handle>0
OpenIcon_(handle)
SetForegroundWindow_(handle)
SetActiveWindow_(handle)
For i = 0 To CountGadgetItems(#ListIcon_1) + 1
Delay(300)
Debug GetActiveWindow_()
For j = 1 To CountList(Spalten())
Text2$ + GetGadgetItemText(#ListIcon_1, i, j)
If GetGadgetItemText(#ListIcon_1, i, j) <> ""
Text2$ + ", "
EndIf
Next
For r=1 To Len(Text2$)-2
SendAKey(Mid(Text2$,r,1))
Next
If i <> CountGadgetItems(#ListIcon_1)
Text2$ = Chr(10)
EndIf
Next
EndIf
EndProcedure
Allerdings muss ich dazu sagen das geht ne ganze Weile. Also muss ich meine Aussage korrigieren. Die Ursache das es ursprünglich nicht funktioniert hat liegt nicht am String, sondern (habs bisher nur mit Thunderbird versucht) wohl eher an Thunderbird. Wenn ich es als einzelne Tasten sende wie jetzt ist das Delay(300) in der For-Schliefe wichtig. Ich denke mal das sonst der Tastatur-Buffer voll läuft und nicht mehr alles richtig erfasst wird. Allerdings werd ich noch einen InputRequester einbauen müssen der Abfrägt wie das Fenster heißt. Also ob ich nach einem "Verfassen: " + Betreff suche oder nach einem "Neue Nachricht" + Betreff" oder ...
Bevor der Benutzer da eingrefien muss werde ich wahrscheinlich auch noch das große Orakel von Microsoft (die Registry) befragen. da hat edel ja ein sehr schönes wunderbar funktionierendes Beispiel geschrieben.
Kann mir jemand sagen, ob es (wär auch schön zu wissen wie) möglich ist das ich die Daten einfach am Stück in die Zwischenablage (SetClipboardText(Text$) ist klar) kopiere und vielleicht einfach das STRG + V senden kann.
Ansonsten danke ich euch für eure Bemühungen.