Войти

Показать полную графическую версию : Эмуляция клавиатурных нажатий (LWINDOWN+R)


avmir
17-04-2010, 23:16
В справке по AutoIt -> Указатель функций -> Эмуляция клавиатурных нажатий в конце топика есть пример

Send("#r")
WinWaitActive("Run")
Send("notepad.exe{Enter}")
WinWaitActive("Untitled -")
Send("Today's time/date is {F5}")

который не работает. Совершенно ясно, что нужно поменять для русскоязычного варианта XP:

Send("#r")
WinWaitActive("Выполнить")
Send("notepad.exe{Enter}")
WinWaitActive("Безымянный -")
Send("Today's time/date is {F5}")

Но не понятно, как работает первая строка примера. В том же топике -

'#'
Этот символ используется в качестве символа простого разделения текста для облегчения чтения.

Т.е., как я понимаю генерируется нажатие клавиши {R}. Между тем для вызова диалогового окна "Выполнить"
нужно нажать клавиши LWIN+R.

Пробовал заменить первую строку примера на

1. Send("{LWIN}r")
2. Send("{LWINDOWN}r")
3. Send("{LWINDOWN}r{LWINUP}")

результат - нулевой...
Подскажите пожалуйста, в чем я ошибаюсь?

zonderz
17-04-2010, 23:36
avmir,

Совершенно ясно, что нужно поменять для русскоязычного варианта XP: »
WinWaitActive("Выполнить") »

у вас ОС какая? в русской xp sp2 например там другая надпись

Но не понятно, как работает первая строка примера. В том же топике - »

как? просто! - The hash now sends a Windows keystroke; therefore, Send("#r") would send Win+r which launches the Run dialog box.

ЧТО не понятно-то?? что такое символ комментирования или что?

работа этого кода зависит от:
локали, текущего включенного языка и раскладки, версии ОС

у меня xpsp2en код работает, переключаю язык - нет
в висте ру в любой раскладке (ваш код) работает

хотите подогнать скрипт под все ОС? :) ню-ню

avmir
18-04-2010, 14:50
хотите подогнать скрипт под все ОС » Я не хочу
Хотя бы, потому, что только начал знакомство с AutoIt. :)

zonderz, спасибо! Установка английского по-умолчанию - помогла.
А нет ли варианта менять язык прямо в скрипте?
Я попробовал через Send сэмулировать нажатие Shift+Alt - не помогло...

P.S. Интересно, что нажатие LWIN+R работает при любой раскладке. Как еще можно эмулировать их нажатие?

Luck_DMST
11-02-2011, 14:40
Я решил проблему так, может быть и глупо, но выход)) (Ось: Win7)

; ----------Смена языка на Английский по-умолчанию----------
$win=WinExists ("Выполнить")
Send ("#к")
if $win=0 Then
Send ("#r")
EndIf

WinWaitActive("Выполнить")
Sleep (100)
Send ("{BS}")
Send("{ASC 099}{ASC 111}{ASC 110}{ASC 116}{ASC 114}{ASC 111}{ASC 108}{ASC 032}{ASC 105}{ASC 110}{ASC 116}{ASC 108}{ASC 046}{ASC 099}{ASC 112}{ASC 108}{ASC 044}{ASC 044}{ASC 050}{Enter}")
WinWaitActive("Язык и региональные стандарты")
Send ("{ENTER}")
WinWaitActive("Языки и службы текстового ввода")
Send ("{UP}")
Sleep (200)
Send ("{ENTER}")
WinWaitActive("Язык и региональные стандарты")
Send ("{ESC}")
;-----------------------------------------------------------




© OSzone.net 2001-2012