Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoHotkey

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Открыть новую тему     Написать ответ в эту тему

chum2000

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

   
 
Актуальная версия: AutoHotkey 2.0.5 от 12 августа 2023
Версия для Windows XP | Changes from v1.1 to v2.0
 
Официальный сайт | Англоязычный форум | Архивный форум | Русскоязычный форум
Документация (англ.) | Документация и статьи (рус.) | История изменений
 
Подборка полезных скриптов | AutoHotkey + Total Commander
 

Цитата:
AutoHotkey — бесплатная программа с открытым исходным кодом для создания макросов и автоматизации, позволяющая упростить выполнение повторяющихся задач.
 
AutoHotkey позволяет изменить интерфейс практически любой программы. Имеет собственный скриптовый язык, специально нацеленный на лёгкое назначение и переназначение горячих клавиш.
 
AutoHotkey можно использовать для запуска программ, отправки текста, имитации мыши. Скриптовый язык позволяет управлять окнами, файлами и папками. Команды могут быть активированы горячими клавишами.
 
Также имеются возможности создания GUI, работы с реестром, использования собственного API окон для вызова DLL-файлов. Скрипты можно скомпилировать в EXE-файл и запускать на любом компьютере с Windows соответствующей версии.
 
Наиболее частое применение AutoHotkey:
- переназначение клавиш (глобально или у отдельных программ)
- управление мышью с помощью клавиатуры или джойстика
- слежение за системой, автоматическое выполнение некоторых действий по желанию пользователя, таких как напоминание, сканирование или резервное копирование
 

Всего записей: 505 | Зарегистр. 04-03-2004 | Отправлено: 00:28 02-06-2005 | Исправлено: Egor2020, 10:08 21-09-2023
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll

Цитата:
У меня нормально

 
Поменял на 1 нажатие... Спасибо, работает, но через 2 через 3 раза... Кстати, в этом окне работает безупречно (окно ввода сообщения в форум).
завтра пошлю файлик, если будет желание, запустите на Вашей машине, пожалуйста. Может, при копировании с web странички как-то кавычки неправильно передаются.. (как то раз была такая засада).
Пробовал обмануть проблемку по-другому: ну, думаю, раз так не хочешь, я тебе так вот (при наличии жесткой привязки к локали можно и команду для LED индикатора привязать):
Код от The gray Cardinal
 

Код:
~^Shift:: Exit
~+Ctrl:: Exit
Ctrl::
  SetFormat, Integer, H
  Locale1=0x4090409  ; Английский (американский).
  Locale2=0x4190419  ; Русский.
  WinGet, WinID,, A
  ThreadID:=DllCall("GetWindowThreadProcessId", "Int", WinID, "Int", "0")
  InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID)
  if(InputLocaleID=Locale1)
    SendMessage, 0x50,, % Locale2,, A
  else if(InputLocaleID=Locale2)
    SendMessage, 0x50,, % Locale1,, A
Exit

 
Определяя идентификатор локали :
 

Код:
F11::
  SetFormat, Integer, H
  WinGet, WinID,, A
  ThreadID:=DllCall("GetWindowThreadProcessId", UInt, WinID, UInt, 0)
  InputLocaleID:=DllCall("GetKeyboardLayout", UInt, ThreadID, UInt)
  MsgBox, %InputLocaleID%
Return

Так у меня он (скрипт) вооще без каких-либо признаков жизни(идентификатор определяется)... Возможно из-за версии AHK: скрипт 2006 года, у меня AutoHotkey_L
Наверное, все-таки, проблема с прокладкой между рулем и сиденьем
 
P.S.  Может кто-нибудь подсказать: почему для раскладок с кодом вида 0x8190819 скрипт работает, а раскладки, определяемые как 0xF0042412 (с дополнительной буквой впереди) полностью игнорируются???
 
P.P.S  Братцы, памагите пазобратца... Совсем запутался. Короче так:
 
Когда скрипты AHK работают непосредственно с идентификатором раскладки, как-то так:
PostMessage, 0x50, 0, 0x8090809,, A
он записывается в виде: 0x8090809 - это для британской, например.
И в таком же виде он определяется при помощи специальных скриптов. Все пока красиво.
Однако, если говорить про несколько раскладок для одного языка, начинается каша:
Русская обычная раскладка определяется как 0x4190419, и отзывается, когда скрипт использует такой идентификатор.
Однако если мы включаем Russian(Typewriter), при определении мы получаем код 0xF0080419. И на такой код раскладка при попытке вызвать ее цкриптом не отзывается.
В регистре для этих раскладок мы имеем записи:  00000419 и 00010419. Откуда берется, например, 0x4190419 - я тупо не понимаю. И мистер гугл молчит. Там вообще только про LVIC, который имеет 5 знаков и оперирует только языками без детализации раскладок.
 
Итог:
После бессовестного издевательства над временем OnMyDSeeAtAll он сделал версию  скрипта
который работает без проблем, оперируя идентификаторами локали как простых, так и дополнительных раскладок. Так что
Цитата:
говорить про несколько раскладок для одного языка, начинается каша
теряет актуальность
 
Единственный непонятный глючок на одной из машин: в Sticky Notes и в AkelPad скрипт переключает с русской раскладки на английскую, после чего работать отказывается. Что там на машине не так, так и не нашел

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 06:08 02-10-2013 | Исправлено: vadim3sh, 20:44 06-10-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет
Напишу в новом посте (постУ ? ), чтобы немножко "омолодить" тему...
 
А вообще интересно, где собака зарыта:
 

Код:
#1:: SendMessage, 0x50,, 0x8090809,, A ; английский (брит)
#2:: SendMessage, 0x50,, F0080419,, A ; русский (typewriter)
 

 
0x50 - это сообщение Windows : WM_INPUTLANGCHANGEREQUEST , которое "Posted to the window with the focus when the user chooses a new input language, either with the hotkey (specified in the Keyboard control panel application) or from the indicator on the system taskbar. "
 
Типа должен работать как часы... Но в некоторых приложениях не работает: Sticky Notes, AkelPad...
Я, пока что, эти нашел. В глубоких и недоступных моему разумению дебрях пишут, что Win API для 64 bit систем как-то там по-другому работает... ( простите, если это полный бред).
Короче: может быть, нестабильная работа Window Notifications на моей машине связана с 64 bit ной системой?
 

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 22:55 12-10-2013
CrackeR



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Интересует как заставить это работать в fullscreen с помощью GetForegroundWnd
И как правильно в PixelSearch осуществить поиск пикселя нужного цвета с задание погрешности цвета  типу 0xBB161D 0x30

Код:
 
#include <WinAPIEx.au3>
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
Global $Paused, $counter = 0
HotKeySet("{F3}", "TogglePause")
HotKeySet("{F2}", "Terminate")
Shoot()
Func Shoot()
While 1
If _WinAPI_GetAsyncKeyState(0x02) = True Then    
Local $coord = PixelSearch(629, 512, 649, 490,12191508,20)  Погрешность цвета.
If Not @error Then
MouseClick("Left")
Sleep(150)
EndIf
EndIf
WEnd
EndFunc
While 1
$counter +=1
WEnd
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
;ToolTip('Script is "Paused"',0,0, $counter, 1)
WEnd
ToolTip("")
EndFunc
Func Terminate()
Exit 0
EndFunc
 

Всего записей: 666 | Зарегистр. 01-10-2003 | Отправлено: 15:38 25-10-2013
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Восьмой параметр команды PixelSearch  задаёт "погрешность цвета".
 
Какое отношение приведенный autoit скрипт имеет к данной теме форума? Причём GetForegroundWnd?

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 22:04 25-10-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет
win7 AHK_L
Переназначение кнопок мышки в играх не работает, или рботает не так, как должно.
Помню, что где-то в мануале читал, как можно пытаться с этим бороться, но убей не помню и не могу найти где... Подскажите, пожалуйста, если кто видел.
Спасибо.

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 02:14 31-10-2013
neemestniii

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста, как сделать скрипт, который в вин хп нажимал бы кнопку далее (или другую выделенную) в окне установки драйверов, а то поменял часть оборудования и теперь винда не может установить дрова на мышь и клаву (тоже новые, старых нет совсем) до установки других драйверов.  Вообщем получилось..
 
Специально для дубов как я..
 

Всего записей: 229 | Зарегистр. 06-08-2009 | Отправлено: 22:39 31-10-2013 | Исправлено: neemestniii, 02:28 01-11-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
теперь винда не может установить дрова на мышь и клаву (тоже новые, старых нет совсем) до установки других драйверов.

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

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 05:04 01-11-2013
neemestniii

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
т.е. скрипт нужен для того, чтобы нажимать кнопки, поскольку без драйверов нажимать нечем?  Простите за тупость, а скрипт как установить в такой ситуации?  

Лайв сиди флешки, другая винда(подцепить жесткий к другому компу и из под его винды влезать на него) и тому подобное

Всего записей: 229 | Зарегистр. 06-08-2009 | Отправлено: 12:04 01-11-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь написать простой скрипт для переключения раскладок клавиатуры по нажатию одиночной клавиши Control (стандартный вариант из программы Punto Swither и аналогичных переключалок), чтобы по нажатию Control системе отсылалась комбинация {Alt+Shift+1}.
 
В мануале и на форумах AHK нашёл несколько способов ввода Control.

Код:
Ctrl::Send, +!1
Этот работает, но зато Control перестаёт работать в качестве клавиши-модификатора в комбинации с другими клавишами, например, комбинацию {Ctrl+S} = {S}.  
 
Второй найденный в мануале вариант
Код:
^::Send, +!1
как и следовало ожидать, вообще не работает.
 
А как тогда задать одиночное нажатие клавиши-модификатора? Заранее спасибо!
 
Добавлено:
В качестве альтернативного решения приходит в голову использовать двойное нажатие клавишу Control либо нажатие обоих (левого и правого) Control одновременно. Но как это корректно указать, неясно

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 16:03 03-11-2013 | Исправлено: oshizelly, 16:12 03-11-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Этот работает, но

Попробуйте  

Код:
RCtrl::Send, +!1  
-по идее правый Ctrl, который действительно редко нужен, работает в скрипте, а левый сохраняет родной функционал.
А вообще, если кто-то опытный найдет секунду написать ответ, не очень могу четко разграничить: когда использовать ^, a когда Ctrl.  
 
 
Цитата:
Второй найденный в мануале вариант

это для меня (я, правда, такого не видел) вооще загадка: все время думал, что ^ это знак модификатора, и использовать его самостоятельно нельзя:

Код:
+A::Send, ^1  
(например) для того, чтобы не писать  

Код:
 +A::Send, {Ctrl Down}1{Ctrl Up}
и запись  

Код:
+A::Send, {Ctrl}1
приведет к последовательному нажатию Ctrl и, затем, 1.
 

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 01:26 04-11-2013 | Исправлено: vadim3sh, 01:40 04-11-2013
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
 
Следующий скрипт извлекает содержимое тегов TITLE с определенной страницы CHM-файла:
 

Код:
 
URL := "mk:@MSITStore:" SubStr(A_AhkPath, 1, -3) "chm::/docs/AutoHotkey.htm"
 
req := ComObjCreate("Msxml2.XMLHTTP.6.0")
req.open("GET", URL, 0)
req.send
ResponseText := req.responseText
req := ""
 
MsgBox, % RegExReplace(ResponseText, "s).*?<title>(.*)?</title>.*", "$1")
 

 
Однако в случае, если обрабатываемая страница закодирована в CP1251, кириллический вывод не отобразится. Какая команда будет для перекодировки такого текста?

Всего записей: 1368 | Зарегистр. 05-04-2010 | Отправлено: 14:18 11-11-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh
Спасибо за подсказку.
Однако всё равно остаётся актуальным вопрос, можно ли при помощи AHK настроить так, чтобы при нажатии одиночной клавиши-модификатора, например, Control или Alt, выполнялась заданная команда, а при использовании этой же клавиши-модификатора в сочетании с другими клавишами AHK никак не вмешивался. Например, повесить на нажатие одиночного Ctrl переключение раскладки клавиатуры, но чтобы это не мешало работе всевозможных системных хоткеев вроде Ctrl+S, Ctrl+Shift+A и т.д.

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 03:50 12-11-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет
Я тут вооще попробовал...
 

Код:
Ctrl::
Send , {vk39}
return
 
 
Без всяких телодвижений честно печатает "9", при этом Ctrl+C и Ctrl+V делают copy & paste без каких то отклонений

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 05:35 12-11-2013
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly
Попробуйте поставить знак тильды перед хоткеем:
 

Код:
~Ctrl::

 
Должно сработать.

Всего записей: 1368 | Зарегистр. 05-04-2010 | Отправлено: 13:47 12-11-2013
1ANP



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите можно ли создать скрипты под следующие действия:
1) двойной щелчок по рабочему столу ЛКМ - например для зщапуска нового окна explorer;
2) двойной щелчок ПКМ по рабочему столу - например для запуска Total commander;
3) двойной щелчок ЛКМ в свободном месте окна Explorer - для перехода в папку уровнем выше?

Всего записей: 795 | Зарегистр. 30-05-2007 | Отправлено: 14:15 15-11-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что-то есть здесь

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 23:25 15-11-2013
1ANP



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh
Да, там действительно много информации. Правда ссылки уже не все работают.
Например ссылка на вики: " в частности - для МышеКустомайза Script Listing (Eng), раздел Mouse Related" - не работает.  
Впрочем, как я понял, задачу можно решить даже в более расширенном варианте чем я спрашивал. Попробую по англоязычным форумам поищу.

Всего записей: 795 | Зарегистр. 30-05-2007 | Отправлено: 07:14 16-11-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да тип.. я не про ссылки.. там же коды готовые.. я все время оттуда подворовываю

Цитата:
 
1.1 Банальное одиночное нажатие все же можно расширить, задав, допустим, разные действия в зависимости от того, в каком месте экрана произошло нажатие...............
1.2 Или в каком месте окна:...........................

 
А ссылки я ни разу и не открывал.

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 07:20 16-11-2013 | Исправлено: vadim3sh, 07:22 16-11-2013
1ANP



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
там же коды готовые

Видел - сижу разбираюсь.
Просто хотелось почитать еще и источники на которые автор ссылается, тема то очень интересная.
Этому вообще цены нет: меню своих команд по средней кнопке мыши на рабочем столе

Всего записей: 795 | Зарегистр. 30-05-2007 | Отправлено: 09:11 16-11-2013 | Исправлено: 1ANP, 09:40 16-11-2013
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrackeR 16:38 25-10-2013
Цитата:
...заставить это работать...
Функционал сего кода AutoIt на языке АХК выглядет примерно так:.
Цитата:
...работать в fullscreen с помощью GetForegroundWnd
Объясните подробнее (если для Вас это имеет актуальность).
1ANP 14:15 15-11-2013
Как вариант.

D1D1D1D 14:18 11-11-2013
У меня работает такой вариант (правда приходиться запускать файл).

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 19:01 16-11-2013 | Исправлено: OnMyDSeeAtAll, 03:02 19-11-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoHotkey


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru