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

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

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

chum2000

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

   
 
Актуальная версия: AutoHotkey 1.1.30.03 от 4 апреля 2019
 
Официальный сайт | Англоязычный форум | Архивный форум | Русскоязычный форум
Документация (англ.) | Документация и статьи (рус.) | История изменений
 
Подборка полезных скриптов | AutoHotkey + Total Commander
 

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

Всего записей: 503 | Зарегистр. 04-03-2004 | Отправлено: 00:28 02-06-2005 | Исправлено: DimmY, 16:40 09-06-2019
amigosxxx



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
creature_ws
Спасибо огромное!  Этот скрипт по синтаксису намного проще и универсальнее!
Еще раз спасибо! Буду пробовать!
 
PS

Код:
 
#if gunType && toggleHotkeys  
    ~*LButton::             ; если Xbutton была нажата и F3 разрешает выполнение горячих клавиш  
        fireMode := GetKeyState("LControl")? 1 : 2 ; определяем режим стрельбы  
        Autofire(fireCorrectionMode[gunType, fireMode]*) ; выбираем тип коррекции отдачи  
        gunType := 0 ; сбрасываем состояние типа оружия ( чтоб небыло двойного срабатывания)  
        return  
#if
 

 
А что делает нижняя #if?
 
PPS
Поправил немного функцию, чтобы создавать очередь выстрелов

Код:
 
Autofire(x, y, timer1, timer2)  
{  
    while GetKeyState("LButton", "P")  
    {  
        Click down
     Sleep timer1  
        MouseMove x, y, 0, R
     Click up
        Sleep timer2  
    }  
}
 

И в первой строке дополнил еще один параметр в каждой из скобок.

Всего записей: 25 | Зарегистр. 12-03-2008 | Отправлено: 14:55 09-04-2014 | Исправлено: amigosxxx, 15:18 09-04-2014
creature_ws



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

Всего записей: 286 | Зарегистр. 29-07-2008 | Отправлено: 15:26 09-04-2014 | Исправлено: creature_ws, 15:27 09-04-2014
amigosxxx



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо!
Вроде разобрался, что значат mode[] - это ячейка из [x,y,t1], что будет выбрана из 4-х.
Если все так, то немного дополнил скрипт на очередь выстрелов.
 
Еще раз очень благодарен.
Теперь действительно можно менять "на ходу" и оружие и положение тела, и автоматически будут внесены корректировки в режим стрельбы.  
 
Стоп...
Наверно строчка gunType := 0 лишняя будет, т.к. если я прекращу стрелять (отожму ЛКМ) и потом вновь захочу стрелять, у меня будет считаться, что орудие не выбрано. Т.е. всегда придется сначало нажимать на боковую кнопку и лишь потом стрелять.  
Пусть лучше сохранить последнее нажатие боковой кнопки мыши.
 

Код:
 
fireCorrectionMode := [[[-20, -20, 100, 100], [20, 20, 100, 100]], [[-20, 20, 100, 100], [20, -20, 100, 100]]]  
F10::ExitApp
F3::toggleHotkeys := !toggleHotkeys  
 
#if toggleHotkeys  
    ~Xbutton1::gunType := 1  
    ~Xbutton2::gunType := 2  
 
#if gunType && toggleHotkeys  
    ~*LButton::  
        Autofire()  
        return  
#if  
 
Autofire()  
{  
    global gunType, fireCorrectionMode  
 
    while GetKeyState("LButton", "P")  
{  
        mode := fireCorrectionMode[gunType, GetKeyState("LControl", "P")? 1 : 2]  
        Click down
    Sleep mode[4]
        MouseMove mode[1], mode[2], 0, R  
    Click up
        Sleep mode[3]  
    }  
}  
 

 
 
Добавлено:
creature_ws, если не затруднит, можешь рассказать как сделать следующие действия:
Суть такова: нажимаю на кнопку R и у меня автоматически зажимается шифт, до тех пор, пока я вновь не нажму эту же кнопку.  
 
Сделал по совету выше так:

Код:
 
toggle = 0  
#MaxThreadsPerHotkey 2  
 sc013::  
 Toggle := !Toggle  
 If Toggle
{  
While Toggle
{
SendInput, {LShift Down}
SendInput, {sc014}
 }  
}
else  
{  
SendInput, {LShift Up}
SendInput, {sc015}
 }
 return
 

Добавил буквы, чтобы можно было проверить ,как скрипт работает, и вижу, что не всегда срабатывает остановка печатания. Не могу понять в чем дело, почему иногда он вместо того, чтобы остановится при повторном нажатии на R, печатает ее один раз и вновь продолжает набирать строчку с sc014.

Всего записей: 25 | Зарегистр. 12-03-2008 | Отправлено: 15:53 09-04-2014 | Исправлено: amigosxxx, 11:32 10-04-2014
creature_ws



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

Всего записей: 286 | Зарегистр. 29-07-2008 | Отправлено: 12:40 10-04-2014
amigosxxx



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо большое!! Я уже на том форуме искал подобную тему по названию и нашел другую и там сделал запрос и удалил.  
 
Добавлено:
Взял скрипт от туда, подретушировал и не работает он. Он отжимает через раз.
Как быть?

Код:
 
F3::
    If isKeyPressed := !isKeyPressed    
        SetTimer, SendA, 40              
    Else
    {
        SetTimer, SendA, Off            
        Send {LShift Up}  
        Send {H Up}      
    }
    KeyWait F3                      
    return
 
SendA:
    Send {LShift Down}
    Send {H Down}
    return
 

Добавил буквы для проверки. Перекинул управление на кнопку F3.
 
Решил проблему также с помощью того сайта.  
Принцип действия такой: Нажал один раз Шифт и шифт считается зажатым, нажимаю еще раз на шифт и шифт отжимается.

Код:
 
Shift:: Send, % (State := !State)? "{Shift Down}":"{Shift Up}"
 

Всего записей: 25 | Зарегистр. 12-03-2008 | Отправлено: 14:29 10-04-2014 | Исправлено: amigosxxx, 15:30 10-04-2014
SKYNET3000

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пацоны! Хлэп ми!
Какой функцией AutoHotKey_L можно скопипастить выделенный текст в броузере фиревокс?
 
Но не просто выделенный текст, а исходный код выделенного фрагмента.
Т.е. текст вместе с HTML-разметкой.
 
А?
 
Добавлено:
Что я хочу-то?
Хочу чтобы было достаточно выделить на веб-страничке нужный мне фрагмент текста и в буфере оказывалась что-то типа
Код:
<span class="post">Пацоны! Хлэп ми! <br> Какой функцией AutoHotKey_L можно скопипастить выделенный текст в броузере фиревокс? <br> &nbsp;<br> Но не просто выделенный текст, а исходный код выделенного фрагмента. <br> Т.е. текст вместе с HTML-разметкой. <br> &nbsp;<br> А?<img src="http://i.ru-board.com/s/type.gif" border="0"></span>

 
Добавлено:
Просто это всё мне нужно для того, что я получив исходный код выделенного кусок буду его парсить.
 
Пардон. Забыл важную деталь
Нужно чтобы не только исходный  HTML-код выделенного куска копировался в буфер, но и содержимое полей (например Search бокса в гугле и яндексе

Всего записей: 687 | Зарегистр. 14-12-2013 | Отправлено: 08:32 21-04-2014
begrutzer

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста!
 
У меня есть скрипт и мне надо, чтобы он работал если мышь над контролом Edit в Проводнике Windows, но НЕ работал в Notepad. Просто чтоб Notepad он игнорировал.
С первой частью я справился
Код:
#If (WinActive ("ahk_class CabinetWClass")) AND (ActiveControlIsOfClass("Edit"))

А вот со второй частью не знаю как сделать
Код:
#IfWinActive ahk_class Notepad
exit

не даёт нужного результата
 

Всего записей: 8 | Зарегистр. 18-01-2013 | Отправлено: 11:32 26-04-2014
creature_ws



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

Цитата:
не даёт нужного результата

чтобы узнать какой результат требуется отправьте смс на короткий номер […]
 
Директивы #if влияют лишь на нижележащие горячие клавиши.  
Директива это не "слушатель событий", а условие выполняющееся перед стартом подпрограмм горячих клавиш, попадающих под влияние директивы.
Словом «скрипт» принято называть файл содержащий сценарий работы интерпретатора.
Обычно дальше третьей строки никто не читает.
Определитесь, что имеете в виду под «скрипт» и что значит «чтобы он работал».

Всего записей: 286 | Зарегистр. 29-07-2008 | Отправлено: 13:33 26-04-2014
begrutzer

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

Цитата:
Определитесь, что имеете в виду под «скрипт» и что значит «чтобы он работал».

Вкратце содержание файла ahk:  

Код:
rbutton::
bla bla
rbutton up::
bla bla

Я хочу чтобы когда курсор над контролом с класом Edit в Проводнике Windows, по нажатию ПКМ выполнялись действия bla bla. И они выполняются, если в самом начале файла есть директива
Код:
#If (WinActive ("ahk_class CabinetWClass")) AND (ActiveControlIsOfClass("Edit"))  
 
 
Но беда в том, что страница Notepad-а — это один большой контрол и он имеет тоже класс Edit. В отличие, скажем, от AkelPad-а.
И, хотя первая часть моего  условия говорит: "только если активно окно с классом CabinetWClass", ПКМ над страницей Блокнота почему-то тоже запускает эти самые действия bla bla, а это мне не нужно.
 
Вот я и хочу, чтобы в комбобоксах Проводника правый клик выполнял действия bla bla, а в Блокноте выполнял свою дефолтную функцию.
 

Всего записей: 8 | Зарегистр. 18-01-2013 | Отправлено: 14:11 26-04-2014 | Исправлено: begrutzer, 14:23 26-04-2014
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Теперь понятно
 
Замените  WinActive("ahk_class CabinetWClass") на MouseIsOver("ahk_class CabinetWClass")
и добавьте в тело скрипта функцию
 

Код:
MouseIsOver(window*) {
    MouseGetPos,,, hwnd
    window[1] .= " ahk_id" hwnd
    return WinExist(window*)
}

 
Дело в том, что условие WinActive("ahk_class CabinetWClass") выполняется до клика мышью, если при клике активен проводник, а клик приходится на область блокнота - условие будет истинным.

Всего записей: 286 | Зарегистр. 29-07-2008 | Отправлено: 14:49 26-04-2014
begrutzer

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо creature_ws!
 
А как бы ещё сделать, чтобы скрипт действовал и в диалогах?
Я пока что добавил в первую часть своего условия (SetTitleMatchMode, RegEx само собой)

Код:
OR (WinActive("^Выберите файлы|^Введите имя файла"))

Но, хоть оно и работает, наверно это не самый лучший способ?

Всего записей: 8 | Зарегистр. 18-01-2013 | Отправлено: 18:18 26-04-2014
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не лучший. Лучше в начале скрипта определить группу окон над которыми должна срабатывать подпрограмма правой кнопки мыши, а в условии указать MouseIsOver("ahk_group ИмяГруппы)

Всего записей: 286 | Зарегистр. 29-07-2008 | Отправлено: 18:55 26-04-2014
begrutzer

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

Код:
Лучше в начале скрипта определить группу окон над которыми должна срабатывать подпрограмма правой кнопки мыши, а в условии указать MouseIsOver("ahk_group ИмяГруппы)

У меня MouseIsOver никак не хочет работать с окнами выбора/сохранения файла - те у которых класс #32770
 
WinActive работает, а MouseIsOver ни в какую. С созданием группы это никак не связано, с самого начала не работало.  

Всего записей: 8 | Зарегистр. 18-01-2013 | Отправлено: 20:22 26-04-2014
creature_ws



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

Цитата:
У меня MouseIsOver никак не хочет работать  

 

Код:
GroupAdd Explorer, ahk_class CabinetWClass
GroupAdd Explorer, ahk_class #32770
 
#if MouseIsOver("ahk_group Explorer")
    ~LButton::SoundBeep
 
MouseIsOver(window*) {
    MouseGetPos,,, hwnd
    window[1] .= " ahk_id" hwnd
    return WinExist(window*)
}

У меня «работает».

Всего записей: 286 | Зарегистр. 29-07-2008 | Отправлено: 21:17 26-04-2014
begrutzer

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

Цитата:
 У меня «работает».

У меня в диалоговых окнах не бипает, пока не напишу для них #ifWinActive.
Ну и бог с ним.  
 
Спасибо большое ещё раз за помощь!

Всего записей: 8 | Зарегистр. 18-01-2013 | Отправлено: 23:22 26-04-2014
vadim3sh



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

Код:
  #Persistent
ToolTip, RUSSIAN
SetTimer, RemoveToolTip, 5000
return
 
RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip  
Return

Как-то получаеся метка RemoveToolTip ссылается сама на себя... извините ышшо раз.. спрашиваю путано, в голове еще хуже

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 04:33 08-05-2014 | Исправлено: vadim3sh, 06:45 08-05-2014
user7c7



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь создать свой первый скрипт. Нужно, чтобы по ctrl+alt+p скрипт приостанавливался.
Что не так?
 
 

Всего записей: 89 | Зарегистр. 22-08-2011 | Отправлено: 22:06 11-05-2014
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user7c7
не разбирался, что там должно происходить , но скрипт "как есть" у меня запускается без ошибки..
win7

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 23:37 11-05-2014
user7c7



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

Всего записей: 89 | Зарегистр. 22-08-2011 | Отправлено: 00:09 12-05-2014
SKYNET3000

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user7c7
Какое красивое окошко. Я такого ниразу не видел. Хотя автохоткей юсаю уже лет 8

Всего записей: 687 | Зарегистр. 14-12-2013 | Отправлено: 19:38 12-05-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

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

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru