Тема: AHK: Удаление файла, записанного скриптом
Здравствуйте!
Файл, записанный скриптом, не может быть удален другой программой. Как это исправить без закрытия или перезагрузки скрипта?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте!
Файл, записанный скриптом, не может быть удален другой программой. Как это исправить без закрытия или перезагрузки скрипта?
По-моему, это ненормально.
Возможно, надо файл закрыть. Как именно он создаётся в скрипте?
Происходит так:
1) скрипт создает файл и добавляет в него текст (FileAppend, добавляемый текст, C:\lisparam.txt)
2) другая программа читает этот файл, а затем удаляет его (файл читается, но не удаляется, кроме того скрипт теряет к нему доступ, не может уже ни записать в этот файл новый текст, ни удалить файл)
При этом файл нигде не открыт, программы работают автоматически.
Мне надо было как-то передать данные из скрипта на автохоткей в другой скрипт на autolisp. Хотел через переменные окружения, но не получилось, решил вот через файл - тоже не получается (оба скрипта не могут удалить файл). В autolisp есть функция для закрытия файла, "открытого" для чтения и записи, но она не помогает (не помогает восстановить доступ скрипта на автохоткей к файлу и перезаписать его через этот скрипт).
Помогает перезагрузка скрипта, выполняемая сразу после передачи управления программе на autolisp (тогда программа на autolisp может удалить файл). Но хотелось бы без перезагрузки.
studentarh, попробуй в качестве теста написать скрипт, который читает и удаляет файл, на AHK. Если всё сработает, значит проблема в скрипте на autolisp'е.
На автохоткей все работает. Но и на автолиспе без автохоткей тоже все работает. А вместе никак. Но перезагрузка скрипта на автохоткей помогает, то есть возможно файл не удаляется автолиспом из-за связи этого файла со скриптом на автохоткей, которую наверное можно как-то отменить без перезагрузки скрипта (может, для самого автохоткей эта связь - не препятствие). Но если это так, не понятно, как отменить связь без перезагрузки.
Почитаю еще про переменные окружения в автолиспе, если что-то получится, напишу здесь.
На автолиспе не пишу, не могу подсказать. Но на AHK, если файл создаётся или дополняется командой FileAppend, то он автоматически закрывается после этого действия:
The target file is automatically closed after the text is appended (except when FileAppend is used in its single-parameter mode inside a file-reading/writing loop).
Заработало без перезагрузки, спасибо за ответы!
Ошибка была все-таки в моем скрипте на автолиспе (а именно в отсутсвии этого закрытия файла, которое в автолиспе надо выполнять специальной функцией), но когда я исправлял ошибку, это не помогало, поскольку файл был уже заблокирован, и никак не разблокировался до выключения программ. Теперь проверил все несколько раз - работает.
Я решал проблему передачи данных autolisp->ahk через буфер обмена.
Я как-то не подумал, это лучше, чем через файл. Если можно, приведите вариант такого решения (как именно работать с буфером обмена в autolisp).
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться