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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Quasus 22:53 14-11-2012
Цитата:
Вот это вроде работает. «Мясо» здесь — функция Show, которая проверяет наличие окна с заданным PID и активирует его, если оно существует; если не существует, запускает программу и сохраняет PID процесса.  

Очередной раз спасибо!
 
Вот только не совсем понятно, что надо вписать сюда:

Код:
SetTitleMatchMode, 2    
TCPath1 = ...  
TCPath2 = ...

TCPath1 - это, допустим, полное имя интересующего нас исполнимого файла:
TCPath1 = C:\Program Files\TotalCmd 8.0\TOTALCMD.EXE
А что должно быть в TCPath2? Если имя НЕ интересующего нас второго TC, то зачем на него вообще ссылаться?

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 01:12 15-11-2012 | Исправлено: oshizelly, 01:13 15-11-2012
OnMyDSeeAtAll



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

Код:
Global procPath:="C:\Program Files\TotalCmd 8.0\"
         
,
procName:="TOTALCMD.EXE"
         
,
query:="select Caption, ExecutablePath, Handle "
         
.            "from Win32_Process "
         
.            "where Caption='"
procName "'"
 
+^!
vk54::ActivateOrRun()
 
ActivateOrRun()
{
   
If (oWMI:=ComObjGet("winmgmts:").ExecQuery(query)).Count
      For
colItem In oWMI
         
If colItem.ExecutablePath=procPath . procName
         
{  
           
WinActivate,
% "ahk_pid"colItem.Handle
            oWMI
:=""
           
Exit
         
}
   
Run,
% procName, % procPath
   oWMI
:=""
}
Добавлено:
Поправил полный путь (был тут мой)), и ещё: нужно опцию выставить в самом ТС, чтобы было позволено запускать более одной копии.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 01:22 15-11-2012 | Исправлено: OnMyDSeeAtAll, 10:34 11-01-2013
Quasus

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

Цитата:
 
TCPath1 - это, допустим, полное имя интересующего нас исполнимого файла:
TCPath1 = C:\Program Files\TotalCmd 8.0\TOTALCMD.EXE
А что должно быть в TCPath2? Если имя НЕ интересующего нас второго TC, то зачем на него вообще ссылаться?
 

 
TCPath1, TCPath2 — два тоталкоммандера. (Или какие угодно программы, на ТС не «заточено».) Кстати, SetTitleMatchMode не нужно, мы же уже не по заголовку окна находим.

Всего записей: 43 | Зарегистр. 08-05-2012 | Отправлено: 11:24 15-11-2012
OnMyDSeeAtAll



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

Код:
...
TCPath1 = ...  
TCPath2 = ...  
TC1 := NewApp(TCPath1)  
TC2 := NewApp(TCPath2)
...
 

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 20:17 15-11-2012 | Исправлено: OnMyDSeeAtAll, 16:03 12-01-2013
Quasus

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, конечно. Спасибо!

Всего записей: 43 | Зарегистр. 08-05-2012 | Отправлено: 20:25 15-11-2012
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ваш код тоже оригинальный, спс. И всё же "трабла" в том, что если выставить только одну копию программы в настройках, то команда Run как собственно и клик мышью по "экзешнику", приводят к активации первого запущенного экземпляра ТС...

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 21:43 15-11-2012
Vitti

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задачка
Есть маленькая программа по мониторингу, тесту и т.д. HDD - HD Tune .
На вкладке Health - просмотр СМАРТ винта - имеется такая особенность: в верхней части списка под курсором определяется класс SysListView321, а в нижней части списка какой-то левый класс #327702. Переход классов происходит где-то на параметре С3. См. скриншоты:  
"Вверх" списка:  
   
"Низ" списка:
   
Вопрос: как всё-таки определить что под курсором во второй части списка находится класс SysListView321 ?
 
Мне это нужно для скроллинга списка (послать классу сообщение прокрутки). На левом классе не прокручивается мышкой список.

----------
ru-board

Всего записей: 599 | Зарегистр. 21-01-2007 | Отправлено: 16:22 13-01-2013 | Исправлено: Vitti, 16:28 13-01-2013
creature_ws



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

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 08:13 15-01-2013
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
S.M.A.R.T с помощью Autohotkey возможно прочитать так:
Подробнее...

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 17:04 15-01-2013 | Исправлено: creature_ws, 10:56 23-03-2014
Vitti

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

Цитата:
Посылайте сообщение прокрутки классу SysListView321

Вопрос в том что под курсом определяется левый класс, не SysListView321. Несмотря на то что курсор над списком.
 
Добавлено:
За скрипт спасибо.

----------
ru-board

Всего записей: 599 | Зарегистр. 21-01-2007 | Отправлено: 05:07 17-01-2013
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всё ещё не понимаю в чём проблема
 
Вот такая вот структура gui у hd tune, тут вам и tab'ы и listview, и какая-то «прозрачная» хрень притаилась в нижней части окна И что? Список перестал прокручиваться при отправке списку сообщений?

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 09:44 17-01-2013
Vitti

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
creature_ws
Сообщение отправляется классу, который находится под курсором. Проблема в том что под курсором оказывается "левый" класс. Как определить что курсор находится над списком(SysListView321)? Напишите процедуру

----------
ru-board

Всего записей: 599 | Зарегистр. 21-01-2007 | Отправлено: 22:34 18-01-2013
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ей-богу, выглядит как проблема с логикой. Прокручивать нужно listview, но сообщение будем отправлять в дочернее окно под курсором. Не желаю в подобном участвовать

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 12:29 19-01-2013 | Исправлено: creature_ws, 14:44 19-01-2013
Vitti

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто не имеет проблем с логикой, тот может накалякать пару строк. А не писать кучу сообщений с указаниями КАК это сделать

----------
ru-board

Всего записей: 599 | Зарегистр. 21-01-2007 | Отправлено: 05:39 24-01-2013
cyberlife8

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

Всего записей: 1 | Зарегистр. 24-01-2013 | Отправлено: 15:20 24-01-2013 | Исправлено: cyberlife8, 18:17 24-01-2013
sladsh

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как сделать чтобы после отпускания одной клавиши кратковременно нажималась другая? Сделал так:

Код:
ц::
Send w
KeyWait ц
Send u
return

Но теперь при нажатии клавиши ц она нажимается лишь кратковременно, а надо чтобы если её нажали и удерживают, то так и передавало.

Всего записей: 38 | Зарегистр. 19-02-2007 | Отправлено: 12:21 16-03-2013 | Исправлено: sladsh, 15:05 16-03-2013
OnMyDSeeAtAll



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

Код:
$vk57:: ; w/ц
   
Send, {vk57 Down}
   
KeyWait,
vk57
   
Send, {vk57 Up}{vk55} ; u/г (vk55)
   
Return

Код:
~vk57::
   
KeyWait,
vk57
   
Send, {vk55}
   
Return

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 01:52 18-03-2013
LonerDergunov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Насколько критично к быстродействию и функционалу количество команд SetTimer и частота их проверки в скрипте? Есть ли какая-то зависимость или критические пороги, когда таймеры начинают мешать друг другу? Например, если проверка с частотой 10, 20, 100 мс... таймеров 10, 100, 1000 в скрипте...
Зависит ли потребление оперативной памяти или ресурсов процессора скриптом от количества таймеров?
Вопрос относится к случаям, не оговоренным в справке (когда процессор не загружен полностью и выполнение команд не прерывает друг друга напрямую).
Например, нужно отследить появление активного окна с заданным заголовком. Вопрос в том - стоит ли использовать частоту 100 мс или с тем же успехом можно поставить и 10 мс без ущерба всему прочему.

Всего записей: 2972 | Зарегистр. 11-07-2007 | Отправлено: 07:10 18-03-2013
sladsh

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

Всего записей: 38 | Зарегистр. 19-02-2007 | Отправлено: 12:54 18-03-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые гуру и прочие добрые люди! Помогите составить макрос для одной простой операции, ибо попытки самому это сделать показали, что у меня мозги не в ту сторону повёрнуты.
 
Нужно автоматическое выключение статуса CapsLock через каждые N секунду. Цель, думаю, понятна: если юзер случайно или какая-то прога включила зачем-то включила режим CapsLock, то сразу его выключить снова.  
 
В принципе, хотелось бы выставить в качестве N совсем короткий интервал времени, допустим, 0,001 секунда. Только я не знаю, как это повлияет на нагрузку процессора (компьютер довольно слабый).
 
Или, возможно, более продвинутый вариант: отслеживание состояния режима CapsLock- И когда AHK обнаружит, что статус CapsLock изменился на On, то выключить его обратно.
 
Огромное спасибо!

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 08:10 29-03-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