Author Topic: Как указать путь к искомой картинке, если она находится вне папки проекта  (Read 1292 times)

0 Members and 1 Guest are viewing this topic.

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Если Clickermann не позволяет искать картинки, которые находятся вне папки проекта (например, на другом жестком диске, или в сетевой папке), то его можно обмануть.
Для этого нужно создать в Windows символическую ссылку (симлинк) на искомую картинку, или папку с картинками. Любая программа в системе может обращаться к такой ссылке по её адресу, как к реальной папке (или файлу), которые на самом деле находятся совсем в другом месте и даже имеют другие имена.

Сделать симлинк можно в Командной строке. Для вызова справки по команде 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)


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Сам недавно начал использовать симлинки в винде после линукса. Почитал про всякие 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")
« Last Edit: November 17, 2020, 10:24:41 AM by Vint »