1 (изменено: Alexir, 2024-03-19 16:36:42)

Тема: AHK: Сохранение в AkelPad

Здравствуйте, мне нужно скопированные из другой программы куски текста сохранять в текстовом файле(в разных папках), открытым в редакторе (я пользуюсь AkelPad). Для этого я написал такой скрипт:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#WinActivateForce
#SingleInstance Ignore ; попытки запустить скрипт снова игнорируются
SetTitleMatchMode, 2 ; Задает режим поиска соответствия для параметров WinTitle
Sleep, 1000
!z:: ;Alt+z - сохранение выделенной строки в файле .txt
Winset, Alwaysontop, , A
Sleep, 100
clipboard = ; Очищаем клипборд
Send, ^c ; Ctrl+c в активное окно
ClipWait, 2 ; ждем, пока появится текст.
Control, EditPaste, %clipboard%, AkelEditW1, AkelPad
Sleep, 350
Control, EditPaste, `n, AkelEditW1, AkelPad
Sleep, 150
ControlSend , AkelEditW1 , {F2} , AkelPad
Return

Проблема в том, что иногда он не сохраняет файл (возможно ему пути не нравятся или еще что, но текст при этом вставляется всегда).
Можно в AkelPad файл сохранять не посылая нажатия клавиш (F2 или Ctrl+S)? Ну или на худой конец, если проблема в AkelPad, то как изменить скрипт для блокнота, с сохранением без отправки клавиш?

2

Re: AHK: Сохранение в AkelPad

Для сохранения текста в файл есть команда FileAppend.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Сохранение в AkelPad

teadrinker пишет:

Для сохранения текста в файл есть команда FileAppend.

Иногда текст необходимо подредактировать, поэтому используется текстовый редактор, а не напрямую сохраняется в файл. Неужели нет какого-нибудь подходящего решения?

4

Re: AHK: Сохранение в AkelPad

А разве нельзя одновременно сохранять в файл и отправлять в редактор?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Сохранение в AkelPad

teadrinker пишет:

А разве нельзя одновременно сохранять в файл и отправлять в редактор?

Мне необходимо отредактированный в редакторе текст сохранять в файл. Как это можно сделать с помощью команды FileAppend? (Я просто не знаю).

6

Re: AHK: Сохранение в AkelPad

В вашем изначальном скрипте вы вроде отправляете клавиатурное сочетание для сохранения файла сразу же, не дожидаясь дальнейшего редактирования. Это то же самое, что сразу сохранить текст в файл непосредственно. Если всё-таки нужно сначала текст отредактировать, то не проще ли потом нажать клавиши для сохранения вручную?
Или я просто не совсем понимаю, какого результата вы хотите добиться.
В любом случае, через редактор можно сохранить двумя способами: отправкой клавиатурного сочетания, и через меню. Второй вариант тоже можно автоматизировать, если знать ID пункта меню, который используется для сохранения текста в файл. ID можно посмотреть каким-либо приложением, которое умеет перехватывать оконные сообщения, например Spy++. Нужно смотреть, отправляется ли сообщение WM_COMMAND в момент нажатия соответствующего пункта меню, и какие у этого сообщения параметры. У меня нет AkelPad, сам не могу посмотреть, и, думаю, им мало кто пользуется.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Сохранение в AkelPad

Не ну если нажимать клавиши для сохранения вручную, то мне и скрипт AutoHotkey не нужен.
Вобщем я копирую строки в текстовый файл и иногда их редактирую, поэтому мне нужно чтобы файл был открыт в каком-нибудь текстовом редакторе. Но после каждой вставки текст должен сохранятся в файле, чтобы в случае отключения электричества или сбоя не потерять его.
А вы не могли на примере блокнота (notepad.exe), который есть в Windows, показать как реализовать второй вариант? (Я только начал осваивать AutoHotkey, сложно понять).

8

Re: AHK: Сохранение в AkelPad

Alexir пишет:

Можно в AkelPad файл сохранять не посылая нажатия клавиш (F2 или Ctrl+S)?

Можно такой командой:


WinMenuSelectItem, AkelPad,, Файл, Сохранить

9

Re: AHK: Сохранение в AkelPad

YMP пишет:

Можно такой командой:


WinMenuSelectItem, AkelPad,, Файл, Сохранить

Спасибо большое, все работает как надо.

10

Re: AHK: Сохранение в AkelPad

А, точно, совсем забыл про неё.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Сохранение в AkelPad

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#WinActivateForce
#SingleInstance Ignore ; попытки запустить скрипт снова игнорируются
SetTitleMatchMode, 2 ; Задает режим поиска соответствия для параметров WinTitle
Sleep, 1000
WinGetTitle, FileN, AkelPad
FoundPos := RegExMatch(FileN, "\[(.*)\]", SubPat)
DirPat := SubPat1
LineNum := 1
!z:: ;Alt+z - сохранение выделенной строки в файле .txt
Winset, Alwaysontop, , A
Sleep, 100
clipboard = ; Очищаем клипборд
Send, ^c ; Ctrl+c в активное окно
ClipWait, 2 ; ждем, пока появится текст.
Control, EditPaste, %clipboard%, AkelEditW1, AkelPad
Sleep, 350
Control, EditPaste, `n, AkelEditW1, AkelPad
Sleep, 150
WinMenuSelectItem, AkelPad,, Файл, Сохранить
FileReadLine, last_line, %DirPat%, LineNum
SplashTextOn, 1000, 0, %last_line%
Sleep, 3000
SplashTextOff
LineNum := LineNum + 1
Return

Вобщем, дополнил я скрипт, чтобы последняя строчка файла считывалась и отображалась во всплывающем сообщении.
Но опять та же проблема: иногда текст не считывается и сообщение пустое.
Как можно напрямую считывать текст из окна редактора? (AkelEditW1)

12

Re: AHK: Сохранение в AkelPad

Alexir пишет:

Как можно напрямую считывать текст из окна редактора? (AkelEditW1)

http://www.script-coding.com/AutoHotkey … tText.html.

13 (изменено: Alexir, 2024-03-21 08:06:44)

Re: AHK: Сохранение в AkelPad

Спасибо.

ControlGetText, OutputVar, AkelEditW1, AkelPad

А есть в AutoHotkey аналог Split(%OutputVar%, Chr(13))?
Или только циклом Loop перебирать все строки? (Мне нужна только последняя строка).

14

Re: AHK: Сохранение в AkelPad

Alexir, справка устанавливается вместе с AutoHotkey. Когда у меня возникает подобный вопрос, я открываю её и смотрю, какие есть команды. Они там рассортированы и есть раздел String.

15

Re: AHK: Сохранение в AkelPad

YMP пишет:

Alexir, справка устанавливается вместе с AutoHotkey.

Ну я не устанавливал AutoHotkey, просто архив распаковал без справки. В русскоязычной вики что-то не нашел, потому и спросил, но действительно есть команда сплит, так что вопрос снят.