Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Atas on November 17, 2020, 08:53:11 AM

Title: Как указать путь к искомой картинке, если она находится вне папки проекта
Post by: Atas on November 17, 2020, 08:53:11 AM
Если Clickermann не позволяет искать картинки, которые находятся вне папки проекта (например, на другом жестком диске, или в сетевой папке), то его можно обмануть.
Для этого нужно создать в Windows символическую ссылку (https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0) (симлинк) на искомую картинку, или папку с картинками. Любая программа в системе может обращаться к такой ссылке по её адресу, как к реальной папке (или файлу), которые на самом деле находятся совсем в другом месте и даже имеют другие имена.

Сделать симлинк можно в Командной строке. Для вызова справки по команде MKLINK, в Командной строке пишем:
Code: (text) [Select]
mklink /?
Синтаксис MKLINK очень простой, так что расписывать тут особо нечего, да и в интернете информации по этому вопросу много.

Для примера, создадим симлинк на папку с картинками:
- Папка проекта - "C:\Проект" (в ней лежит наш скрипт).
- Папка с картинками на другом диске - "D:\Pictures".
- Нам нужно создать симлинк в папке проекта, с новым именем "Картинки", так, чтобы Clickermann мог находить картинки по адресу "C:\Проект\Картинки".

Папку "C:\Проект\Картинки" создавать не нужно, вместо неё будет ссылка.

В Командной строке пишем:
Code: (text) [Select]
mklink /D "C:\Проект\Картинки" "D:\Pictures"
Нажимаем Enter.
Если видим сообщение - "символическая ссылка создана для C:\Проект\Картинки <<===>> D:\Pictures", значит всё получилось. :)

Теперь, например функция SCANPICTURE, сможет находить изображения в папке своего проекта, в несуществующей папке "Картинки", которые на самом деле лежат в папке "Pictures" на другом физическом диске. :)

Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "\Картинки\picture.bmp", -1, 100)

Title: Re: Как указать путь к искомой картинке, если она находится вне папки проекта
Post by: Vint on November 17, 2020, 10:19:17 AM
Сам недавно начал использовать симлинки в винде после линукса. Почитал про всякие Hard Links, Junction Points и Symbolic Links.
Я так понял Junction Points с некоторого времени не актуален, т.к. Symbolic Links стали поддерживать каталоги. Но присутствует для совместимости и путается.

Ещё удобно использовать переменные окружения. Прописываешь на разных компах свой путь в переменной, а скрипт юзает пути через системную переменную.
Например. У меня все проекты на ЯндексДиске. На разных компах YandexDisk лежит на разных логических дисках.
D:\YandexDisk
C:\YandexDisk
F:\Rabochaya\YandexDisk

Создаём свою постоянную глобальную переменная окружения для всех пользователей на YandexDisk для первого компа
Code: (javascript) [Select]
setx /M YandexDisk D:\YandexDiskна других компах по аналогии.

используем дальше как %YandexDisk% где хотим, хоть в cmd, хоть в кликере
Code: (javascript) [Select]
mklink "server_config.txt" "%YandexDisk%\Server\data\server_config.txt"

Можем создать переменную на папку кликера
Code: (clickermann) [Select]
setx /M Clickermann "D:\YandexDisk\Clickermann v4.14.003b x32"
Выводим все переменные
Code: (javascript) [Select]
set
там в куче есть и наши созданные переменные
Code: (javascript) [Select]
...
Clickermann=D:\YandexDisk\Clickermann v4.14.003b x32
...
YandexDisk=D:\YandexDisk
или через Свойства системы ==>> Переменные среды


Используем в cmd
Code: (javascript) [Select]
cd /d %Clickermann%
или в кликере
Code: (clickermann) [Select]
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "%Clickermann%\projects\МойЧудоСкрипт\picture.bmp")