Hallo Members,
habe schon viele nützliche Tipps im Forum gefunden aber zu einem aktuellen Problem finde ich einfach keine Lösung.
Ich habe für meine Kollegen und mich ein Tool geschrieben, dass die tägliche Arbeit sehr erleichtert. In diesem Tool ist u.a.
eine Funktion enthalten, mit der man überall Text Templates einfügen kann. (Sowas wie AutoText für alle Anwendungen)
Kurze Funktionbeschreibung:
Wenn man an der Stelle ist, wo man einen Text-Schnipsel einfügen möchten, öffnet man über einen HotKey ein Fenster.
Dieses Fenster enthält eine ListView, welche die ganzen Text-Schnipsel enthält. Man sucht sich den gewünschten aus und
AutoIt fügt den Text ins Ursprungs-Programm ein.
Problembeschreibung:
Anfangs wollte ich die Texte über ControlSetText in das jeweilige Programm einfügen aber da gab es immer wieder Probleme
mit den sehr verschiedenen Eingabefeldern und Textfeldern. Also benutze ich folgenden einfachen Code, um den Text ins
Ursprungs-Programm einzufügen.
$aTextTemplate = _GUICtrlListView_GetItemTextArray($hMainSpecialPasteList, _GUICtrlListView_GetSelectionMark($hMainSpecialPasteList))
$sOldClip = ClipGet() ;alten ClipBrd Eintrag sichern
ClipPut($aTextTemplate[2]) ;TextTemplate ins ClipBrd schreiben (1 = Category; 2 = Text)
WinActivate(GUICtrlRead($hMainSpecialPasteWindowName)) ;Ursprungs-Programm in Vordergrund holen
Send("^v",0) ;ClipBrd Inhalt einfügen
ClipPut($sOldClip) ;alten ClipBrd Eintrag schreiben
GUISetState(@SW_HIDE, $hMainSpecialPaste) ;Text Template Auswahl Fenster verstecken
Jetzt passiert es aber immer wieder, dass im Ursprungs-Programm der Wert $sOldClip eingefügt wird. Beim debuggen
habe ich festgestellt, dass der Wert immer richtig in die Zwischenablage übernommen wird, wenn der falsche Text im
Ursprungs-Programm landet. Somit kann es eigentlich nur sein, dass der "Einfügen-Befehl" nachdem ClipPut($sOldClip)
im Ursprungs-Programm ankommt. Dies habe ich versuchte mit diversen Delay-Einstellungen zu umgehen aber selbst
bei hohen Sleep-Werten kommt der Fehler noch vor.
Leider passiert der Fehler nicht nur eins, zwei mal, sondern kommt immer wieder vor und manchmal mehrfach hinter-
einander. Somit ist die Zeitersparnis gleich Null und man wäre schneller, wenn man den Text von Hand schreibt.
Hat vielleicht noch jemand hier im Forum eine Idee, was ich noch machen könnte oder andere Ansätze dies umzusetzen?
Vielen Dank und Grüße
ic4u