Вы должны войти, чтобы создавать сообщения и темы.

Переключение иконки в AutoHotkey v1

◄Страница 2 из 2

Mikhail, Send ^c я уже пробовал, намучился, пытаясь угадать, из-за чего у меня через раз работает эта комбинация. Оказалось всё просто: эта комбинация не работает в кириллической раскладке. Кроме того при выделении пустой области почему-то нажимается сочетание Alt+PgUp вместо Ctrl+C. Поэтому только такая СкопированоSend ^{vk43sc02eСкопировано} работает корректно. Хотя при выделении пустой области, или перемещении файлов на рабочем столе, или при изменении размеров окна мышью точно также происходит нежелательное нажатие Ctrl+C. Но это не критично. Остальной код заменил. Спасибо!

Mikhail, доброго времени! Решил немного расширить функционал, добавить копирование и вырезание  средней кнопкой мыши. Посмотрите, пожалуйста, нет ли в коде косяков? И ещё хотел спросить, можно ли добавить в трей-меню отключение/включение отдельной части скрипта (Скопировано~LButton::)?

MButton::
Send ^{vk43sc02e}
KeyWait, MButton, T0.5
if (ErrorLevel == 0)
Send {MButton}
else
Send ^{vk58sc02d}
return

 

Имир, 🖐️
Переписал малек, по короче код, не люблю растянутые. Добавил выключение функций, переименуешь под себя в коде, вроде все работает, проверил.

Код

#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

Лайкнул Имир
Имир
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, спасибо огромное! Супер! Исправил вот эти места в скрипте Скопировано;Menu на СкопированоMenu, так как мой СкопированоAutoHotkey появлялся в трее с пустой иконкой. Почему-то компактно переписанные скрипты СкопированоRButton:: и СкопированоMButton:: не захотели запускаться, выдавая вот такие ошибки RButton:: MButton::.

не захотели запускаться, выдавая вот такие ошибки RButton:: MButton::.

Хм..мож чего твой exe как-то не так запускает, у меня стоит Ahk 1.1 на нем писал, все работает.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, да, проблема скорее всего именно в этом. Мой СкопированоAutoHotkey — это всего 2 файла: сам исполняемый файл СкопированоAutoHotkey.exe версия 1.0.44.4 весом 209 КБ и файл СкопированоAutoHotkey.ini, куда я записываю код. У меня он не установлен

Mikhail, скачал, установил, скомпилировал. Но получилось всё с иероглифами. Подскажите, в какой кодировке должен быть Скопированоahk-файл? У меня он был в UTF-8.

Mikhail, судя по всему, в ANSI. Всё сделал, теперь всё заработало! Еще вопрос: можно удалить из скомпилированного exe-файла родные иконки через СкопированоRisohEditor?

Еще вопрос: можно удалить из скомпилированного exe-файла родные иконки через RisohEditor?

Можно, но если нет замены, то будет пустой значок в трее, лучше замени просто на свои и все.

Лайкнул Имир
Имир
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн
◄Страница 2 из 2