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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наверное было много раз, но не могу найти.
Подскажите - как переназначить нажатие клавиши, но оставить её хоткеи?
Нужно переназначить клавишу Win, чтобы при её нажатии срабатывал клик RButton.
Но в то же время оставить рабочими все хоткеи в сочетании с Win (Win+R, Win+Pause и все прочие).

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 07:06 20-09-2013
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли через AHK получить дату файла, лежащего на сервере (через http) ?
Цель - сравнить дату файла на локальном компьютере и на сервере, и если на сервере новая версия - закачать её.

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 04:17 21-09-2013
Any_utka



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уточню предыдущий вопрос, так как он, наверное, для местных гуру слишком сложный. Можно ли как-то задействовать клавишу Fn (синенькая такая
Пробовала определить ее код так, как посоветовал OnMyDSeeAtAll, но в окне истории нажатий клавиш нажатие на нее вообще никак не отражается. Это значит, что нельзя? Или можно, но нужен какой-нибудь хитрый трюк?
 
 
Заранее большое спасибо за совет!

Всего записей: 88 | Зарегистр. 01-02-2010 | Отправлено: 17:04 21-09-2013 | Исправлено: Any_utka, 17:05 21-09-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пишут так:
 
 
"sintet писал(а)вопрос конкретно про клавишу Fn. Возможно ли перехватить её код?
 
Нельзя, у неё нет кода, это переключатель режимов работы контроллера клавиатуры, логического кода она не имеет т.к. обрабатывается самим контроллером клавиатуры не доходя до портов ввода компьютера."
 
Я как-то пробовал - ничего не вышло,,

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 02:03 22-09-2013 | Исправлено: vadim3sh, 02:04 22-09-2013
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@LonerDergunov
Цитата:
Нужно переназначить клавишу Win, чтобы при её нажатии срабатывал клик RButton...
У Вас же их две, сделайте на правую переназначение, левая останется стоковой:
Код:
RWin::RButton

Цитата:
Можно ли через AHK получить дату файла, лежащего на сервере (через http) ?
Не скачивая файл, наверное нет, если не предусмотрен к примеру вариант как тут.
@Any_utka
Цитата:
А какая клавиша больше подойдет вместо <Win>, если <Pause>/<Break> не годится?
На пример ScrollLock (опять-таки не знаю будет ли работать сие переназначение, если физически клавиш нет):
Код:
ScrollLock::RWin

Цитата:
...нужен какой-нибудь хитрый трюк?
Не определяется - значит не судьба.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 14:45 23-09-2013
LonerDergunov



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

Цитата:
Не скачивая файл, наверное нет

Похоже, как-то можно, нашёл обсуждения вот тут и тут. Теперь буду пытаться их осознать.
 

Цитата:
У Вас же их две, сделайте на правую переназначение, левая останется стоковой:
RWin::RButton

С RButton - это была моя описка, на самом деле хотел написать MButton. Хотя не суть важно.
Предложенное решение не подходит. Оно неуниверсальное в целом и не подходит в моём случае в частности.
В случае двух Win - в частных случаях решение сгодится. А если кнопка одна?
Например, переназначить какую-нибудь букву: r::MButton.  При этом не будет работать хоткей Win+R.
Потому интересно как реализовать универсально подобные переназначения. Собственные потуги ни к чему не привели.
Такое впечатление, что-то подобное обсуждалось на русскоязычном форуме. Не могу найти поиском, может ткнёте в тему (если действительно обсуждалось).
 
А во-вторых, всё началось с моего частного случая, который не удаётся решить.
У мыши Logitech T400 средняя кнопка сенсорная и разделена на две части - без громоздких драйверов почти вся кнопка вызывает меню Пуск, и лишь маленькая зона работает непосредственно как средняя кнопка. Цель - сделать чтобы вся кнопка отрабатывала как MButton.
RWin::MButton - ни к чему не приводит.
LWin::MButton - работает, но "отваливаются" все хоткеи с использованием Win-кнопки. А на клавиатуре она только одна - левая (правой Win нету).

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 23:06 24-09-2013
OnMyDSeeAtAll



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

Цитата:
Например, переназначить какую-нибудь букву: r::MButton.  При этом не будет работать хоткей Win+R.

Код:
#If GetKeyState("LWin")
   
vk52::vk52
#If
vk52::MButton

Цитата:
LWin::MButton - работает, но "отваливаются" все хоткеи с использованием Win-кнопки.
Как альтернативу могу предложить пару вариантов:
Код:
; при включённом ScrollLock делаем переназначение
#If GetKeyState("ScrollLock", "T")
;    *LWin::MButton
   
*LWin::
     
Send, {MButton Down}
     
KeyWait, LWin
     
Send, {MButton Up}
     
Return

Код:
; с сочетанием LAlt
LWin & LAlt::Send, {Blind}{MButton}

Цитата:
...(правой Win нету).
Однако...

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 16:46 25-09-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll 15:46 25-09-2013  
Цитата:

Цитата:
Например, переназначить какую-нибудь букву: r::MButton.  При этом не будет работать хоткей Win+R.  


Цитата:
 #If GetKeyState("LWin")  
    
vk52::vk52  
 
#If  
 
vk52::MButton

 

Прошу прощения, нельзя ли парой слов пояснить значение условий. Примерно догадываюсь об общем смысле, что если клавиша <Win> нажата, то выполнить вот так, а если нет, то вот эдак... Но хочется понять точно. А то ещё запустишь ненароком Format C:\ /y...

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 19:16 25-09-2013
OnMyDSeeAtAll



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

Цитата:
...пояснить значение условий.
В данном случае условие тут одно.
Цитата:
...хочется понять точно.
Создаём контекстно-зависимую горячую клавишу (данная клавиша будет переназначена на саму себя), контекстом её будет возвращённый результат (булево значение) проверки состояния LWin возвращаемый встроенной функцией GetKeyState. Закрываем границу воздействия этой директивы прописывая ещё раз её название но без параметра (#If), в том случае если ниже в коде есть ещё какие-либо горячии клавиши, если оные расположены/прописаны выше данной директивы, то прописывать пустую директиву нет необходимости.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 22:31 25-09-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет
 
При переключении между окнами windows 7 операционка запоминает язык ввода для каждого приложения и потом услужливо пь&#235;т кровь перключая раскладку автоматом.
Не знает ли кто-нибудь скрипта, который не только переключает раскладку, но и предотвращает от переключения раскладки виндой при переходе между окнами. Или какое-то другое решение...
А то использование LED на Caps LOck теряет всякий смысл из-за этой &#163;$%%??$$? "фичи".
 
Спасибо

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 14:50 26-09-2013
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
К примеру сделал-бы так:
Код:
#SingleInstance, Force
IfEqual
, A_IsAdmin, % False, Run, % "*RunAs """A_ScriptFullPath """"
SetStoreCapslockMode,
Off
OnExit
, % "ExitScript"
 
""
.Base.
WM_INPUTLANGCHANGEREQUEST:=0x0050, "".Base.INPUTLANGCHANGE_FORWARD:=0x0002
"".Base.
HSHELL_WINDOWACTIVATED:=4, "".Base.suffix:=A_IsUnicode ? "W":"A"
""
.Base.
inputLocaleId:=CheckUpLayout()
 
DllCall("RegisterShellHookWindow", "Ptr", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage"("".
suffix), "Str", "SHELLHOOK", "UInt"), "ShellMessage")
 
~
CapsLock::
   
If A_TimeSincePriorHotkey Between 0 And 300
   
{
       
SendWindowMessage()
       
KeyWait, CapsLock
       
"".Base.
inputLocaleId:=CheckUpLayout()
       
Return
   
}
   
KeyWait, CapsLock
   
Return
 
ExitScript:
   
DllCall("DeregisterShellHookWindow", "Ptr", A_ScriptHwnd)
   
ExitApp
 
CheckUpLayout()
{
   
Return, DllCall("GetKeyboardLayout", "UInt"
         
, DllCall("GetWindowThreadProcessId", "Ptr", WinActive("A"), "UInt*", 0, "UInt")
                                       
, "UInt")
}
 
SendWindowMessage(param:="")
{
   
DllCall("SendMessage"("".
suffix), "Ptr", WinActive("A")
                                   
, "UInt", "".
WM_INPUTLANGCHANGEREQUEST
                                   
, "Ptr", param ? 0:"".INPUTLANGCHANGE_FORWARD
                                   
, "Ptr", param ? param:0)
}
 
ShellMessage(aParams*)
{
   
`(
aParams.1="".HSHELL_WINDOWACTIVATED) And CheckUpLayout()<>"".inputLocaleId And SendWindowMessage("".inputLocaleId)
}

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 04:19 27-09-2013 | Исправлено: OnMyDSeeAtAll, 20:43 04-10-2013
vadim3sh



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

Цитата:
К примеру сделал-бы так:


 
Спасибо буду пробовать и разбираться
 
P.S. (Через несколько часов ) Разбираюсь...(для меня это очень высокий уровень) При переходе из окна с англ раскладкой в русскую сохраняется англ. Если наоборот - то русская не сохраняется. Так и было задумано?
P.P.S Нет... Бабушка, никак... Если это не великая наглость, помогите разобраться:
 
A_ThisHotkey:
 
"When a hotkey is first created -- either by the Hotkey command or a double-colon label in the script -- its key name and the ordering of its modifier symbols becomes the permanent name of that hotkey"
 
Поскольку, вроде как, команды "Hotkey" не содержится, она где-то создается через :: , но где...?
или мне необходимо в  

Код:
CapsLock::
   SendEvent, % "{"A_ThisHotkey "}"  

подставить используемое в системе значение ? (Ну, у меня, например, Alt + Shift) Простите за нубство

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 10:28 27-09-2013 | Исправлено: vadim3sh, 14:11 27-09-2013
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh 01:31 18-09-2013
Цитата:
Oчень многим нравится переключать раскладку нажатием CapsLock. И всем не нравится, что индикатор CapsLock при этом перестает фунициклировать.
Сделал как и было оговорено, на клавишу CapsLock, код переключает раскладку по двойному нажатию на эту клавишу, и у меня всё работает за исключением Internet Explorer'овского контрола Internet Explorer_Server1 (сие обнаружил недавно, ещё не разбирался с этим).
Цитата:
...вроде как, команды "Hotkey" не содержится, она где-то создается через :: , но где...?

Код:
...
CapsLock::
...

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 17:16 27-09-2013 | Исправлено: OnMyDSeeAtAll, 18:53 27-09-2013
vadim3sh



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

Цитата:
переключает раскладку по двойному нажатию на эту клавишу

Слона-то я и не приметил...
 
1. Немножко оффтопа: а вот такое знание программы связано с профессиональной деятельностью, или это следствие любительского энтузазизма ?
 
2. У меня win 7. Работает, но почему-то не с 1 раза. Срабатывает со 2...4 го двойного нажатия. Без всякой системы. Но раскладку держит мертво: уж если включилась русская, то будет русская в любом окне.
 
3. И у меня не получается разобраться как работает этот блок:

Код:
 
CapsLock::
   SendEvent, % "{"A_ThisHotkey "}"
   If A_TimeSincePriorHotkey Between 0 And 300
   {
      SendWindowMessage()
      KeyWait, % A_ThisHotkey
      Notify("".Base.inputLocaleId:=CheckUpLayout())
      Return
   }
   KeyWait, % A_ThisHotkey
   Return
 

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

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 23:17 27-09-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Опишу сначала проблему. На ноутбуке очень неудобно и непривычно расположены клавиши управления курсором. Решил переназначить PgUp и PgOn на Home и End и, соответственно, наоброт. До этого момента вроде бы всё просто.  
А дальше возникла проблема: на внешней клавиатуре эти клавиши расположены "правильно", поэтому если просто их поменять местами, то будет постоянная путаница.
 
А теперь собственно вопрос: можно ли как-то исхитриться, чтобы переназначить эти клавиши только для встроенной клавиатуры, но не для внешней? Может быть, при загрузке системы автоматически запускать скрипт для работы со встроенной клавиатурой ноута, а при подключении внешней клавиатуры автоматически его приостанавливать (или наоборот)?  
Вроде бы здравый смысл и опыт говорят, что так не получится. Но по мере чтение этого топика растёт вера в чудеса, что нерешаемых задач вообще не бывает
 
Спасибо!
 
vadim3sh

Цитата:
Но раскладку держит мертво: уж если включилась русская, то будет русская в любом окне.  

Если не секрет, а для чего вообще это нужно. Напрягал фантазию, но так и не смог придумать ситуацию, в которой такая сквозная раскладка для всех приложений была бы удобнее, чем штатное решение: своя раскладка для каждого приложения. Я не говорю, что это не нужно, а просто интересно разобраться. Вдруг я сам тоже захочу так работать...

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 02:06 29-09-2013
vadim3sh



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

Цитата:
для чего вообще это нужно

 
Ну, вот вся история:
Захотелось мне давным-давно сделать переключение по CapsLock. Проблемы тут никакой не было, реализуется кучей вариантов...
Однако при назначении горячей клавиши пропадает LED индикация. А было-бы так чудненько: лампочка горит - русская раскладка, не горит - английская (ну, к примеру).
Убил я на поиск кучу времени, но нашел решение. (на предыдущей странице). Да только когда переходишь на окно с другой раскладкой винда переключает раскладку, а лампочка-то остается как была! Все труды насмарку.
Счас вот пытаюсь разобраться, как скрипт уважаемого OnMyDSeeAtAll переделать под один клик. Но что-то боюсь не осилю.
 
Я вот чего не понял:

Цитата:
переназначить эти клавиши только для встроенной клавиатуры

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

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 05:04 29-09-2013 | Исправлено: vadim3sh, 05:12 29-09-2013
oshizelly



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

Цитата:
не знаю, как насчет автоматического переключения, но после подключения внешней USB клавы, неуж-то на горячую клавишу ленно тыркнуть, которая скрипт приостановит?  

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

Цитата:
Да только когда переходишь на окно с другой раскладкой винда переключает раскладку, а лампочка-то остается как была! Все труды насмарку.  

Понятно. Так, наверное, действительно удобнее, но IMHO слишком велика цена за это удобство: отказ от штатной фичи запоминаня текущей раскладки индвидуально для каждого приложения. Однако о чужих вкусах либо хорошо, либо ничего...
Кстати, на большинстве современных лаптопов вообще убрали физический индикатор CapsLock. На лампочках экономят
Вместо него при включении/отключении режима CapsLock на пару секунд всплыавет уведомление на экране.

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 13:26 29-09-2013 | Исправлено: oshizelly, 13:27 29-09-2013
vadim3sh



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

Цитата:
На практике же юезр будет забывать переключаться

Даааа...
 

Код:
OnMessage(0x219, "notify_change")  
Return  
 
notify_change(wParam, lParam, msg, hwnd)  
{  
MsgBox, Запусти скрипт!! ; ну или сюда запуск скрипта  
}

 
http://www.autohotkey.com/board/topic/49386-launching-a-script-when-a-specific-usb-device-is-connected/
 
На флеху срабатывает, про клаву не знаю
 
 
 

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 19:15 29-09-2013 | Исправлено: vadim3sh, 19:21 29-09-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А нельзя ли сделать так, чтобы клавиша навигации курсора [PgUp] совместно с клавишей [Left] генерировала нажатие клавиши [Home] (и аналогично клавиша [PgOn] совместно с клавишей [Right] генерировала бы нажатие клавиши [End]). Это во многом решило бы мои проблемы с этой xxxxxxx-й клавиатурой.
 
Мне кажется, что это возможно, но трудность в правильном кодировании нажатий и отжатий. При том, что ведь и генерируемые коды [Home] и [End] должны использоваться не только поодиночке, но, в свою очередь, в комбинации с другими клавишами, например, [Home] + [Ctrl] + [Shift].  
 
Спасибо!

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 12:34 30-09-2013
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh 23:17 27-09-2013
Цитата:
1. Немножко оффтопа:...
Энтузазизм.
Цитата:
2. У меня win 7. Работает, но почему-то не с 1 раза.
У меня нормально.
Цитата:
3. И у меня не получается разобраться как работает этот блок:
Примерно так.
Цитата:
...показать вариант для одиночного нажатия?
В том коде нужно чуть изменить горячую клавишу.
oshizelly 02:06 29-09-2013
Цитата:
...при подключении внешней клавиатуры автоматически его приостанавливать (или наоборот)?
У меня есть старая клавиатура, и ради интереса я попробовал через WMI определять это событие. Зашёл в диспетчер устройств, там при отключённой USB-клавиатуре только моя PS/2. Чтобы не перепутать посмотрел её код производителя оборудования  (VID), потом узнал глобально уникальный идентификатор (GUID) класса. Подключил вторую клавиатуру и проверил её VID, он отличался от VID'а который смотрел первым (собственно вторая клава всегда у меня была под первой), далее выяснил  VID "родителя", данные об GUID класса и VID'е "родителя" записал в код:
Код:
#SingleInstance, Force
ListLines, Off
IfEqual
, A_IsAdmin, % False, Run, % "*RunAs """A_ScriptFullPath """"
OnExit,
% "ExitScript"
Menu,
Tray, NoStandard
Menu, Tray, Add, % "&Exit", % "ExitScript"
 
Global
bState:=False
WndProc(), OnMessage(WM_USERDEFINED:=0x2013, "WndProc"), sFileName:="NQuery.ahk"
 
FileAppend,
% `"
(
#NoTrayIcon
#KeyHistory, 0
ListLines, Off
DetectHiddenWindows, On
 
classGUID:=""{745a17a0-74d3-11d0-b6fe-00a0c90f57da}""
parentId:=""USB\VID_1241&PID_1503&MI_00\6&20ba3bb&0&0000""
uPID:="DllCall("GetCurrentProcessId", "UInt")", WM_USERDEFINED:="WM_USERDEFINED "
 
oWMIEvent:=ComObjGet(""WinMgmts:\\""A_ComputerName ""\root\CIMV2"")
          .ExecNotificationQuery(""SELECT * ""
                               . ""FROM __InstanceOperationEvent ""
                               . ""WITHIN 3 ""
                               . ""WHERE ""
                               . ""TargetInstance ISA 'Win32_PnPEntity' ""
                               . ""AND ""
                               . ""TargetInstance.ClassGuid='""classGUID ""'"")
 
Loop
   If oWMIEvent.NextEvent.TargetInstance.DeviceID=parentId
      PostMessage, WM_USERDEFINED,,,,
`% ""ahk_pid""uPID
)`",
% sFileName
Run, % sFileName,,, uPID
 
#If, bState
   
PgUp::Home
   PgDn
::End
 
ExitScript:
   
Process,
Close, % uPID
   
Process, WaitClose, % uPID
   
FileDelete, % sFileName
   
ExitApp
 
WndProc()
{
   
Static
parentId:="USB\VID_1241&PID_1503&MI_00\6&20ba3bb&0&0000"
       
,
oWMI:=ComObjGet("WinMgmts:\\"A_ComputerName "\root\CIMV2")
       
,
sQuery:="SELECT DeviceID FROM Win32_Keyboard"
 
   
For colItem In oWMI.ExecQuery(sQuery)
     
bState:=colItem.DeviceID=parentId ? True:False
   
Until, bState
 
   
Menu, Tray, Icon, % "msctf.dll", % "-41"(bState ? 5:9)
   
TrayTip,
% "status:", % (bState ? "c":"disc")"onnected",, 1
   
Sleep, 1750
   
TrayTip
}
Сценарий формирует файл другого сценария и запускает его (при корректном выходе его удаляет), который подписывается на событие и если таковое происходит уведомляет родительский сценарий заставляя проверять нужный WMI класс на предмет присутствия нужного кода производителя оборудования. Результат проверки будет контекстом для горячих клавиш.
12:34 30-09-2013
Цитата:
А нельзя ли сделать так...
Так попробуйте.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 16:41 01-10-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