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

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

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

Цитата:
Кто-нибудь знает, как в Autohotkey переназначить сочетание клавиш ctrl+C, ctrl+V на одну клавишу?   Пробывал: F7::^c не выходит. Писал ctrl буквами, с пробелами, со значком & - все без результатов.

 Если кому пригодится, нашел как:
F7::  
 SendInput {CtrlDown}{vk43}{CtrlUp}  
 Return  
 
F8::  
 SendInput {CtrlDown}{vk56}{CtrlUp}  
 Return

Всего записей: 2 | Зарегистр. 13-02-2014 | Отправлено: 15:49 16-02-2014
Cryzer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
Не подскажите, как можно при нажатии на колёсико мыши сделать обновление (F5) текущего окна проводника Windоws 7 ? Т.е. чтобы не нажимать ПКМ -> "Обновить", а сделать это через колёсико.
Код MButton::F5 не подойдёт, т.к. срабатывает везде, а мне нужно только для проводника.
В AutoHotkey я новичёк, поэтому прошу помощи

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 20:14 16-02-2014 | Исправлено: Cryzer, 20:14 16-02-2014
vadim3sh



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

Цитата:
AutoHotkey я новичёк

Давайте так: если здесь ничего не подберете, тогда попробуем разбираться
TeoLeo22

Цитата:
Пробывал: F7::^c

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

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 23:47 16-02-2014
Cryzer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh
Спасибо за ссылку, очень полезный материал! За пару часов смог сам реализовать то, что хотел, даже не думал, что получится)
Вот мой код:

Код:
#IfWinActive ahk_class CabinetWClass
MButton::
    WinGetPos, X, Y, W, H
    X:=X+4                    ; координата активного окна без учёта рамки
    Y:=Y+4                    ; координата активного окна без учёта рамки
    W:=W-8                    ; длина активного окна без учёта рамок
    H:=H-8                    ; высота активного окна без учёта рамок
    MouseGetPos, mX, mY
    mX:=mX-4                ; координата указателя мыши относительно активного окна без учёта рамки
    mY:=mY-4                ; координата указателя мыши относительно активного окна без учёта рамки
    WX:=W+X
    HY:=H+Y
;    MsgBox, X=%X%, W=%W%, mX=%mX%, Y=%Y%, H=%H%, mY=%mY%, (W+X=%WX%), (H+Y=%HY%)
 
    if (mX >= 0 && mY >= 0 && mX < W && mY < H)
    {
;        MsgBox F5
        Send {F5}
    }
return

Глядя на возможности AutoHotkey, захотелось усовершенствовать свой код. Но столкнулся с одной проблемой. В вышенаписанном коде колёсико мыши перехватывается тогда, когда активен проводник. Но действия выполняются только внутри окна. За пределами активного окна колёсико не реагирует. Как это исправить?
Я попробовал усовершенствовать код, т.е. сделать так, чтобы колёсико не перехватывалось, а проверялось его нажатие. Вот пример:

Код:
#IfWinActive ahk_class CabinetWClass
 
Loop
{    if GetKeyState("MButton", "P") != 0            ; если колёсико нажато
    {
        Goto, Next
    }
}
Next:
    WinGetPos, X, Y, W, H
    X:=X+4                    ; координата активного окна без учёта рамки
    Y:=Y+4                    ; координата активного окна без учёта рамки
    W:=W-8                    ; длина активного окна без учёта рамок
    H:=H-8                    ; высота активного окна без учёта рамок
    MouseGetPos, mX, mY
    mX:=mX-4                ; координата указателя мыши относительно активного окна без учёта рамки
    mY:=mY-4                ; координата указателя мыши относительно активного окна без учёта рамки
    WX:=W+X
    HY:=H+Y
    MsgBox, X=%X%, W=%W%, mX=%mX%, Y=%Y%, H=%H%, mY=%mY%, (W+X=%WX%), (H+Y=%HY%)
 
    if (mX >= 0 && mY >= 0 && mX < W && mY < H)
    {
;        MsgBox F5
        Send {F5}
    }
return

Здесь я вместо перехвата (MButton:: ) поставил проверку и зациклил. Хотя тут ещё надо весь скрипт зациклить, а то он только 1 раз выполняется (пока не стал этого делать) (я так понял, запись вида MButton:: автоматически зацикливает скрипт, т.к. он в этом случае не завершается). Но теперь появилась проблема: WinGetPos почему-то не возвращает позицию и размеры окна, да и проводник не определяется.
Как это можно исправить?

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 17:24 17-02-2014 | Исправлено: Cryzer, 21:47 17-02-2014
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1ANP Если тема DOpus ещё актуальна, дайте знать.
Cryzer
Код:
MButton::Send % WinActive("ahk_class CabinetWClass") ? "{F5}":"{MButton}"

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 20:02 18-02-2014
Cryzer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll, спасибо!
Хотя код работает не так, как надо, но зато я подчерпнул из него синтаксис, который мне помог доработать свой код)

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 01:48 19-02-2014 | Исправлено: Cryzer, 01:49 19-02-2014
vadim3sh



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

Цитата:
синтаксис, который мне помог доработать свой код

и..?

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 02:22 19-02-2014
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cryzer
20:14 16-02-2014
Цитата:
...как можно при нажатии на колёсико мыши сделать обновление (F5) текущего окна проводника Windоws 7 ?
17:24 17-02-2014
Цитата:
...действия выполняются только внутри окна. За пределами активного окна колёсико не реагирует. Как это исправить?

Код:
MButton::Send ...

01:48 19-02-2014
Цитата:
...код работает не так, как надо...
Код работает в обозначенном контексте.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 10:43 19-02-2014
Cryzer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll, я имел ввиду, что действия скрипта не должны распространяться за пределы активного окна.
 
Вобщем, разобравшись поглубже в AutoHotkey, я переработал свой код. Оказывается, всё можно сделать проще. Плюс я ещё усовершенствовал его.
Код
 
Что он делает: при нажатии в проводнике СКМ (средней кнопки мыши) срабатывает F5. Чтобы перейти в другой режим, нужно 2 раза кликнуть СКМ, и тогда F5 будет срабатывать после отпускания ЛКМ. Чтобы вернуться в предыдущий режим, нужно снова 2 раза кликнуть СКМ.
Для чего нужно: в Windоws 7 в проводнике происходит автоматическая сортировка. Программа Folder Options X её отключает, но при этом возникает баг - после перемещения файлов или папок при попытке открыть их открывается совсем не то. Приходится сначала "Обновить", а затем открывать. И вот как раз данный код упрощает это обновление
Либо колёсиком, либо автоматически после перемещения.
 
Добавлено:
Нашёл небольшую ошибку: если за 500 мсек успеть 2 раза кликнуть СКМ (чтобы перейти в "режим 2") и нажать ЛКМ, то перейдёт в "режим 2", а затем обратно в "режим 1" (чего быть не должно). Как это можно исправить?

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 13:36 19-02-2014 | Исправлено: Cryzer, 13:42 19-02-2014
OnMyDSeeAtAll



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

Код:
Menu, Tray, Tip, % "mode "mode:=0
 
~MButton::
   
If WinActive("ahk_class CabinetWClass")
     
If A_TimeSincePriorHotkey
Between 0 And 500
         
ShowTip(mode^=1)
     
Else If
Not mode
         
Send, {F5}
   
Return
 
~LButton::
   
KeyWait, LButton
   
If WinActive("ahk_class CabinetWClass")
And mode
     
Send, {F5}
   
Return
 
ShowTip(p1, p2:=750)
{
   
Menu,
Tray, Tip, % "mode "p1
   
TrayTip,, % "mode "p1
   
Sleep, p2
   
TrayTip
}

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 02:13 20-02-2014 | Исправлено: OnMyDSeeAtAll, 02:29 20-02-2014
Cryzer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll
Спасибо, работает чётко!
Единственное, во время отображения TrayTip не срабатывает (из-за паузы) кнопка ~MButton:: в скрипте. Возможно ли это исправить?
 
Добавлено:
И ещё спрошу: может ли AutoHotkey определить, что после зажатия ЛКМ (в проводнике) под курсором выделилась(находится) папка/файл?
Было бы идеально, если бы обновление в "mode 1" происходило только после перемещения папки/файла)

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 18:59 20-02-2014 | Исправлено: Cryzer, 19:39 20-02-2014
OnMyDSeeAtAll



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

Цитата:
...во время отображения TrayTip не срабатывает (из-за паузы) кнопка ~MButton...
АХК однопоточен. И потом, если без паузы, как отлавливать в череде кликов двойной?
Цитата:
Возможно ли это исправить?
Ну коли Вы так спешите можно сделать паузу меньше.
Цитата:
...может ли AutoHotkey определить, что после зажатия ЛКМ (в проводнике) под курсором выделилась(находится) папка/файл?
Может.
Цитата:
Было бы..., если бы...
Ну так что Вам мешает довести до идеала?, почти всё, что нужно уже на руках. Пробуйте, не будет получаться что-либо, соберём коллегию, обмозгуем.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 01:28 21-02-2014
Cryzer



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

Цитата:
Ну коли Вы так спешите можно сделать паузу меньше.

Я именно так и поступил)

Цитата:
Может.

Классная штука, этот AutoHotkey .
Я правильно понял, что приведённый код должен отображать в трее выделенные папки? Если да, то у меня он ничего не отобразил... Проверил на Win7, WinXP и с последним АХК (1.1.14.03).

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 11:47 21-02-2014 | Исправлено: Cryzer, 11:49 21-02-2014
OnMyDSeeAtAll



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

Цитата:
...у меня он ничего не отобразил...
Интерпретатор (АХК) должен выдать сообщение об ошибке (если таковая имеется), пример.
Если в сообщении пишет - Error:  0x80040154 - Class not registered, тогда правим код.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 15:43 21-02-2014 | Исправлено: OnMyDSeeAtAll, 16:36 21-02-2014
oshizelly



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

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 17:03 21-02-2014 | Исправлено: oshizelly, 17:04 21-02-2014
Cryzer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll
Я понял, в чём проблема. Программа Folder Options X что-то делает в системе, после чего Ваш код не срабатывает, как надо. Если в ней отключить все настройки (в т.ч. вернуть автоматическую сортировку), то код начинает работать нормально (причём обе версии) и в трее всё выводится...
Жалко... Но всё равно спасибо! Буду пытаться найти решение)

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 18:15 21-02-2014
Cryzer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll, а можно попросить Вас подправить последний код?
Если я правильно понял, в Windоws 7 для отключения автоматической сортировки файлов и папок DirectUIHWND заменяется на SysListView32 (не очень представляю, что это такое) (судя по всему, программа Folder Options X как раз это и делает), а в Вашем коде присутствует "DirectUIHWND3". Может быть в этом причина?
Как нужно изменить код, чтобы работало для SysListView32? (пробовал заменить на это слово - не помогло)

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 17:59 24-02-2014 | Исправлено: Cryzer, 18:01 24-02-2014
OnMyDSeeAtAll



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

Цитата:
Как нужно изменить код, чтобы работало для SysListView32?

Код:
; ...
;   And classNN="DirectUIHWND3")
   
And
classNN~="DirectUIHWND3|SysListView321")
; ...

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 21:18 24-02-2014
Cryzer



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

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 11:07 25-02-2014
Cryzer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возник ещё такой вопрос. В сети ответа не нашёл...
 
Как в текущей папке проводника выделить находящиеся в ней файлы и/или папки, зная их имена? Выделить нужно только те, чьи имена заданы. Возможно ли такое?
Зачем нужно: после перемещения файлов или папок (при отключённой автоматической сортировке) их выделение иногда сбрасывается, поэтому хотелось бы его вернуть обратно.
В сети нашёл один код, возвращающий полные имена выделенных файлов/папок (функция Explorer_GetSelected() ).
Осталось только научиться их выделять по именам.

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 22:34 26-02-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 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