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

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

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

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
D1D1D1D

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

Цитата:
У меня работает такой вариант

А у меня он не идёт что-то -- выдаёт сообщение "Oops!, An error has occured!"
 
Скажите, а не достаточно перекодировать (если не путаю: из ANSI в UTF-16) содержимое переменной ResponseText (из приводимого мной выше кода) в кодировку, используемую программой? Вот как-то так:
 

Код:
#SingleInstance Force
 
fPath = C:\WINDOWS\Help\clipbrd.chm  ; Путь для XP
 
URL := "mk:@MSITStore:" fPath "::/whatis_intro_cb.htm"
 
req := ComObjCreate("Msxml2.XMLHTTP.6.0")
req.open("GET", URL, 0)
req.send
ResponseText := req.responseText
req := ""
 
ResponseText := Ansi2UTF8(ResponseText)
 
MsgBox, % RegExReplace(ResponseText, "s).*?<title>(.*)?</title>.*", "$1")
 
 
Ansi2UTF8(sString)
{
   Ansi2Unicode(sString, wString, 0)
   Unicode2Ansi(wString, zString, 65001)
   Return zString
}
 
Ansi2Unicode(ByRef sString, ByRef wString, CP = 0)
{
     nSize := DllCall("MultiByteToWideChar"
      , "Uint", CP
      , "Uint", 0
      , "Uint", &sString
      , "int",  -1
      , "Uint", 0
      , "int",  0)
 
   VarSetCapacity(wString, nSize * 2)
 
   DllCall("MultiByteToWideChar"
      , "Uint", CP
      , "Uint", 0
      , "Uint", &sString
      , "int",  -1
      , "Uint", &wString
      , "int",  nSize)
}
 
Unicode2Ansi(ByRef wString, ByRef sString, CP = 0)
{
     nSize := DllCall("WideCharToMultiByte"
      , "Uint", CP
      , "Uint", 0
      , "Uint", &wString
      , "int",  -1
      , "Uint", 0
      , "int",  0
      , "Uint", 0
      , "Uint", 0)
 
   VarSetCapacity(sString, nSize)
 
   DllCall("WideCharToMultiByte"
      , "Uint", CP
      , "Uint", 0
      , "Uint", &wString
      , "int",  -1
      , "str",  sString
      , "int",  nSize
      , "Uint", 0
      , "Uint", 0)
}

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



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

Цитата:
...выдаёт сообщение...
Значение команды Sleep сделайте больше.
Цитата:
...а не достаточно перекодировать...
Да не прокатит такой вариант.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 03:14 19-11-2013 | Исправлено: OnMyDSeeAtAll, 16:56 19-11-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет
 
Я тут накомбинировал с миру по нитке скрипт, который:
1. RButton + LButton - у меня запускает Double Commander, но можно вписать что угодно
2. RButton + Wheel (вверх - вниз) - громкость с выводом индикатора
3. Двойной клик RButton - открывает спрятанные иконки трея(тоже можно назначить, что нравиться)
4. Функционал просто  RButton (нативный?) сохраняется.
мож кому надо...

Всего записей: 457 | Зарегистр. 28-01-2006 | Отправлено: 03:45 19-11-2013
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vadim3sh 01:45 19-11-2013  
Цитата:
Я тут накомбинировал с миру по нитке скрипт [?], который:  
1. RButton + LButton - у меня запускает Double Commander, но можно вписать что угодно

Круто! А я уже давно хотел именно такую, но сам не смог написать, а все найденные в сети варианты оказывались нерабочими. Ваш работает!

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 14:22 19-11-2013 | Исправлено: oshizelly, 14:22 19-11-2013
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll
С увеличением миллисекунд заработало, спасибо! Скажите, а допустимо в Вашем коде задействовать поиск по RegEx? Спрашиваю, потому что есть необходимость извлекать разную инфу, и не обязательно из тегов.
И ещё вопрос: можно ли сослаться на страницу, упакованную в CHM -- не зная её названия, по шаблону, т.е., чтобы обрабатывалась любая первая же попавшаяся HTML-страница (стартовая)?

Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 21:33 21-11-2013
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Перевернул весь офиц. форум в поисках кода, получающего путь к активной странице CHM-файла (вида: "mk:@MSITStore:C:\WINDOWS\Help\clipbrd.chm::/whatis_intro_cb.htm").
Может кто-нибудь располагает?

Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 23:18 22-11-2013
vadim3sh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет
опаньки... восстановил систему из зоны безопасности...
скачал с оффсайта ахк (AutoHotkey_L_Install.exe  1.1.13.01)
Sistema win7 64 bit
Окно:
setup failed to initialize its user interface.  
ERROR: 0x80020006 - Unknown name.
 
Do you want to install with default options?
Click Yes to install.
 
Ладно, йес
Опять окно:
 
setup.exe
ERROR:0x80020006 - unknown name.
Specifically: switchPage
 
Line
471: getWindow().switchPage(page)
Continue running script?
 
Ладно, опять йес...
еще раз такое же окно с той же строкой 471
 
Еще раз йес..
Тишина
 
Скрипты начинают запускаться, все работает
 
Однако, что это ? И как бы потом геморроя не было
Гугл молчит. Только это
 
 
 

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@D1D1D1D
21:33 21-11-2013
Цитата:
...поиск по RegEx?
Допустимо, достаточно из объекта экстрагировать разметку.
23:18 22-11-2013
Цитата:
Перевернул весь офиц. форум в поисках кода...
Примеры есть тут (пояснил второй вариант). Суммарно на Ваши вопросы можно ответить примерно так.

@vadim3sh
Цитата:
Скрипты начинают запускаться, все работает...
Значит и париться на сей счёт нет необходимости.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 01:38 25-11-2013 | Исправлено: OnMyDSeeAtAll, 12:35 31-12-2015
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll
Ого-го! Огромное спасибо!

Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 11:01 25-11-2013
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как получить вывод MsgBox

Код:
MsgBox, % 262 . (IsObject(ret:=HTMLGetObject("ahk_pid "uPID " ahk_class HH Parent")) ? 208:160)  
       , % IsObject(ret) ? "Result:":"Oops!"  
       , % IsObject(ret) ? (ret.document.getElementsByTagName("title")[0].innerText, ret:="")  
       . ""              : "An error has occured!"  
Process, Close, % uPID  

в переменную по типу:

Код:
 
str:=(...)
MsgBox, % str
 

а то затрудняюсь.

Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 20:08 25-11-2013
creature_ws



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

Код:
ret := HTMLGetObject("ahk_pid "uPID " ahk_class HH Parent")
str := IsObject(ret) ? (ret.document.getElementsByTagName("title")[0].innerText, ret:="")  
    . ""              : "An error has occured!"  
MsgBox % str
Process, Close, % uPID  


Всего записей: 284 | Зарегистр. 29-07-2008 | Отправлено: 22:34 25-11-2013 | Исправлено: creature_ws, 22:36 25-11-2013
1ANP

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

Цитата:
 
Как вариант.
 

 
Спасибо, но что делает этот скрипт (у меня не работает)?

Всего записей: 432 | Зарегистр. 30-05-2007 | Отправлено: 21:30 02-12-2013 | Исправлено: 1ANP, 21:33 02-12-2013
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да собственно делает то, что Вами же и описано (в коде смотрим комментарии в виде циферок со скобками...).
Цитата:
...у меня не работает...
На моей машине (w81x64) всё работает.

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 21:55 02-12-2013
1ANP

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll
У меня на w7 x64: на первой машине ничего не выполнялось, на второй же п.3 заработал но странно:
1) двойной щелчок ЛКМ по рабочему столу - (запуск проводника) ничего не делает;
2) двойной щелчок ПКМ по рабочему столу - (запуск TC) ничего не делает (даже после смены пути);
3) двойной щелчок ЛКМ в свободном месте окна Explorer - ура, делает переход в папку уровнем выше,  
но в то же время: двойной клик по папкам в проводнике не заходит в папку а открывает её в новом окне и возвращает исходную папку на уровень выше.
Класс окна что ли тут другой у рабочего стола...  
 
Вопрос возник из желания привить проводнику полезные функции файлового менеджера Directory Opus - запуск двойным кликом по рабочему столу, выход из папок на уровень вверх двойным кликом мышки (вверх, а не назад). Ну очень уж цена там не демократичная.
Еще было бы интересно перенести возможность назначать какие-либо функции для таких действий:  
- средний двойной клик по папке в проводнике (допустим для открытия в TC)
- средний двойной клик по файлу какого либо типа (допустим для открытия в альтернативном редакторе);
- средний двойной клик по файлу/папке + Alt/Ctrl/Shift
- аналогично левый двойной клик + Alt/Ctrl/Shift
- Drag-and-drop + Alt/Ctrl/Shift.
Хотя даже просто пункт 3 значительно упростит жизнь, особенно владельцам планшетов.

Всего записей: 432 | Зарегистр. 30-05-2007 | Отправлено: 22:58 02-12-2013
parkovaya1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Зацените вот этот мегаскрипт на ядре AHK  
http://www.autohotkey.com/board/topic/46856-radial-menu-scripts-updated-19112013/
Поддержка жестов мыши + Radial Menu (см. скриншоты по ссылке) + все функции стандартного AHK
все это настраивается в контексте любого приложения или для всей системы
и полностью инкапсулировано (никак не мешает работе оригинального AHK)

Всего записей: 40 | Зарегистр. 20-08-2010 | Отправлено: 03:23 18-12-2013
Ymmarilo

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как можно результат работы функции (число) присвоить в переменную, а потом использовать это число вне AutoHotkey, допустим в javascript в браузере?
 
Сейчас AutoHotkey записывает это число в буфер обмена, а потом мой javascript считывает его оттуда. Но может есть другой способ, не используя буфер?

Всего записей: 5 | Зарегистр. 18-01-2013 | Отправлено: 17:43 03-01-2014
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ymmarilo
http://www.script-coding.com/AutoHotkey/IniRead.html
http://www.script-coding.com/AutoHotkey/IniWrite.html

Всего записей: 975 | Зарегистр. 23-04-2007 | Отправлено: 17:55 03-01-2014
Ymmarilo

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

Цитата:
http://www.script-coding.com/AutoHotkey/IniRead.html
http://www.script-coding.com/AutoHotkey/IniWrite.html

То есть переменная будет записываться в INI-файл, а мой javascript потом будет оттуда её считывать? Это не сильно отличается от варианта с буфером обмена.
 
А нет ли способа передать значение этой переменной внешнему приложению, без записи в  INI или Clipboard?
 

Всего записей: 5 | Зарегистр. 18-01-2013 | Отправлено: 18:27 03-01-2014
OwwO



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу послать нажатие клавиш
SendInput, ^s    
 
все работает, но если раскладка на русском то просто посылает букву "s" в реактор, нагуглил про скан-коды, если так
^sc01F:: ;нажато ctr+s  
 
то нормально все
 
а если написать так же но для Send
SendInput, {^sc01F}  
 
То не нажимает ctrl+s
 
Как послать ctrl+s на разных раскладках? Мб версия ahk надо другая, я с оф сайта не понял какую лучше качать, скачал AutoHotkey111401_ansi

Всего записей: 17 | Зарегистр. 16-07-2013 | Отправлено: 03:41 19-01-2014
HeT BonpocoB



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
OwwO, вродь формат такой:
 
Send, ^{sc01F}

Всего записей: 1338 | Зарегистр. 30-03-2003 | Отправлено: 11:51 19-01-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

Компьютерный форум 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