sendkeys "" wird ignoriert

438
Sahil Manuja

Ich habe eine .VBS-Datei mit dem folgenden Code erstellt.

Es funktioniert gut, wenn ich ein Formular in einem Browser ausfülle und auch mit Excel und Notepad funktioniert.

Bei Verwendung in einer auf meinem System installierten Anwendung wird jedoch ein Fehler angezeigt. Der gesamte Text wird in eine einzelne Zelle eingegeben. sendkey ""funktioniert in dieser Anwendung nicht.

Wenn ich danach drücke Tab, wechselt es zur vorherigen Zelle anstatt zur nächsten Zelle. Die Umschalttaste bleibt dort hängen, weil der Text CAPITAL denke.

Außerdem ist die NUM LOCK-Taste manchmal deaktiviert, wenn Sie dies verwenden.

Kann jemand dabei helfen?

set wshshell = wscript.CreateObject("wScript.Shell") wscript.sleep 700 wshshell.sendkeys "TYPE TEXT 1" wscript.sleep 400 wshshell.sendkeys "" wscript.sleep 400 wshshell.sendkeys "TYPE TEXT 2" wscript.sleep 400 wshshell.sendkeys "" wscript.sleep 400 wshshell.sendkeys "TYPE TEXT 3" wscript.sleep 400 wshshell.sendkeys "" wscript.sleep 400 wshshell.sendkeys "TYPE TEXT 4" wscript.sleep 400 wshshell.sendkeys "" wscript.sleep 400 
0
Versuchen Sie `wshshell.sendkeys vbTab` Bill Hileman vor 5 Jahren 0
Versuchen Sie als Versuch, vor und nach jedem Befehl "wshshell.sendkeys" "einen Befehl` DoEvents 'einzufügen Gary's Student vor 5 Jahren 0
@ BillHileman wshshell.sendkeys vbTab - hat nicht funktioniert Sahil Manuja vor 5 Jahren 0
@ Gary'sStudent Hat es mit DoEvents versucht, es funktioniert nicht, es gibt auch nicht den gesamten Text ein, den er nur mit TYPE TEXT 1 eingegeben hat. Danach passiert nichts Sahil Manuja vor 5 Jahren 0
Mit welchem ​​Programm haben Sie Probleme? Sie haben erwähnt, dass es in Notepad und Excel funktioniert. davidmneedham vor 5 Jahren 0
@davidmneedham Ich habe ein Problem mit "Citrix IDC Distiller" Sahil Manuja vor 5 Jahren 0
@PimpJuiceIT Ich habe es schon mit "wshshell.sendkeys" "versucht," True ". Es hat auch nicht funktioniert Sahil Manuja vor 5 Jahren 1
Ich sehe Ihr Problem in Excel über Citrix ausgeführt. Siehe diese [Stack Overflow-Frage zum Identifizieren des gleichen Problems] (https://stackoverflow.com/questions/5028872/sendkeys-alternative-that-works-on-citrix). davidmneedham vor 5 Jahren 0
Ich bin mir nicht sicher, ob dies helfen würde, außer für eine andere, möglicherweise einfach anzuwendende Sache, nur für den Fall, dass ... https://ss64.com/vb/appactivate.html— nach Titel aktivieren und dann sehen, ob die Registerkarte angezeigt wird oder nicht ... Einfach genug, um mit der Lösung, die Sie derzeit verwenden, auszuschließen, nehme ich an. Pimp Juice IT vor 5 Jahren 0
@davidmneedham Ich habe diesen Beitrag gesehen, bevor ich meine Frage gepostet habe. Ich habe keinen Zugang zum Einstellen oder Ändern anderer interner Codes. Ich habe auch keine andere Version zum Testen. Ich habe nur Zugriff auf ein Formular, das ich wie ein Dateneingabeprojekt ausfüllen muss. Dafür habe ich dieses Skript erstellt, mit dem ich dieses Formular einfach mit einem Klick ausfüllen kann. Ich habe mit Browsern getestet, um sich auf einer Website anzumelden, es funktioniert dort gut, aber nur in dieser Software habe ich ein Problem. Sahil Manuja vor 5 Jahren 0

1 Antwort auf die Frage

0
davidmneedham

SendKeys funktioniert anscheinend nicht mit Citrix .

Eine alternative Lösung zur Verwendung von VBScript ist die Verwendung von AutoHotkey . Dieses ahk-Skript hat in Citrix für mich funktioniert:

Sleep 700 SendInput TYPE TEXT 1 Sleep 400 SendInput  Sleep 400 SendInput TYPE TEXT 2 Sleep 400 SendInput  Sleep 400 SendInput TYPE TEXT 3 Sleep 400 SendInput  Sleep 400 SendInput TYPE TEXT 4 Sleep 400 SendInput  Sleep 400 
Danke für den Vorschlag, ich habe AHK-Skripte verwendet, aber ich darf keine externe Software verwenden. Ich habe mit ahk getestet, es funktioniert absolut gut, aber nicht mit Wscripts. Ich kann nicht nachvollziehen, warum SendInput funktioniert und Sendkeys nicht. Sahil Manuja vor 5 Jahren 0
@SahilManuja Wie wäre es mit AutoIT? Ich frage nur, weil es NICHT erforderlich ist, dass es installiert wird, um eine ausführbare Datei auszuführen, die dasselbe kann? Soweit ich mich an AHK erinnere, müssen Sie das Programm installieren, um seine Skripts verwenden zu können. Mit AutoIT können Sie jedoch ein Exe kompilieren und dann auf einen USB-Stick legen und von dort aus ausführen. Einige dieser Tastaturemulationsfunktionen können ebenfalls genutzt werden. Hier ist ein Antwortbeispiel, das ich geschrieben habe, wenn Sie Folgendes sehen möchten: https://superuser.com/questions/1220290/getting-google-drive-to-automatically-restart-syncing-after-disconnecting-extern/1221599#1221599 Pimp Juice IT vor 5 Jahren 0
AutoHotkey hat die gleiche Fähigkeit. Es kann von einer tragbaren Installation aus ausgeführt oder in eine EXE-Datei kompiliert werden. davidmneedham vor 5 Jahren 0
Ja, es hat funktioniert, aber es erzeugt eine 1 MB-Datei, die zu groß ist und ich muss Dateien in 1000er erstellen. Es gibt auch keine Option für die Massenkonvertierung von ahk - exe. Jede andere Option? Sahil Manuja vor 5 Jahren 0
[ahk2exe] (https://autohotkey.com/docs/Scripts.htm#ahk2exe) kann in der Befehlszeile in großen Mengen verwendet werden. Es ist jedoch möglich, eine AHK-Datei zu erstellen, um die Befehle einzulesen, die gesendet werden müssen, um zu vermeiden, dass Tausende von separaten EXE-Dateien erstellt werden. davidmneedham vor 5 Jahren 0
Die Dateigröße beträgt jedoch 1 MB oder mehr, wobei der Scrip, den ich .vbs erstellt habe, nur 1 KB beträgt Sahil Manuja vor 5 Jahren 0
@SahilManuja Ich würde bei AutoIT einen Stich nehmen, da ich mich vielleicht nicht daran erinnere, dass einfache Tastaturtastenfunktionen sehr groß sind, und Sie können dieselbe ausführbare Datei über einen UNC-Pfad oder etwas wie \\ Server \ Share ausführen \ script \ CitrixKeyApp.exe` auf dem gesamten Clientcomputer oder was auch immer Sie tun - vielleicht können Sie dasselbe mit der AHK-kompilierten ausführbaren Datei tun, aber eine 1 MB-kompilierte Datei zum Ausführen einer einfachen Logik scheint mir etwas zu groß zu sein. [AutoIT] (https://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3.zip) ist KOSTENLOS und übrigens auch portabel. Pimp Juice IT vor 5 Jahren 0
Danke Jungs für eure Hilfe, Exe-Datei mit AKH mit untenstehendem Code erstellt. Die Daten wurden in Excel erstellt, so dass eine Suchschaltfläche darin erstellt wurde, die Suche ein einzelnes Ergebnis ergibt und dann eine Zelle mit Exe Hyperlink, die automatisch das Einfügen in Citrix mit der Alt-Tab-Funktion X1: = ComObjActive ("Excel.Application") X1.Range kopieren wird ("C5"). Wählen Sie sleep, 1000 SendInput ^ c sleep, 250 send sleep, 250 SendInput ^ v sleep, 250 SendInput sleep, 250 send { ALTUP} sleep, 1000 SendInput SendInput ^ c sleep, 250 Sahil Manuja vor 5 Jahren 0