Ru-Board.club
← Вернуться в раздел «Программы»

» AutoHotkey

Автор: shveicar
Дата сообщения: 18.03.2012 18:44
Здравствуйте.
Подскажите, как сделать авто набор текста по клавише,
Код: f5:: Send
Автор: creature_ws
Дата сообщения: 18.03.2012 19:33

Код: var := "
(
<center>
<object classid=""clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"" codebase=""http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"" width=""640"" height=""480"">
<param name=""movie"" value=""11.swf"" />
<param name=""quality"" value=""high"" />
<param name=""allowScriptAccess"" value=""always"" />
<param name=""wmode"" value=""transparent"">
<embed src=""11.swf""
quality=""high""
type=""application/x-shockwave-flash""
WMODE=""transparent""
width=""640""
height=""480""
pluginspage=""http://www.macromedia.com/go/getflashplayer""
allowScriptAccess=""always"" />
</object></center>
) "

f5::SendInput % "{Raw}" . var
Автор: shveicar
Дата сообщения: 18.03.2012 20:10
creature_ws
Спасибо за помощь, и за информацию.
Сделал мини програмку для html , но команда F11 работать не хочет (хотя отдельно без MsgBox работает) Подскажите в чем причина.
Код:
Menu, Tray, Tip, справка F10
F10::MsgBox,
(
кратко команда:правая клавиша минус-вставить пробел в виде &nbsp
клавиша F11 - вставить блок для swf
клавиша F12 - выход из программы
)

return

var := "
(
<center>
<object classid=""clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"" codebase=""http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"" width=""640"" height=""480"">
<param name=""movie"" value=""11.swf"" />
<param name=""quality"" value=""high"" />
<param name=""allowScriptAccess"" value=""always"" />
<param name=""wmode"" value=""transparent"">
<embed src=""11.swf""
quality=""high""
type=""application/x-shockwave-flash""
WMODE=""transparent""
width=""640""
height=""480""
pluginspage=""http://www.macromedia.com/go/getflashplayer""
allowScriptAccess=""always"" />
</object></center>
) "
F11:: SendInput % "{Raw}" . var
return

NumpadSub::Send &nbsp;
F12:: ExitApp
Автор: creature_ws
Дата сообщения: 19.03.2012 00:30
На этом форуме, при необходимости добавить что-то существенное к написанному, лучше создать новое сообщение ну это так, отступление.

В вашем коде при нажатии F11 «не печатается содержимое var» потому как это самое содержимое в переменную var никогда не будет записано, потому как присваивание значения не будет выполнено, так как присваивание лежит вне выполняемых подпрограмм скрипта.

После запуска, выполнение скрипта происходит до, например, первого Return или метки горячей клавиши.

Каждая метка горячей клавиши — отдельная подпрограмма, выполняющаяся при нажатии пользователем соответствующей клавиши клавиатуры.

Чтобы при нажатии F11 содержимое var начинало «печататься» — запись в var нужного текста должна происходить до «начала печати». Этого можно добиться перенеся строки скрипта в которых производится запись в var в «начало скрипта» (т.е. до первого return или метки горячей клавиши), либо в подпрограмму горячей клавиши F11, тогда, при каждом нажатии F11 содержимое var будет перезаписываться тем же текстом, что будет внесён при первом нажатии.
[more=варианты кода свёрнуты]

Оба варианта рабочие, первый вариант правильный, второй неправильный

Код:
Menu, Tray, Tip, справка F10
var := "
(
<center>
<object classid=""clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"" codebase=""http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"" width=""640"" height=""480"">
<param name=""movie"" value=""11.swf"" />
<param name=""quality"" value=""high"" />
<param name=""allowScriptAccess"" value=""always"" />
<param name=""wmode"" value=""transparent"">
<embed src=""11.swf""
quality=""high""
type=""application/x-shockwave-flash""
WMODE=""transparent""
width=""640""
height=""480""
pluginspage=""http://www.macromedia.com/go/getflashplayer""
allowScriptAccess=""always"" />
</object></center>
) "

F10::MsgBox, % "кратко команда:правая клавиша минус-вставить пробел в виде &nbsp`n"
. "клавиша F11 - вставить блок для swf`n"
. "клавиша F12 - выход из программы"

F11:: SendInput % "{Raw}" . var

NumpadSub::Send &nbsp;

F12:: ExitApp
Автор: shveicar
Дата сообщения: 19.03.2012 01:10
creature_ws
Еще раз Большое Спасибо, - прям "разжевали и в рот положили"
Порой, Смешные вопросы для профи - вызывают у новичка, - затык....
Буду учиться дальше...
Автор: creature_ws
Дата сообщения: 07.04.2012 03:56
В результате «волевого решения» нового администратора официального сайта, после редизайна главной страницы ссылка для скачивания ведёт к устаревшей и не поддерживаемой версии AHK (последний релиз от 2009 года).

В связи с этим вижу необходимость добавить в шапку ссылку на страницу «актуальной версии» программы — Autohotkey-L.
Автор: OnMyDSeeAtAll
Дата сообщения: 08.04.2012 17:36
Поддержу коллегу creature_ws, ибо "косяк" очевиден.
Автор: screenshot
Дата сообщения: 13.04.2012 18:27
[more] [more] Здравствуйте! У меня есть одна история.. Сейчас вы будете смеяться и называть меня нубом, хотя, признаюсь - это так и есть. Все дело в том что в далекие 1995 годы я, как и большинство из нас, играли в игры на приставках (Sega, Dendy). Так уж получилось, что я в те времена был чемпионом города по Ultimate Mortal Kombat 3. Ну соответственно это время закончилось, институт, учеба, работа. Но 2 года назад я открыл для себя Эмуляторы, которые точно эмулировали эти игры и при этом можно было играть онлайн. За два года попал в топ 20 страны.
А вот теперь сама проблема: Официально вышла игра Mortal Kombat Arcade Kolleсtion (все морталы от первого до умк3 в одном .exe) и вот один из моих любимых персонажей там, для меня, не доступен! Ибо чтобы его выбрать нужно одновременно нажать на клаве (num4, num5, num6, num2, A(англ)) либо (num4, num5, num6, num2, D(англ)) - если персонаж появляется справа. Но у меня залипают клавиши и я не могу!
2я проблема: В эмуляторах на num0 (в set controls это было доступно) у меня было запитано одновременное нажатие клавишь num1 и num4 (для Китаны и Рептайла)
Я подумал что все это смогу решить в AutoHotKeys, но оказалось что я лох.
В связи с невысокой популярностью игры, готовых макросов нет ни на одном МК форуме (
Если бы кто-то мог мне помочь, я бы поставил пивка, ну или бабла на телефон ) [/more]

[/more]
Автор: creature_ws
Дата сообщения: 13.04.2012 18:46
Правильно, такую подачу просто необходимо прятать под [ more ]

Код: !vk41::
!vk44::Send % "{Numpad4 Down}{Numpad5 Down}{Numpad6 Down}{Numpad2 Down}{"
. SubStr(A_ThisHotkey, 2) . "}"
. "{Numpad4 Up}{Numpad5 Up}{Numpad6 Up}{Numpad2 Up}"
Автор: screenshot
Дата сообщения: 13.04.2012 20:41
creature_ws

Большое спасибо за содействие, но есть один момент:
Для того чтобы получить персонажа - надо нажать num4,5,6,2,a и держать 7 секунд.

При однократном нажатии макрос выдает
4562a

При удержании

4562aaaaaaaaaaaaaaaaaaaaaaaaaaa

Соответственно персонажа я так и не получил )
Автор: creature_ws
Дата сообщения: 13.04.2012 20:52
Может еще какие «незначительные уточнения» будут?

Код: #MenuMaskKey vk7
$!vk41::
$!vk44::
SendInput % "{Numpad4 Down}{Numpad5 Down}{Numpad6 Down}{Numpad2 Down}{" SubStr(A_ThisHotkey, 3) " Down}"
KeyWait % SubStr(A_ThisHotkey, 3)
SendInput % "{Numpad4 Up}{Numpad5 Up}{Numpad6 Up}{Numpad2 Up}{" SubStr(A_ThisHotkey, 3) " Up}"
return
Автор: screenshot
Дата сообщения: 13.04.2012 20:58
а этот не работает

Error at line 1

Line Text: #MenuMaskKey vk7
Error: This line does not constaint a recognized action.
Автор: creature_ws
Дата сообщения: 13.04.2012 21:00
А нужно использовать актуальные версии AHK.
Автор: screenshot
Дата сообщения: 13.04.2012 21:08
creature_ws

Огромное спасибо за помощь, давай номер мобилы )

ну или если живешь в Ростове-на-Дону, говори куда пиво подвезти )

http://s019.radikal.ru/i632/1204/3b/3ced829449fb.jpg

Я 10й в мире на ПК версии WoooHooo ) (первые 4 читаки, так что 6й)
Автор: creature_ws
Дата сообщения: 13.04.2012 21:41
В Австралию вези, нынешнему разработчику AHK.
Не стоит благодарностей.
Поздравляю с 6-м местом.
Автор: screenshot
Дата сообщения: 13.04.2012 22:00
Спасибо друг! Это поможет мне и еще одному пареньку пробиться выше! В топ 10 целых 2 РОССИЯНИНА из хреналиона людей по всему миру!

ой, от радости забыл спросить ). Я могу запитать num1 + num 4 на клавишу num 0 в этом же макросе? Они же друг другу мешать не будут?
Автор: OnMyDSeeAtAll
Дата сообщения: 15.04.2012 03:03

Код: sc52::SendInput, {sc4F}{sc4B}
Автор: screenshot
Дата сообщения: 15.04.2012 04:34
А этот почему-то не работает (
В блокноте не выдает никаких символов а просто смещает курсор на 1 назад. Но все равно спасибо, я вообще сам собирался его делать, сейчас вот в литературе копаюсь
Автор: OnMyDSeeAtAll
Дата сообщения: 15.04.2012 16:19
Тогда так, с учётом состояния клавиши NumLock:

Код: sc52::SendInput, % "{"((Bool:=GetKeyState("NumLock", "T"))
? "Numpad1":"NumpadEnd")"}"
. "{"(
Bool ? "Numpad4":"NumpadLeft")"}"
Автор: screenshot
Дата сообщения: 15.04.2012 22:14
Оуу еее!!! Спасибо дружище!
Автор: imu7ic
Дата сообщения: 24.04.2012 00:22
Что если я вместо
<!vk53:: send 8 ; Alt+ s -> 8
напишу
<!s:: send 8 ; Alt+ s -> 8

Вроде работает, но может так не делать лучше?
Где брать коды нужных мне кнопок тогда?
Автор: aidomars
Дата сообщения: 24.04.2012 05:21
Лучше так не делать, если программой будет пользоваться еще кто то. Будь у него раскладка по умолчанию другая, получит ошибку (работать будет, если поменять !s на !ы).
Гугли Коды символов ASCII.
Автор: imu7ic
Дата сообщения: 24.04.2012 14:46
aidomars
понятно. Про коды нашёл, но что-то не получается заставить работать знаки минуса, плюса, точки для отделения десятичной части.

Скрипт для переноса цифрового блока правлю под себя. Что не так

Код: #NoTrayIcon
#NoEnv ; стартовая мантра
SetKeyDelay 0 ; Данная команда задает более быструю эмуляцию нажатий клавиш, чем определено по умолчанию.
Process Priority,,High
SendMode Input
#UseHook, On ; Предосторожность на случай, если клавиша должна будет
; посылать саму себя. Делает то же, что префикс $, только
; для всех гор. клавиш, которые ниже.
Critical

; При нажатой клавише Alt кнопки 123qweasdzxc, а также ~4rfv, Esc и CapsLock,
; работают как "перевернутый" NumPad "для левой руки" ("телефонная" раскладка рулит!).

; Мне по работе часто бывает нужно ввести 2-3-несколько цифр, притом,
; что правая рука занята мышкой (я правша). Отрывать руку, включать NumLock,
; набирать цифры, ВЫКЛЮЧАТЬ NumLock (у меня он постоянно выключен, я привык
; к навигации на NumPad'е в стиле IBM-XT). Клавиатуры "для левшей" и отдельные
; NumPad'ы неудобны, поскольку являются просто "перенесенными" частями клавиатуры
; справа налево, БЕЗ АДАПТАЦИИ (!) под левую руку. Так был задуман этот скрипт.

; Безусловно, написание скрипта было бы невозможно без помощи сайта (форума)
; http://forum.script-coding.com/index.php, и его активных участников!

; (C)2008 by Steve Key (Steve KEY Laboratory) e-mail: Steve_KEY@mail.ru


<!vk4A:: send 1 ; Alt+ j -> 1
<!vk4B:: send 2 ; Alt+ k -> 2
<!vk4C:: send 3 ; Alt+ l -> 3
<!vk55:: send 4 ; Alt+ u -> 4
<!vk49:: send 5 ; Alt+ i -> 5
<!vk4F:: send 6 ; Alt+ o -> 6
<!vk37:: send 7 ; Alt+ 7 -> 7
<!vk38:: send 8 ; Alt+ 8 -> 8
<!vk39:: send 9 ; Alt+ 9 -> 9
<!vk4D:: send 0 ; Alt+ M -> 0
<!vk2C:: send 000 ; Alt+ , -> три нуля для тысяч
<!vk2E:: send {ASC 44} ; Alt+ . -> , (для отделения десятичной дроби)

<!vkC0:: send {ASC 37} ; Alt+ ` -> %
<!vk30:: send {ASC 47} ; Alt+ 0 -> /
<!vk50:: send {ASC 42} ; Alt+ p -> *
<!vk3B:: send {ASC 45} ; Alt+ ; -> -
<!vk2F:: send {ASC 43} ; Alt+ / -> +


<!Esc:: send {BS} ; Alt+ Esc -> BackSpace

<!CapsLock:: send {Enter} ; Alt+ CapsLock -> Enter

#UseHook, Off
Автор: imu7ic
Дата сообщения: 25.04.2012 07:52
Строчки



Код: <!vk2C:: send 000 ; Alt+ , -> три нуля для тысяч
<!vk2E:: send {ASC 44} ; Alt+ . -> , (для отделения десятичной дроби)

<!vk3B:: send {ASC 45} ; Alt+ ; -> -
<!vk2F:: send {ASC 43} ; Alt+ / -> +
Автор: creature_ws
Дата сообщения: 25.04.2012 10:23

Код: <!vkBC:: send 000 ; Alt+ , -> три нуля для тысяч
<!vkBE:: send {ASC 44} ; Alt+ . -> , (для отделения десятичной дроби)

<!vkBA:: send {ASC 45} ; Alt+ ; -> -
<!vkBF:: send {ASC 43} ; Alt+ / -> +
Автор: imu7ic
Дата сообщения: 25.04.2012 13:44
creature_ws а откуда мне взять значение для других клавиш? Брал с таблицы http://ascii.org.ru/im/Image21.gif похоже она не подходит (для запятой там 2С как раз)

Попробовал отсюда ещё - http://pascal.toom.su/866 тоже на работает.
Вот новый вариант, но он не работает (не работающее с комментом соответствующим):

Код: <!vkBC:: send 00 ; Alt+ , -> два нуля для сотен
<!vk2E:: send {ASC 44} ; Alt+ . -> , (для отделения десятичной дроби) не работает

<!vkC0:: send {ASC 37} ; Alt+ ` -> % пока не надо
<!vk30:: send {ASC 47} ; Alt+ 0 -> /
<!vk50:: send {ASC 42} ; Alt+ p -> *
<!vk3B:: send {ASC 45} ; Alt+ ; -> - не работает
<!vk2F:: send {ASC 43} ; Alt+ / -> + не работает
Автор: creature_ws
Дата сообщения: 25.04.2012 15:24
Виртуальные коды клавиш по ссылке (Использовать, естественно, нужно не псевдоним клавиши, а hex код из второго столбца)
Автор: imu7ic
Дата сообщения: 26.04.2012 14:24
Читаю, просто коды не оттуда беру

aidomars
creature_ws
спасибо за помощь.

Автор: Quasus
Дата сообщения: 08.05.2012 20:41
А я обычно использую сканкоды вместо виртуальных. Скажите, пожалуйст
Автор: monsoon
Дата сообщения: 11.05.2012 10:58
На donationcoder есть много скриптов, один из них Accents. Идея его понравилась.
При повторном нажатии клавиши всплывает окошко, в котором указывается какой символ текущий и какие можно выбрать для ввода при последующих нажатиях.


В скрипте проверяется не сканкод клавиши, а сам символ.
Если нажимать в английской раскладке, все работает замечательно.
В русской окошка не появляется и в начале вставляется латинский символ, затем при повторном нажатии - русский.
Например в настройках по умолчанию для символа "i", если нажимать последовательно эту клавишу, можно выбрать символы "п","о","м","н","i".
Но если переключиться в русскую раскладку, т.е. нажать "ш", окошко не всплывает и вводится символ "i", при повторном нажатии "i" остается и вводится "ш" и дальше по кругу.
Добавить в ini-файл русский символ "ш" и навесить те же "п","о","м","н","i" не выходит, выдается ошибка, да и не хотелось бы дублировать в ini-файле каждую латинской букву русской.
Если навесить на "1", работает и в англ. и русской раскладках, но не работает для "1", набранной на numpad.

Если бы можно было переделать обработку не на символ, а на скан или виртуальный код, все проблемы бы ушли. И можно было бы знаки препинания или особые символы навесить, например, на numpad клавиши.

Если кто-либо захочет посмотреть вот прямые ссылки: скомпилированный exe-файл, исходник ahk.

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: как добавить ивритские шрифты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.