Ru-Board.club
← Вернуться в раздел «Программы»

» AutoHotkey

Автор: 7Azimuth
Дата сообщения: 15.04.2015 17:58
Народ, помогите разобраться! Скачал с оф. сайта прогу, запускаю ее и вижу такую ошибку:

Что делать?

PS Система Win 8.1 Pro.
Автор: Krot66
Дата сообщения: 15.04.2015 18:54
Это старая версия ("Bsasic"). Скачай отсюда
Автор: 7Azimuth
Дата сообщения: 15.04.2015 19:31

Цитата:
Это старая версия ("Bsasic"). Скачай  отсюда

Там точно такая же версия.
Автор: Krot66
Дата сообщения: 15.04.2015 20:11
Да, та же. Это ошибка инсталляционного скрипта. Вариантов несколько:
- запустить установщик от администратора из корня диска
- распаковать архиватором и запустить setup.exe
- если совсем глухо, распаковать, поместить в рабочее место и ассоциировать ahk-файлы с требуемой версией Autohotkey (u32 или u64), перед этим переименовав ее в просто Autohotkey.exe
Автор: 7Azimuth
Дата сообщения: 15.04.2015 21:29
Krot66
Спасибо.
Автор: 7Azimuth
Дата сообщения: 16.04.2015 18:25
Ничего не помогло
Автор: Krot66
Дата сообщения: 16.04.2015 19:58
Ручная ассоциация не может не работать. Или у тебя стоит акой охранный зверь?
Попробуй что из старых версий
Автор: LonerDergunov
Дата сообщения: 17.04.2015 16:20
Возникло три вопроса.
1) В интерфейсе программы имеется переключатель radio button. Мы знаем его ClassNN. Как узнать - включен ли переключатель (стоит ли в кружочке точечка)?
2) Например, где-нибудь в блокноте выделена часть текста. Каким образом можно его передать в переменную?
3) Как скопировать всё содержимое текстового поля? (мы знаем имя контролла ClassNN этого поля)
Автор: LonerDergunov
Дата сообщения: 17.04.2015 21:58
И ещё вопросики по синтаксису.
1. Можно ли упростить запись:
if ( Variable1 = "apple" || Variable1 = "banana" || Variable1 = "lemon" )
?
То есть сравнить значение одной переменной с разными строками.

2. В новом синтаксисе знак процента можно, а в 2.0 и нужно ставить только перед переменной.
Как правильно записать присвоение переменной значения параметра? В классической записи это выглядит вот так, а как в новой - не пойму.
Variable1 = %1%
И вот такую запись - как осовременить? (убрать двойные проценты вокруг переменной)
WinGet, TCID, ID, ahk_class TTOTAL_CMD
WinGet, Style, Style, ahk_id %TCID%
Автор: LonerDergunov
Дата сообщения: 18.04.2015 04:33
Можно ли работать в AHK с периодическими дробями?
Например, нужно сравнить, что переменная равна 1/3, то есть что-то наподобие вот этого
if ( Variable1 = 0.(3) )
(этот вариант не работает, а как правильно записать - не знаю).
Автор: Skif_off
Дата сообщения: 18.04.2015 13:17
LonerDergunov

Цитата:
Можно ли работать в AHK с периодическими дробями?

А если просто разделить 1 на 3, что покажет? В AutoIt - 15 знаков после запятой (в документации не нашёл), тогда условие было бы типа такого:

Код: if ((Variable1 > 0.333333333333332) and (Variable1 < 0.333333333333334))
Автор: Krot66
Дата сообщения: 18.04.2015 13:44
LonerDergunov

Цитата:
1. Можно ли упростить запись: if ( Variable1 = "apple" || Variable1 = "banana" || Variable1 = "lemon" )

If Variable1 contains apple,banana,lemon

Цитата:
WinGet, Style, Style, ahk_id %TCID%

WinGet, Style, Style, % "ahk_id " TCID

Цитата:
Как скопировать всё содержимое текстового поля? (мы знаем имя контролла ClassNN этого поля)

ControlGetText

Цитата:
1) В интерфейсе программы имеется переключатель radio button. Мы знаем его ClassNN. Как узнать - включен ли переключатель (стоит ли в кружочке точечка)?

ControlGet, OutputVar, Cheked
Скопировать текст из блокнота можно через ControlSend


Автор: OnMyDSeeAtAll
Дата сообщения: 18.04.2015 15:33
LonerDergunov 16:20 17-04-2015
Цитата:
Например, где-нибудь в блокноте выделена часть текста. Каким образом можно его передать в переменную?
Вы можете использовать Selected из списка команд ControlGet. [more=.]
Код: ControlGet, sSelectedText, Selected,, % "Edit1", % "ahk_class Notepad"
Автор: LonerDergunov
Дата сообщения: 19.04.2015 15:30
Спасибо
А что на счёт переданных скрипту параметров? Их нужно только двойными процентами обрамлять?
Mode = %1%
или можно как-то по-другому, вот в таком стиле:
Mode = % 1

И вот такая ситуация. Нужно выполнить команду 3301, 3302, 3303 в зависимости от переданного параметра (1, 2, 3).
Работает вот такой способ записи:

Код: Mode = %1%
Mode = % "330" . Mode
SendMessage, 0x433, % Mode,,, ahk_class TTOTAL_CMD
Автор: LonerDergunov
Дата сообщения: 20.04.2015 04:26
Есть ли какие лимиты на команду StringReplace ?
У меня на команде
StringReplace, FileList, FileList, % Path, , All
скрипт вываливается если переменная FileList большая.
Цель этой строки - создание списка файлов с относительными путями.
FileList - это список файлов с полными путями.
Path - это путь (например C:\Windows\WinSxS).
Если FileList содержит 60 тысяч строк - скрипт отрабатывает, а если 90 тысяч (порядка 17 Мб) - уже вываливается.
#MaxMem позволяет в переменно до 64 Мб держать. Пробовал увеличивать - не помогает...
Автор: creature_ws
Дата сообщения: 20.04.2015 05:23
Вываливаентся - можно на офф форум запостить лог ошибки, пример скрипта и содержимого path.
Автор: LonerDergunov
Дата сообщения: 20.04.2015 14:44
А отсюда вопрос - как получить лог ошибки? ))
Автор: Krot66
Дата сообщения: 20.04.2015 20:05

Цитата:
Есть ли какие лимиты на команду StringReplace ? У меня на команде StringReplace, FileList, FileList, % Path, , All

Попробуй использовать RegExReplace, что несколько медленнее.
Можно сделать цикл с построчным разбором переменной и использовать StringReplace в нем
Автор: MojDodyr
Дата сообщения: 27.04.2015 21:07
привет, подскажите плиз чайнику как просто перезапустить скрипт через 15 сек? команда reload пораждает петлю.. Может както с помощью 2-го вспомогательного скрипта?

Автор: OnMyDSeeAtAll
Дата сообщения: 03.05.2015 18:38
Как [more=вариант]
Код: If Not %0%
{
Sleep, 15000
Run, % """" . A_ScriptFullPath . """" . A_ScriptHwnd . ""
ExitApp
}
SetEnv,
param, %1%
Space::MsgBox, 262144, % A_Space, % "old: " .
param . "`nnew: " . A_ScriptHwnd
Автор: LonerDergunov
Дата сообщения: 04.05.2015 02:57
Есть ли какой-нибудь надёжный способ отработки команды ControlClick или альтернативы?
В ХР как-то эта команда постабильней работает, а вот в Win 8.1 (или из-за того, что компьютер помощнее) - полный хаос, часто не успевает отработать, иногда даже видно, как контрол нажимается (темнеет, мигает), но самого клика не происходит.

Открыто окно, нужно автоматически поставить крыжики в нескольких чекбоксах, нажать кнопочки... Фактически кликнуть мышкой.
ControlClick, % CheckBox1, ahk_class ProgClass
ControlClick, % CheckBox2, ahk_class ProgClass
ControlClick, % CheckBox3, ahk_class ProgClass
Играюсь с Sleep, SetKeyDelay - не помогает, срабатывает когда как, иногда успевает отработать, иногда нет...

Предварительный переход на контрол тоже не даёт результата...
ControlFocus, % CheckBox1, ahk_class ProgClass

Строка SetBatchLines, -1 прописана.

Помогает разве что огромная задержка
SetKeyDelay, 150, 150
и длинные паузы
Sleep, 500

Добавлено:



Цитата:
Есть ли какой-нибудь надёжный способ отработки команды ControlClick или альтернативы?

Придумал/нагуглил/адаптировал варианты:
SendMessage, 0x201,,, % CheckBox1, ahk_class ProgClass ;WM_LBUTTONDOWN=0x201
SendMessage, 0x202,,, % CheckBox1, ahk_class ProgClass ;WM_LBUTTONUP=0x202
и
ControlSend , % CheckBox1, {Space}, ahk_class ProgClass

Но какой из них более "стабильный", "корректный", "предпочтительней"? Может, ещё какие варианты предложите?
Автор: creature_ws
Дата сообщения: 17.05.2015 08:15
-
Автор: ph
Дата сообщения: 19.05.2015 22:00
Добрый вечер.
Подскажите, как можно реализовать скрипт:
пользователь нажимает на кнопку сворачивания окна и по этому клику должен обновиться экран (рабочий стол), как если бы он нажал на клавишу F4.
Заранее спасибо.
Автор: OnMyDSeeAtAll
Дата сообщения: 20.05.2015 23:39
2LonerDergunov У меня (w7x64) все описанные варианты работают без нареканий.

2ph
Как-то [more=так]
Код: #SingleInstance, Ignore
IfEqual
, A_IsAdmin, % False, Run, % "*RunAs """A_ScriptFullPath """",, UseErrorLevel
IfEqual
, A_IsAdmin, % False, ExitApp

CoordMode,
Mouse

#If CheckUp()
~
LButton::ControlSend,, {F5}, % "ahk_class WorkerW"

CheckUp()
{
MouseGetPos,
X, Y, hWnd
; https://msdn.microsoft.com/en-us/library/windows/desktop/ms645618(v=vs.85).aspx
SendMessage, 0x0084,, Y<<16|X,, % "ahk_id"hWnd
Return, ErrorLevel=8 ? True:False
}
Автор: ixet
Дата сообщения: 14.07.2015 19:44
Приветствую знатоков!
Недавно купил недорогой ультрабук Lenovo M30-70 (проц i3, Win8.1). Машинка так себе, но для командировок с офисными задачами пойдет. Но есть огромный косяк с клавиатурой, из-за чего работать невозможно. С помощью AutoHotKey исправить его, похоже, можно, но умений у меня не хватает. Потому очень прошу помочь.

В чем проблема. По умолчанию у всех Lenovo ряд кнопок F1-F12 работает через Fn, но их можно вернуть к нормальному состоянию через BIOS. Но у этого ноута такое извращение касается и ряда клавиш Home, PgUp, PgDown, End. И самое поганое, что с «противоходом», т.е. либо у тебя нормальная F1, либо Home! По-моему, если это офисный ноут, то приоритет должен быть отдан печати, а при скоростной навигации по тексту и наборе текста жизненно необходимы сочетания клавиш Ctrl-Home, Ctrl-Shift-Home и т.д. Попробуйте-ка понажимать последнее сочетание еще и с Fn!

Но это еще полбеды. Если у этого ноута переключить BIOS в режим с нормальным функционированием F1-F12, то перестаёт работать сочетание клавиш Ctrl-Home и Ctrl-Shift-Home! Вот такая засада: или жить с кривыми F1-F12, но нормальными Home-End, или нормальные F1-F12, но кривые Home-End и с неработающим Ctrl-Home .
Думал проблемы в Win8.1, загрузился с LiveCD в WinXP и Win7 – то же самое. Сканировал коды клавиш: каким-то образом при нажатии Ctrl-Home возвращается нажатие Ctrl-Break, хотя без нажатия Ctrl всё нормально.
Как это победить, х.з. Нигде никакой информации. Только на английском леново-форуме (Ссылка) предложен скрипт для исправления. Скрипт я переделал под свою ситуацию и Fn нажимать теперь не надо. Но для Ctrl-Home скрипт не работает. Сейчас Ctrl-Home работает также как Ctrl-End; Ctrl-Shift-Home как Ctrl-Shift-End. Автор скрипта Ctrl-Home переназначил на Alt-Home, и говорит, что других способов не видит. Но мне это не нравится.

Может всё-таки есть варианты полноценного исправления нажатия Ctrl-Home и Ctrl-Shift-Home? Через какие-нибудь условия например, в таких сложностях я, увы не силён.

Прикладываю свой скрипт и отсканированные коды всех вариантов нажатия клавиш.


Код:
; key codes:
; ^ Ctrl, + Shift, ! Alt
; 45 Pause, 146 CtrlBreak, 46 ScrollLock, 152 Insert, 147 Home, 14F End, 149 PgUp, 151 PgDn

SC045 :: Send {Home}
^SC045 :: Send ^{Home}
+SC045 :: Send +{Home}
^+SC045 :: Send ^+{Home}

SC146 :: Send {End}
^SC146 :: Send ^{End}
+SC146 :: Send +{End}
^+SC146 :: Send ^+{End}

SC046 :: Send {PgUp}
^SC046 :: Send ^{PgUp}
+SC046 :: Send +{PgUp}
^+SC046 :: Send ^+{PgUp}

SC152 :: Send {PgDn}
^SC152 :: Send ^{PgDn}
+SC152 :: Send +{PgDn}
^+SC152 :: Send ^+{PgDn}

; проблема: Ctrl-Home работает также как Ctrl-End; Ctrl-Shift-Home как Ctrl-Shift-End
Автор: ixet
Дата сообщения: 15.07.2015 20:34
Появилась идея. Может можно Ctrl-Home реализовать через жесткий переход к первой строке активного окна, типа GoTo?
Автор: mxzoommax
Дата сообщения: 03.09.2015 20:51
Есть ли тут люди, активно использующие Autohotkey? Расскажите, сильно ли версия L уступает по функционалу AutoIt3? Можно ли продуктивно использовать Autohotkey v2? Есть ли вменяемая документация по второй версии? Использую текущую стабильную версию в работе, но часто сталкиваюсь, с тем, скрипты отрабатывают по разному на разных ОС (win7, win8), и вообще, не очень логичный, запутанный синтаксис в некоторых местах. В связи с этим думаю перейти на AutoIt, или дождаться AHKv2. Целесообразно, как думаете?
Автор: DJ_URAN
Дата сообщения: 11.09.2015 00:51
Други! А как прописать символ ± в программе? Комбинацией или номером спецсимвола?
Автор: OnMyDSeeAtAll
Дата сообщения: 30.09.2015 18:40
mxzoommax 20:51 03-09-2015
Цитата:
...сильно ли версия L уступает по функционалу AutoIt3?
Не сравнивал (за не надобностью), может и можно найти сильные и слабые стороны.
Цитата:
Можно ли продуктивно использовать Autohotkey v2?
Есть опыт работы с первой версией?, описанные отличия не напрягают?, значит можно использовать.
Цитата:
Есть ли вменяемая документация по второй версии?
Нативная вполне вменяема.
Цитата:
...скрипты отрабатывают по разному на разных ОС...
Есть встроенная переменная на такие случаи.
Цитата:
...не очень логичный, запутанный синтаксис в некоторых местах.
Не нахожу его таковым, запутанными/трудно читаемыми могут быть скрипты (к примеру с оффорума).
Цитата:
...думаю перейти на AutoIt, или дождаться AHKv2. Целесообразно, как думаете?
Хозяин-барин как говорится.
DJ_URAN 00:51 11-09-2015
Цитата:
...как прописать символ ± в программе?
[more=Варианты:]
Код: Send, % Chr(177)
; Send, % Chr(0xB1)
; Send, % "±"
; Send, % "{U+00B1}"
; Send, % "{ASC 0177}"
; Send, % "{AltDown}{vk60}{vk61}{vk67 2}{AltUp}"
Автор: shaggoth
Дата сообщения: 11.11.2015 20:27

Код: #Persistent
#IfWinActive Fallout4
SetTimer, PressTheKey, 900000
Return

PressTheKey:
Send, {F5}
Return

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: как добавить ивритские шрифты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.