1 (изменено: becauseim, 2020-01-17 17:47:08)

Тема: AHK: Не работает автозагрузка

Если создать ярлык вручную и поместить его в %A_Startup%, то скрипт запускается.
Если создать ярлык автозагрузки из самого скрипта, то не инициализируется программа запуска и выходит ошибка. Как это исправить?

FileCreateShortcut, %A_ProgramFiles%\AutoHotkey\AutoHotkeyU64.exe, %A_Startup%\%A_ScriptName%.lnk, C:\, "%A_ScriptFullPath%",
+ открыть спойлер

https://i.imgur.com/iFJFq8T.png
https://i.imgur.com/xoxYSxG.png

В целом, переключение чекбокса тоже не работает


Menu, Script, Add, Startup, Startup
Startup:
If FileExist( "%A_Startup%\%A_ScriptName%.lnk" ) {
   Menu, Script, Uncheck, Startup
   FileDelete, %A_Startup%\%A_ScriptName%.lnk
} Else {
   Menu, Script, Check, Startup
	FileCreateShortcut, C:\Program Files\AutoHotkey\AutoHotkeyU64.exe, %A_Startup%\%A_ScriptName%.lnk, C:\, "%A_ScriptFullPath%",
}
return

То есть, по задумке: чекбокс стоит - автозагрузка включена.

2 (изменено: teadrinker, 2020-01-17 17:47:04)

Re: AHK: Не работает автозагрузка

becauseim пишет:

"%A_Startup%\%A_ScriptName%.lnk"

А что это за синтаксис такой странный? В параметрах, передаваемых функции, нужно использовать синтаксис выражений. Внутри строки в кавычках значения обрамлённые знаками процента ни во что не разрешаются.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Не работает автозагрузка

teadrinker, не понял, нужно конкретный путь указать или знаки процентов неправильно использованы? Остальная часть кода без ошибок?

4

Re: AHK: Не работает автозагрузка

Внутри кавычек знаки процентов используются только если их нужно трактовать буквально. Переменные нужно передавать без кавычек и без знаков процента. Остальная часть кода без ошибок.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Не работает автозагрузка

teadrinker, даже после того, как я без знаков процента полностью прописал в кавычках путь - условие не работает. То есть скрипт умеет создавать ярлык, но не удалять его, если он есть. И еще, если чекбокс стоит, но после перезагрузки пропадает, хотя ярлык на месте.

6

Re: AHK: Не работает автозагрузка

becauseim пишет:

даже после того, как я без знаков процента полностью прописал в кавычках путь - условие не работает.

Наверно, как-то не так прописали, у меня проблем не возникает с созданием ярлыков в автозагрузке. Покажите, как сейчас выглядит код.

becauseim пишет:

после перезагрузки пропадает

А почему он должен оставаться? Чтобы он был, это должно быть как-то прописано при создании меню.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Не работает автозагрузка

Нашел тут рабочий вариант. Но все еще не знаю, как оставить текущее положение после перезагрузки. Подскажите, пожалуйста.

menu, tray, add, Run At Startup, run_at_startup
menu, tray, % fileExist(a_startup "\" a_scriptName ".lnk") ? "check" : "unCheck", Run At Startup
run_at_startup:     ; tray menu label
if fileExist(a_startup "\" a_scriptName ".lnk")
    fileDelete, % a_startup "\" a_scriptName ".lnk"
else fileCreateShortcut, % a_scriptFullPath, % a_startup "\" a_scriptName ".lnk"
menu, tray, % fileExist(a_startup "\" a_scriptName ".lnk") ? "check" : "unCheck", Run At Startup
return

8

Re: AHK: Не работает автозагрузка

#Persistent
Menu, Tray, Add, Add To Startup, AddToStartup
if FileExist(A_Startup . "\" . A_ScriptName . ".lnk")
   Menu, Tray, Check, Add To Startup
Return

AddToStartup() {
   shortcut := A_Startup . "\" . A_ScriptName . ".lnk"
   if FileExist(shortcut) {
      Menu, Tray, UnCheck, Add To Startup
      FileDelete, % shortcut
   }
   else {
      Menu, Tray, Check, Add To Startup
      FileCreateShortcut, % A_ScriptFullPath, % shortcut, % A_ScriptDir
   }
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Не работает автозагрузка

Или так:

#Persistent
Menu, Tray, Add, Add To Startup, AddToStartup
if FileExist(A_Startup . "\" . A_ScriptName . ".lnk")
   Menu, Tray, Check, Add To Startup
Return

AddToStartup() {
   shortcut := A_Startup . "\" . A_ScriptName . ".lnk"
   Menu, Tray, ToggleCheck, Add To Startup
   if FileExist(shortcut)
      FileDelete, % shortcut
   else
      FileCreateShortcut, % A_ScriptFullPath, % shortcut, % A_ScriptDir
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Не работает автозагрузка

teadrinker, Спасибо!