sendkeys "" игнорируется

388
Sahil Manuja

Я создал файл .VBS с кодом, представленным ниже.

Он отлично работает, если я использую его для заполнения любой формы в браузере, а также работает с Excel и Блокнотом.

Однако, это дает ошибку при использовании приложения, установленного в моей системе. Весь текст вводится в одну ячейку. sendkey ""не работает в этом приложении.

Кроме того, если я нажимаю Tabпосле использования этого, он перемещается в предыдущую ячейку вместо следующей ячейки. Я думаю, что клавиша Shift застревает там из-за ЗАГЛАВНОГО текста.

Кроме того, NUM LOCK иногда отключается при использовании этого.

Может кто-нибудь помочь с этим?

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
Попробуйте `wshshell.sendkeys vbTab` Bill Hileman 6 лет назад 0
В качестве эксперимента попробуйте вставить команду `DoEvents` до и после каждой команды` wshshell.sendkeys "" ` Gary's Student 6 лет назад 0
@BillHileman wshshell.sendkeys vbTab - не сработало Sahil Manuja 6 лет назад 0
@ Gary'sStudent Пробовал с DoEvents, он не работает и не набирает весь текст, который он напечатал, только TYPE TEXT 1. после этого ничего не происходит Sahil Manuja 6 лет назад 0
С какой программой у вас проблемы? Вы упомянули, что это работает в Блокноте и Excel. davidmneedham 6 лет назад 0
@Davidmneedham У меня проблема с "Citrix IDC дистиллятор" Sahil Manuja 6 лет назад 0
@PimpJuiceIT Я уже пробовал с "wshshell.sendkeys" ", True" это также не работает Sahil Manuja 6 лет назад 1
Я вижу, что ваша проблема работает в Excel через Citrix. См. Этот [вопрос переполнения стека, идентифицирующий ту же проблему] (https://stackoverflow.com/questions/5028872/sendkeys-alternative-that-works-on-citrix). davidmneedham 6 лет назад 0
Не уверен, поможет ли это кому-нибудь, кроме еще одной потенциальной легкой вещи, которую можно попробовать на всякий случай ... https://ss64.com/vb/appactivate.html - активировать по названию, а затем посмотреть, идет ли вкладка или нет ... Легко я полагаю, достаточно исключить решение, которое вы используете в настоящее время. Pimp Juice IT 6 лет назад 0
@davidmneedham Я видел этот пост перед тем, как опубликовать свой вопрос. У меня нет доступа для настройки или изменения любых других внутренних кодов. Также у меня нет другой версии для тестирования. У меня есть доступ только к форме, которую я должен заполнить, как проект ввода данных. Для этого я создал этот скрипт, с помощью которого я могу заполнить эту форму одним щелчком мыши. Я протестировал браузеры для регистрации на веб-сайте, он работает там нормально, но только в этом программном обеспечении у меня возникли проблемы .. Sahil Manuja 6 лет назад 0

1 ответ на вопрос

0
davidmneedham

SendKeys явно не работает с Citrix .

Альтернативным решением для использования VBScript является использование AutoHotkey . Этот скрипт работает для меня в Citrix:

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 
Спасибо за предложение, я использовал скрипты AHK, но мне не разрешено использовать стороннее программное обеспечение. Я проверил с ахк это работает совершенно нормально, но не с wscripts. Я не могу отследить, почему SendInput работает, а sendkeys нет. Sahil Manuja 6 лет назад 0
@SahilManuja Как насчет AutoIT? Я спрашиваю только потому, что он НЕ требует его установки для запуска исполняемого файла, который может сделать то же самое? Из того, что я помню с AHK, вы должны установить программу, чтобы использовать ее скрипты; однако с AutoIT вы можете скомпилировать исполняемый файл и затем поместить его на флэш-накопитель USB, а затем запустить его оттуда, и он может воспользоваться некоторыми из тех же функций эмуляции клавиатуры. Вот пример ответа, который я написал, если вы хотите увидеть: https://superuser.com/questions/1220290/getting-google-drive-to-automatics-restart-syncing-after-disconnecting-extern/1221599#1221599 Pimp Juice IT 6 лет назад 0
AutoHotkey обладает такой же способностью. Его можно запустить из переносной установки или скомпилировать в EXE. davidmneedham 6 лет назад 0
Да, это сработало, но оно создает файл размером 1 МБ, который слишком велик, и мне нужно создавать файлы в тысячах. Также нет возможности массового конвертирования из ahk - exe. Есть ли другой вариант? Sahil Manuja 6 лет назад 0
[ahk2exe] (https://autohotkey.com/docs/Scripts.htm#ahk2exe) можно использовать в командной строке. Но было бы возможно создать файл AHK для чтения в командах, которые необходимо отправить, чтобы избежать создания тысяч отдельных EXE-файлов. davidmneedham 6 лет назад 0
Но размер файла будет 1 МБ или больше, где, как сценарий, который я создал. VBS просто 1 КБ Sahil Manuja 6 лет назад 0
@SahilManuja Тогда я бы попробовал AutoIT, возможно, потому что я не помню, чтобы простые функции нажатия клавиш на клавиатуре были очень большими, и вы можете запускать из одного и того же исполняемого файла путь UNC или что-то вроде `\\ server \ share \ script \ CitrixKeyApp.exe` на всех клиентских компьютерах или что бы вы ни делали - возможно, вы можете сделать то же самое с скомпилированным исполняемым файлом AHK, но скомпилированный файл объемом 1 МБ для запуска простой логики кажется слишком большим IMO. [AutoIT] (https://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3.zip), кстати, БЕСПЛАТНО и портативно. Pimp Juice IT 6 лет назад 0
Спасибо, ребята, за вашу помощь, создал исполняемый файл с AKH с кодом ниже. Данные были в Excel, поэтому в них была создана кнопка поиска, поиск выдаст один результат, а затем гиперссылка на ячейку с exe, которая автоматически скопирует вставку в citrix с помощью функции alt tab X1: = ComObjActive ("Excel.Application") X1.Range ("C5"). Выберите режим сна, 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 6 лет назад 0

Похожие вопросы