Переключение иконки в AutoHotkey v1
Цитата: Имир от 27.09.2025, 20:40Mikhail, Send ^c я уже пробовал, намучился, пытаясь угадать, из-за чего у меня через раз работает эта комбинация. Оказалось всё просто: эта комбинация не работает в кириллической раскладке. Кроме того при выделении пустой области почему-то нажимается сочетание Alt+PgUp вместо Ctrl+C. Поэтому только такая
Send ^{vk43sc02e}работает корректно. Хотя при выделении пустой области, или перемещении файлов на рабочем столе, или при изменении размеров окна мышью точно также происходит нежелательное нажатие Ctrl+C. Но это не критично. Остальной код заменил. Спасибо!
Mikhail, Send ^c я уже пробовал, намучился, пытаясь угадать, из-за чего у меня через раз работает эта комбинация. Оказалось всё просто: эта комбинация не работает в кириллической раскладке. Кроме того при выделении пустой области почему-то нажимается сочетание Alt+PgUp вместо Ctrl+C. Поэтому только такая СкопированоSend ^{vk43sc02eСкопировано} работает корректно. Хотя при выделении пустой области, или перемещении файлов на рабочем столе, или при изменении размеров окна мышью точно также происходит нежелательное нажатие Ctrl+C. Но это не критично. Остальной код заменил. Спасибо!
Цитата: Имир от 28.09.2025, 10:37Mikhail, доброго времени! Решил немного расширить функционал, добавить копирование и вырезание средней кнопкой мыши. Посмотрите, пожалуйста, нет ли в коде косяков? И ещё хотел спросить, можно ли добавить в трей-меню отключение/включение отдельной части скрипта (
~LButton::)?MButton:: Send ^{vk43sc02e} KeyWait, MButton, T0.5 if (ErrorLevel == 0) Send {MButton} else Send ^{vk58sc02d} return
Mikhail, доброго времени! Решил немного расширить функционал, добавить копирование и вырезание средней кнопкой мыши. Посмотрите, пожалуйста, нет ли в коде косяков? И ещё хотел спросить, можно ли добавить в трей-меню отключение/включение отдельной части скрипта (Скопировано~LButton::)?
MButton::
Send ^{vk43sc02e}
KeyWait, MButton, T0.5
if (ErrorLevel == 0)
Send {MButton}
else
Send ^{vk58sc02d}
return
Цитата: Mikhail от 28.09.2025, 11:59Имир, 🖐️
Переписал малек, по короче код, не люблю растянутые. Добавил выключение функций, переименуешь под себя в коде, вроде все работает, проверил.
[spoiler title="Код"]#SingleInstance force Menu, Tray, NoStandard Menu, Tray, Add, Отключить скрипт, ToggleScript Menu, Tray, Add Menu, Tray, Add, ПКМ вставка, ToggleR Menu, Tray, Add, ЛКМ копирование, ToggleL Menu, Tray, Add, СКМ коп/вырезать, ToggleM Menu, Tray, Add Menu, Tray, Add, Выход, ExitScript Menu, Tray, Default, Отключить скрипт ;Menu, Tray, Icon, 1.ico scriptEnabled := true enableR := true enableL := true enableM := true RButton:: if (!scriptEnabled || !enableR) { Send {RButton} return } KeyWait, RButton, T0.5 if !ErrorLevel { Send {RButton} } else { Send ^{vk56sc02f} Sleep 1000 While GetKeyState("RButton","P") { Send ^{vk56sc02f} Sleep 200 } } return ~LButton:: if (!scriptEnabled || !enableL) return KeyWait, LButton, T0.2 if !ErrorLevel return MouseGetPos, x0, y0 KeyWait, LButton MouseGetPos, x, y if (Abs(x-x0) > 5 || Abs(y-y0) > 5) { clip0 := ClipboardAll Send ^{vk43sc02e} ClipWait, 1, 1 if (Clipboard = "") Clipboard := clip0 } return MButton:: if (!scriptEnabled || !enableM) { Send {MButton} return } KeyWait, MButton, T0.5 Send % ErrorLevel ? "^x" : "^c{MButton}" return ToggleScript: scriptEnabled := !scriptEnabled if (scriptEnabled) { Menu, Tray, Rename, Включить скрипт, Отключить скрипт ;Menu, Tray, Icon, 1.ico } else { Menu, Tray, Rename, Отключить скрипт, Включить скрипт ;Menu, Tray, Icon, 2.ico } return ToggleR: enableR := !enableR Menu, Tray, ToggleCheck, ПКМ вставка return ToggleL: enableL := !enableL Menu, Tray, ToggleCheck, ЛКМ копирование return ToggleM: enableM := !enableM Menu, Tray, ToggleCheck, СКМ коп/вырезать return ExitScript: ExitApp return[/spoiler]
Имир, 🖐️
Переписал малек, по короче код, не люблю растянутые. Добавил выключение функций, переименуешь под себя в коде, вроде все работает, проверил.
#SingleInstance force
Menu, Tray, NoStandard
Menu, Tray, Add, Отключить скрипт, ToggleScript
Menu, Tray, Add
Menu, Tray, Add, ПКМ вставка, ToggleR
Menu, Tray, Add, ЛКМ копирование, ToggleL
Menu, Tray, Add, СКМ коп/вырезать, ToggleM
Menu, Tray, Add
Menu, Tray, Add, Выход, ExitScript
Menu, Tray, Default, Отключить скрипт
;Menu, Tray, Icon, 1.ico
scriptEnabled := true
enableR := true
enableL := true
enableM := true
RButton::
if (!scriptEnabled || !enableR) {
Send {RButton}
return
}
KeyWait, RButton, T0.5
if !ErrorLevel {
Send {RButton}
} else {
Send ^{vk56sc02f}
Sleep 1000
While GetKeyState("RButton","P") {
Send ^{vk56sc02f}
Sleep 200
}
}
return
~LButton::
if (!scriptEnabled || !enableL)
return
KeyWait, LButton, T0.2
if !ErrorLevel
return
MouseGetPos, x0, y0
KeyWait, LButton
MouseGetPos, x, y
if (Abs(x-x0) > 5 || Abs(y-y0) > 5) {
clip0 := ClipboardAll
Send ^{vk43sc02e}
ClipWait, 1, 1
if (Clipboard = "")
Clipboard := clip0
}
return
MButton::
if (!scriptEnabled || !enableM) {
Send {MButton}
return
}
KeyWait, MButton, T0.5
Send % ErrorLevel ? "^x" : "^c{MButton}"
return
ToggleScript:
scriptEnabled := !scriptEnabled
if (scriptEnabled) {
Menu, Tray, Rename, Включить скрипт, Отключить скрипт
;Menu, Tray, Icon, 1.ico
} else {
Menu, Tray, Rename, Отключить скрипт, Включить скрипт
;Menu, Tray, Icon, 2.ico
}
return
ToggleR:
enableR := !enableR
Menu, Tray, ToggleCheck, ПКМ вставка
return
ToggleL:
enableL := !enableL
Menu, Tray, ToggleCheck, ЛКМ копирование
return
ToggleM:
enableM := !enableM
Menu, Tray, ToggleCheck, СКМ коп/вырезать
return
ExitScript:
ExitApp
return
Цитата: Имир от 28.09.2025, 15:57Mikhail, спасибо огромное! Супер! Исправил вот эти места в скрипте
;MenuнаMenu, так как мойAutoHotkeyпоявлялся в трее с пустой иконкой. Почему-то компактно переписанные скриптыRButton::иMButton::не захотели запускаться, выдавая вот такие ошибки RButton:: MButton::.
Mikhail, спасибо огромное! Супер! Исправил вот эти места в скрипте Скопировано;Menu на СкопированоMenu, так как мой СкопированоAutoHotkey появлялся в трее с пустой иконкой. Почему-то компактно переписанные скрипты СкопированоRButton:: и СкопированоMButton:: не захотели запускаться, выдавая вот такие ошибки RButton:: MButton::.
Цитата: Mikhail от 28.09.2025, 16:24не захотели запускаться, выдавая вот такие ошибки RButton:: MButton::.
Хм..мож чего твой exe как-то не так запускает, у меня стоит Ahk 1.1 на нем писал, все работает.
не захотели запускаться, выдавая вот такие ошибки RButton:: MButton::.
Хм..мож чего твой exe как-то не так запускает, у меня стоит Ahk 1.1 на нем писал, все работает.
Цитата: Имир от 28.09.2025, 18:04Mikhail, да, проблема скорее всего именно в этом. Мой
AutoHotkey— это всего 2 файла: сам исполняемый файлAutoHotkey.exeверсия 1.0.44.4 весом 209 КБ и файлAutoHotkey.ini, куда я записываю код. У меня он не установлен
Mikhail, да, проблема скорее всего именно в этом. Мой СкопированоAutoHotkey — это всего 2 файла: сам исполняемый файл СкопированоAutoHotkey.exe версия 1.0.44.4 весом 209 КБ и файл СкопированоAutoHotkey.ini, куда я записываю код. У меня он не установлен
Цитата: Имир от 28.09.2025, 19:02Mikhail, скачал, установил, скомпилировал. Но получилось всё с иероглифами. Подскажите, в какой кодировке должен быть
ahk-файл? У меня он был в UTF-8.
Mikhail, скачал, установил, скомпилировал. Но получилось всё с иероглифами. Подскажите, в какой кодировке должен быть Скопированоahk-файл? У меня он был в UTF-8.
Цитата: Имир от 28.09.2025, 19:23Mikhail, судя по всему, в ANSI. Всё сделал, теперь всё заработало! Еще вопрос: можно удалить из скомпилированного exe-файла родные иконки через
RisohEditor?
Mikhail, судя по всему, в ANSI. Всё сделал, теперь всё заработало! Еще вопрос: можно удалить из скомпилированного exe-файла родные иконки через СкопированоRisohEditor?
Цитата: Mikhail от 29.09.2025, 01:44Еще вопрос: можно удалить из скомпилированного exe-файла родные иконки через
RisohEditor?Можно, но если нет замены, то будет пустой значок в трее, лучше замени просто на свои и все.
Еще вопрос: можно удалить из скомпилированного exe-файла родные иконки через
RisohEditor?
Можно, но если нет замены, то будет пустой значок в трее, лучше замени просто на свои и все.