1

Тема: AHK: Проблемы с #include

И так по шагам.
Я вынес все пути в файл PathUses.ahk - для проверки так сказать и написал #include PathUses.ahk
А вот дальше пошло непонятное:
- AHK ругается на строчку #include PathUses.ahk пока я её не заменил на #Include c:\Program Files (x86)\AutoHotkey\PathUses.ahk, т.е. пишет что файл не может быть открыт, т.е. он его не находит.
- после перезагрузки значок исчез из трея, но скрипт работал;
- вторая перезагрузка значек появился, но стандартный;
- ещё перезагрузка - всё стало нормально.

Да, я понимаю что сейчас нормально стало, но я не очень понимаю причины всего происходящего.

Вот фрагменты файлов PathUses.ahk и mcafee.ahk, оба файла находятся в c:\Program Files (x86)\AutoHotkey\

PathUses.ahk

;==========Общие пути===========
;--Общесистемные пути
ProgSysPath32 := "C:\Program Files (x86)"
ProgSysPath64 := "C:\Program Files"

;--Пути к McAfee
mcPath := ProgSysPath32 "\McAfee\"
mcVSE  := mcPath "VirusScan Enterprise\"
mcCFW  := mcPath "Common Framework\"

mcafee.ahk (фрагмент, начало скрипта)

#Include c:\Program Files (x86)\AutoHotkey\PathUses.ahk


;===Автоматизация McAfee=====================

;++++++++++++++++++++++++++++++++++++++++++++
;-----Инициализация
;--Cменить иконку
mcTray := mcCFW  "McTray.exe"
Menu, Tray, Icon, %McTray%,, 1
;++++++++++++++++++++++++++++++++++++++++++++
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

2

Re: AHK: Проблемы с #include

А где лежит mcafee.ahk? В той же папке, где вставляемый скрипт?
Вообще, я вам рекомендую убрать скрипты из Program Files. Это защищённая папка, так что, может, и заморочки все отсюда. Виртуализация там всякая и проч. и проч.

3

Re: AHK: Проблемы с #include

YMP пишет:

1. А где лежит mcafee.ahk? В той же папке, где вставляемый скрипт?
2. Вообще, я вам рекомендую убрать скрипты из Program Files. Это защищённая папка, так что, может, и заморочки все отсюда.
3. Виртуализация там всякая и проч. и проч.

1. Да, там же, т.е. в папке куда был установлен AHK
2. Уже сделал.
3. Согласен.

P.S. Странно что ошибок больше не было - проверял на других скриптах.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

4

Re: AHK: Проблемы с #include

Переправил  вот так....

AllSystemOS.ahk (фрагмент, начало скрипта)

#Include %A_ScriptDir%\Include\PathUses.ahk


;++++++++++++++++++++++++++++++++++++++++++++
;-----Инициализация
;--Cменить иконку
mcTray := PathAhkIcon "Os_Settings_Gear.ico"
Menu, Tray, Icon, %McTray%,, 1
;++++++++++++++++++++++++++++++++++++++++++++

;==========Расширенный диспечер задач========
LWin & LShift::
AnVirTask := ProgSysPath32 "AnVir Task Manager\AnVir.exe"
Run, %AnVirTask%
return
;============================================

;==========McAfee==============
;++++++++++++++++++++++++++++++++++++++++++++
;-----Запуск консоли McAfee
LWin & CapsLock::
RWin & CapsLock::
mcConsol := "mcconsol.exe"
mcKey1 := "/NOSPLAS"
Run, %mcConsol% %mcKey1%, %mcVSE%
return
;++++++++++++++++++++++++++++++++++++++++++++
;============================================

и PathUses.ahk

;==========Общие пути===========
;--Общесистемные пути
ProgSysPath32 := "C:\Program Files (x86)\"
ProgSysPath64 := "C:\Program Files\"
PathAhk := "C:\AHK\"
PathAhkInclude := PathAhk "Include\"
PathAhkIcon := PathAhk "Icon\"

;--Пути к McAfee
mcPath := ProgSysPath32 "McAfee\"
mcVSE  := mcPath "VirusScan Enterprise\"
mcCFW  := mcPath "Common Framework\"

Но так и не понял как упростить это - #Include %A_ScriptDir%\Include\PathUses.ahk т.е. указать путь для директивы #Include

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

5

Re: AHK: Проблемы с #include

Создать переменную Include содержащую этот путь?

6 (изменено: Indomito, 2012-03-14 13:00:31)

Re: AHK: Проблемы с #include

Да, т.е. что бы она срабатывала в директиве include

Пример(как то так): #Include %IncludetDir%PathUses.ahk

Так можно сделать, но не повлияв на общую работоспособность скрипта?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

7

Re: AHK: Проблемы с #include

А почему она должна повлиять? Есть ещё команда SetWorkingDir. Тогда путь не надо будет указывать.

8

Re: AHK: Проблемы с #include

YMP Цитирую

Справка chm пишет:

Файл: если полный путь не указан, предполагается, что файл находится в стартовом/рабочем каталоге (исключение: ahk2exe предполагает, что файл находится в одном каталоге со скриптом). Путь и имя файла не должны содержать ссылок на переменные (кроме %A_ScriptDir%, %A_AppData% и %A_AppDataCommon%), двойных кавычек или шаблонов. Escape-последовательности, кроме случая точки с запятой (`;), не должны использоваться, но это и не нужно, поскольку такие символы как знак процента интерпретируются как литеральные. Замечание: SetWorkingDir не оказывает влияния на #Include, поскольку #Include обрабатывается до того как скрипт начнёт выполняться.

так что я не очень понял как использовать SetWorkingDir

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

9

Re: AHK: Проблемы с #include

Да, верно, я забыл об этом. Но сама директива #Include ведь может задавать свой каталог, так что особой разницы нет. Об этой её возможности я тоже забыл.

Каталог: укажите вместо файла, чтобы изменить рабочий каталог, который будет использоваться всеми последующими применениями #Include и FileInstall. Имя каталога не должно содержать переменных кроме %A_ScriptDir%, %A_AppData% и %A_AppDataCommon%. Замечание: изменение рабочего каталога таким способом не влияет на исходный рабочий каталог скрипта (A_WorkingDir). Для его изменения используйте SetWorkingDir вверху скрипта.

10

Re: AHK: Проблемы с #include

YMP пишет:

Но сама директива #Include ведь может задавать свой каталог, так что особой разницы нет.

т.е. как задавал я или иначе?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

11

Re: AHK: Проблемы с #include

Так вы файл задавали, с полным путём к нему. А надо просто каталог указать, где все такие файлы у вас лежат. А уже после этого сможете в следующих #Include указывать только имя файла. Так я понял, по крайней мере.

12 (изменено: Indomito, 2012-03-15 14:39:36)

Re: AHK: Проблемы с #include

Ясно - проверю.


--------Позже--------

Проверил конструкция типа

#Include %A_ScriptDir%\Include\

#Include PathUses.ahk

работает правильно и действует на остальные Include, хотя можно менять путь или задавать абсолютный, ну если есть нужда/необходимость.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download