1

Тема: AHK: ControlSend в Notepad с возможностью hide режимом

В общем..
Имеется .txt файл, который занят процессом и поэтому FileDelete применять запрещено, ибо потом процесс перестаёт записывать туда данные.
Обычный Notepad или Notepad++ поддерживает перезапись файла, соответственно мне нужно удалять всю информацию внутри файла, не удаляя при этом сам файл.
Спустя часы нервотрёпки, я пришел к такому коду:


Run, Notepad "latest.txt",, max
sleep, 250
sendmessage, WM_COMMAND:=0x111, NOTEPAD_SELECTALL:=25, 0,, latest.txt
sleep, 250
sendMessage, 0x50, 0, 0x4090409,, latest.txt
sleep, 250
ControlSend, Edit1, {del down}{del up}, latest.txt
sleep, 250
ControlSend, Edit1, {ctrl down}{s}, latest.txt
sleep, 250
if WinExist("latest.txt")
WinClose
Return

Но есть один огромный минус, который очень сильно мешает.

Дело в том, что мне нужно, чтобы код работал в режиме Hide или хотя-бы Min.
Но когда я выбираю режим запуска из двух этих режимов, то участок кода

ControlSend, Edit1, {ctrl down}{s}, latest.txt


перестаёт работать, всё остальное работает прекрасно.

Я пришел в тупик, т.к не знаю как через sendmessage сохранить файл.
В Notepad есть Класс Edit1 и Notepad.
Edit1 отвечает за раздел написания текста, а раздел Notepad за сохранение(я так думаю), но я не знаю как сохранить через SendMessage.
Прошу, помогите пожалуйста.

2

Re: AHK: ControlSend в Notepad с возможностью hide режимом

Есть способ сохранить без отправки ControlSend, если окно более менее стандартное.

WinMenuSelectItem, Титул_окна, , Файл, Сохранить	CTRL+S
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: ControlSend в Notepad с возможностью hide режимом

__Михаил__ пишет:

WinMenuSelectItem, Титул_окна, , Файл, Сохранить CTRL+S

в режиме min работает.
на первое время и так сойдёт, спасибо.

4 (изменено: Clannad5, 2020-09-19 05:06:37)

Re: AHK: ControlSend в Notepad с возможностью hide режимом

в общем..
документ отказывается сохраняться, ибо занят другим процессом.
Поэтому я пришел к выводу, что проще будет искать последнею найденную строку, а по ней уже сверять, прошло ли более 5 секунд или нет, после добавления лога.
Благо у логов есть слева время:


[03:41:32]
[03:41:42]
[03:41:50]
[03:41:56]
[03:41:56]
[03:41:58]
[03:42:03]
[03:42:05]