Что нового

при нажатии одной кнопки клавиатуры, посылается команда нажать несколько.

chumavik

Новичок
Сообщения
4
Репутация
0
Версия AutoIt: 3.3.6.1

Описание: Здравствуйте. Не могу никак найти программу, которая биндила бы созданный макрос на разные кнопки клавиатуры. Например при нажатии q срабатывает сочетание q+p+l, при нажатии shift + q срабатывает сочетание shift + q +m+n. Наше тему вот с таким скриптом

Код:
Global $Paused
HotKeySet("{PAUSE}", "TogglePause");поставить/снять паузу
HotKeySet("{ESC}", "Terminate") ;выход
HotKeySet("+z", "PressKey") ;запуск (комбинация Shift + z)

While 1
    Sleep(100)
WEnd

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

Func PressKey()
    While 1
        ;Sleep(100)
        Send("1")
        Send("{SPACE}")
        Send("2")
        MouseClick ("left")
        Send("1")
        Send("{SPACE}")
        Send("4")
        MouseClick ("left")
        Send("2")
        MouseClick ("left")
        Send("1")
    WEnd
EndFunc


Вот только, сохранив скрипт и запустив run script на нажатие комбинации shift + z блокнот никак не отреагировал ((
Зарание спасибо

Примечания:
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
281
Странно. Прежде чем выкладывать этот скрипт в ту тему, я проверил его работоспособность.
У меня на WinXP нормально работает.
На всякий случай:
надо запустить скрипт, открыть Блокнот и в Блокноте напечатать Shift + z
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
281
Да, точно.
Для q+p+l и shift+q+m+n назначить клавишу q и Shift+q у меня не получилось.
А так, вот:
Код:
HotKeySet("{ESC}", "Terminate") ;выход
HotKeySet("z", "PressKey1") ;клавиша z для q+p+l
HotKeySet("x", "PressKey2") ;клавиша x для shift+q+m+n

While 1
    Sleep(100)
WEnd

Func Terminate()
    Exit 0
EndFunc

Func PressKey1()
	Send("{q down}")
	Send("{p down}")
	Send("{l down}")
	Send("{q up}")
	Send("{p up}")
	Send("{l up}")        
EndFunc

Func PressKey2()
	Send("{LSHIFT down}")
	Send("{q down}")
	Send("{m down}")
	Send("{n down}")
	Send("{q up}")
	Send("{m up}")
	Send("{n up}")
	Send("{LSHIFT up}")
EndFunc
 
Автор
C

chumavik

Новичок
Сообщения
4
Репутация
0
У меня ка не работало, так и не работает.
Возможно проблема в том что у меня виндовс 7? Даже не читая документацию, логичка скрипта понятна как ясный день, однако, не работает (((
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
281
Не работал в Win 7, но в справке про это написано.
Using AutoIt - AutoIt on Windows Vista

Попробуй прописать в первой строке #requireadmin
 
Автор
C

chumavik

Новичок
Сообщения
4
Репутация
0
Не помогло. Прийдется констатировать, я потерпел фиаско. Прийдется покупать програмируемую клавиатуру (
 

axlwor

Скриптер
Сообщения
657
Репутация
147
win7 32. в блокноте код работает.
добавь
Код:
HotKeySet("+я", "PressKey")

Это я про первый пост. Для остального сделаешь как я
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 574
Репутация
335
А не в игре ли вы пытаетесь это сделать?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
Код:
#Include <WinAPIEx.au3>

HotKeySet('+q', '_Send')

While 1
	Sleep(1000)
WEnd

Func _Send()
;	_WinAPI_Keybd_Event(0x10, 0) ; SHIFT down
;	_WinAPI_Keybd_Event(0x51, 0) ; Q down
	_WinAPI_Keybd_Event(0x4D, 0) ; M down
	_WinAPI_Keybd_Event(0x4E, 0) ; N down
	Sleep(100)
;	_WinAPI_Keybd_Event(0x10, 2) ; SHIFT up
;	_WinAPI_Keybd_Event(0x51, 2) ; Q up
	_WinAPI_Keybd_Event(0x4D, 2) ; M up
	_WinAPI_Keybd_Event(0x4E, 2) ; N up
EndFunc   ;==>_Send
 
Автор
C

chumavik

Новичок
Сообщения
4
Репутация
0
Всем большое спасибо. Не знаю что именно я сделал, но все скрипты, указанные выше уважаемыми форумчанами заработали. Большое спасибо. Вот только я не не смог реализовать функцию паузы скрипта. Т.е что бы кнопками, на которых используюется HotKeySet мождно было использовать в своем первозданном состоянии. Это пекрасно реализуется использованием Exit, а вот как начать занова выполнение скрипта, я не допетрил.
 
Верх