Что нового

[Мышь, клавиатура] Скрипт для эмуляции набора с клавиатуры.

Jonsky

Новичок
Сообщения
8
Репутация
0
Версия AutoIt:
v3.3.8.1
Описание:
Нужен скриптик, который будет эмулировать набор с клавиатуры комбинации буквы и цифры через тире. Например А-137. Я сначала написал вот так:
Код:
Send("{А 1}") 
Send("{NUMPADSUB}")
send("{NUMPAD1}")
send("{NUMPAD3}")
send("{NUMPAD7}")

Первый раз он работает нормально, но потом начинает печатать цифры то по отдельности, то без тире, то "А" пропускать. Видимо нужно допилить что то еще, а времени нет разбираться. Помогите пожалуйста.
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
может стоит отправить символами оО ?
Код:
send("a-123")
 
Автор
J

Jonsky

Новичок
Сообщения
8
Репутация
0
lirikmel
Почти тоже самое получается.
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
не может быть

Код:
#RequireAdmin
Opt("SendKeyDownDelay", 150) ; задержка между нажатием и отпусканием одной клавиши
Opt("SendKeyDelay", 50) ; задержка между отпусканием клавиши и нажатием следующей

Send("#r")
WinWaitActive("Выполнить")
Send("notepad.exe{Enter}")
WinWaitActive("[CLASS:Notepad]")

while 1
send("a-123")
sleep(100)
WEnd
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
Run('notepad.exe')
WinWait('[CLASS:Notepad]')
For $i = 0 To 20
	Send(Chr(Random(192, 223)) & ' - ' & Random(100, 999, 1) & @CR)
	Sleep(1000)
Next



Добавлено:
Сообщение автоматически объединено:

Код:
Run("notepad.exe")
WinWait("[CLASS:Notepad]")

; слежение за активностью программы / окна
While 1
	If Not WinExists("[CLASS:Notepad]") Then
		Exit
	ElseIf WinActive("[CLASS:Notepad]")  Then 
		Send("A-137")
	EndIf
	Sleep(1000)
WEnd
 
Автор
J

Jonsky

Новичок
Сообщения
8
Репутация
0
Спасибо! Но это немного не то, что мне нужно. Все дело в том, что этот скрипт будет работать только в блокноте, а мне нужно чтобы он работал в любой программе. Точнее есть одна специализированная программа, в которой приходиться из ComboBox, из большого списка выбирать этот А-137. Свой скрипт, который я написал, я биндил на клавишу Q например, т.е по ее нажатию выполнялся это скрипт, и происходила выборка нажатием одной клавиши.
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Jonsky [?]
этот скрипт будет работать только в блокноте
Этот скрипт будет работать в любой программе имеющей "видимые контролы" и классы для AutoIt.
 
Автор
J

Jonsky

Новичок
Сообщения
8
Репутация
0
ivsatel
Тем не менее, он выполняется циклично. Мне же нужно, чтобы когда я "подсиняю" комбобокс, выполняю скрипт, из огромного списка выбралась одна, нужная мне строчка. Просто скролингом перематывать этот список несподручно. Вот например на скриншоте, если я начну вводить с клавиатуры "г" "е" "о", предварительно "подсинив", из списка вылетит "Геометрический вальс". Вот именно такое действие мне и нужно имитировать.
e45574638486.png
 
Автор
J

Jonsky

Новичок
Сообщения
8
Репутация
0
InnI
Я же написал, например. По другому не знаю еще как объяснить просто. Без привязки к отдельному окну такую штучку реализовать не получиться ? Мне надо чтобы просто по одной кнопке вводились символы, мой скрипт меня устраивал, в принципе. Просто он почему то переставал работать или начинал пропускать цифры почему то.
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
В мою маленькую голову приходит только две мысли:
1. Какой-то процесс тормозит выполнение скрипта (может какой-то антивирус).
2. Другое (на следующей итерации) окно тормозит при выполнении скрипта.
Но чем Вам не подходит вариант InnI? Вариаций окон 100 ;D?

Еще вариант:
Код:
Send("{А DOWN}")
Sleep(100)
Send("{A UP}")
; ...
 
Автор
J

Jonsky

Новичок
Сообщения
8
Репутация
0
Z_Lenar [?]
Но чем Вам не подходит вариант InnI? Вариаций окон 100
grin.gif
?
Ну да, в принципе, подходит. Тогда нужно будет сделать для этого окошка.
Код:
>>>> Window <<<<
Title:	Выбор графика и смены
Class:	TFormSelMGS
Position:	549, 310
Size:	293, 277
Style:	0x96C80000
ExStyle:	0x00010101
Handle:	0x0E670344

>>>> Control <<<<
Class:	TComboBox
Instance:	3
ClassnameNN:	TComboBox3
Name:	
Advanced (Class):	[CLASS:TComboBox; INSTANCE:3]
ID:	45222910
Text:	
Position:	9, 20
Size:	273, 22
ControlClick Coords:	73, 16
Style:	0x54010253
ExStyle:	0x00000000
Handle:	0x02B20BFE

>>>> Mouse <<<<
Position:	634, 375
Cursor ID:	0
Color:	0xFFFFFF

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
1 [в работе]
1
Отмена
Принять
04.12.2013 20:00:00
04.12.2013 05:45:00
04.12.2013 05:45:00
А-32
>>>> Hidden Text <<<<
 
Автор
J

Jonsky

Новичок
Сообщения
8
Репутация
0
InnI
Спасибо! Как же хорошо, что существуют такие люди как вы :laugh:

А можно, чтобы после выборки А-137, далее просто "подсинился" комбобокс, который находиться ниже ? Вот его параметры:
Код:
>>>> Window <<<<
Title:	Выбор графика и смены
Class:	TFormSelMGS
Position:	573, 296
Size:	293, 277
Style:	0x96C80000
ExStyle:	0x00010101
Handle:	0x045C049E

>>>> Control <<<<
Class:	TComboBox
Instance:	2
ClassnameNN:	TComboBox2
Name:	
Advanced (Class):	[CLASS:TComboBox; INSTANCE:2]
ID:	79955052
Text:	
Position:	9, 64
Size:	273, 22
ControlClick Coords:	119, 14
Style:	0x54010253
ExStyle:	0x00000000
Handle:	0x04C4046C

>>>> Mouse <<<<
Position:	704, 403
Cursor ID:	0
Color:	0xFFFFFF

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
1 [в работе]
1
Отмена
Принять
25.12.2013 20:00:00
25.12.2013 05:45:00
25.12.2013 05:45:00
А-32


>>>> Hidden Text <<<<
Если можно, будет тогда совсем замечательно! Но вообще и сейчас уже замечательно :smile:
 
Автор
J

Jonsky

Новичок
Сообщения
8
Репутация
0
InnI, а можно написать нажатие на "применить" в этом же окошке ?
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Jonsky
Код:
ControlClick("window","","[text:Применить]")
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Jonsky [?]
в этом же окошке
Не понял - в каком. Если в окне свойств, то так
Код:
ControlClick("Свойства: Экран", "", "Button9")
Для вашего окна измените заголовок и номер (instance) кнопки.

MnM
Если для окна свойств, то текст должен быть "При&менить".
 
Верх