1 (изменено: Veland, 2020-06-22 20:28:13)

Тема: AHK: Построчное вставление

Есть txt файл с подобным содержанием:

command user
command user
command user

Если мы берем и копируем все из данного файла и вставляем в AHK Edit Box то получаем:
https://i.imgur.com/gXeinYs.png

При этом, если копировать это все из сообщения Вконтакте, либо банальной Google-таблицы, то все работает нормально.
Edit реализован через:

Gui, Add, Edit, cBlack x23 y92 vMyEditVariable1 w576 h281, Вставь свои команды!

2

Re: AHK: Построчное вставление

Зависит от типа переноса строк в файле, попробуйте сюда файл приложить.

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

3 (изменено: Veland, 2020-06-22 22:59:45)

Re: AHK: Построчное вставление

Прикрепляю
P.S. И тут до меня дошло что перенос-то у меня UNIX (LF).
Тогда вопрос состоит в том можно ли заставить AHK кушать подобный формат?

Post's attachments

2020-6-22 (2).txt 209 b, 5 downloads since 2020-06-22 

You don't have the permssions to download the attachments of this post.

4

Re: AHK: Построчное вставление

Стандартный элемент Edit не отображает переносы LF.
Однако никто не запрещает по событию вставки производить в тексте RegExReplace одиночных LF на CR LF (`r`n в местном синтаксисе).

Win7x64, AutoHotkey 1.1.30.00

5

Re: AHK: Построчное вставление

stealzy пишет:

по событию вставки

Проблема в том, что нету такого события.

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

6

Re: AHK: Построчное вставление

teadrinker
Решил проблему на серверной части при формировании файла добавив /r/n. Спасибо за помощь!

7 (изменено: serzh82saratov, 2020-06-23 15:29:14)

Re: AHK: Построчное вставление

А почему никто не спросил какая ОС?
В Windows 10, с версии 1809 есть же стиль для этого.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

8

Re: AHK: Построчное вставление

Наверное, об этом кроме тебя никто не знал. Судя по скриншоту, 10.

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

9

Re: AHK: Построчное вставление

teadrinker пишет:

об этом кроме тебя никто не знал.

Это легко заметить по встроенному блокноту, и ещё колесиком можно шрифт менять.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

10

Re: AHK: Построчное вставление

teadrinker пишет:

нету такого события.

события, ср. То, что случилось, происшествие, случай.

Win7x64, AutoHotkey 1.1.30.00

11

Re: AHK: Построчное вставление

serzh82saratov пишет:

Это легко заметить по встроенному блокноту

Да, можно было бы, конечно, догадаться, раз блокнот нормально отображает такие переносы.

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

12

Re: AHK: Построчное вставление

teadrinker
Кстати что за сообщение WM_PASTE, не нашёл примеров с ним.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

13

Re: AHK: Построчное вставление

Пробовал, у меня на него нет реакции.

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

14

Re: AHK: Построчное вставление

Я тоже пробовал. Зачем оно тогда создано... Вот в чём вопрос.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

15

Re: AHK: Построчное вставление

Вот здесь в примере показано, что оно посылается при выборе соответствующего пункта меню.

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

16

Re: AHK: Построчное вставление

Не могу проверить, ты имеешь ввиду что надо его ловить в WM_COMMAND? Ты пробовал?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

17

Re: AHK: Построчное вставление

Нет, в WM_COMMAND ловятся только уведомления EN_...

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

18

Re: AHK: Построчное вставление

Тогда как использовать пример?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

19

Re: AHK: Построчное вставление

Это пример создания Edit-контрола «с нуля», можно его на AHK повторить. В том числе показано, как и для чего используется WM_PASTE.

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

20

Re: AHK: Построчное вставление

А если повесить "gLabel" на контрол?
При изменении перейдет на метку.

21

Re: AHK: Построчное вставление

teadrinker пишет:

можно его на AHK повторить

Мало что понимаю, можешь показать пример.
Phoenixxx_Czar
Да, но ведь не ясно что это из за вставки.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

22 (изменено: teadrinker, 2020-06-24 13:13:10)

Re: AHK: Построчное вставление

А что ты от этого примера хочешь получить? Там нет ничего другого, что есть в обычном Edit. Перехвата WM_PASTE тоже нет. Пример может быть интересен только в качестве тренировки перевода с c++ на AHK.
Phoenixxx_Czar, не совсем понятно, что вы предлагаете, напишите полный код.

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

23

Re: AHK: Построчное вставление

Phoenixxx_Czar наверное хотел отлавливать события, установив метку перехода типа gMySubroutine. Сначала будет вставлен "неправильный" текст, потом скрипт заметит это событие, обработает текст и заменит на "правильный". Так можно сделать, только будут мелькания, да и незачем -  автор уже устранил корень проблемы.

24

Re: AHK: Построчное вставление

Я думал, он как-то хочет перехватить вставляемый текст. Менять текст уже после вставки — вариант не очень, будет сбиваться положение текста и каретки.

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

25

Re: AHK: Построчное вставление

teadrinker пишет:

Перехвата WM_PASTE тоже нет

Да, но там ведь есть перехват некого IDM_EDPASTE, по которому отправляется WM_PASTE.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

26

Re: AHK: Построчное вставление

serzh82saratov пишет:

там ведь есть перехват некого IDM_EDPASTE, по которому отправляется WM_PASTE.

Это просто перехват события нажатия пункта меню "Вставить" с id, значение которого находится в константе IDM_EDPASTE (насколько я понимаю, эта константа произвольная, определяется в приложении).

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

27

Re: AHK: Построчное вставление

teadrinker пишет:

Да, можно было бы, конечно, догадаться, раз блокнот нормально отображает такие переносы.

Не отображает. Или это как-то настраивается?

28

Re: AHK: Построчное вставление

ypppu, да, вы правильно все поняли.

teadrinker пишет:

Менять текст уже после вставки — вариант не очень, будет сбиваться положение текста и каретки.

Вы правы, я тоже думал об этом, но тоже как вариант же.

Возможно еще можно сделать при срабатывании "OnClipboardChange", тоже костыльно, но почему бы и нет?

29

Re: AHK: Построчное вставление

wisgest, у меня на Windows 10 отображает без всяких настроек, как и на скриншоте.
Phoenixxx_Czar, сомневаюсь, что это хорошая идея. А если нужно именно изначальный текст?

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

30

Re: AHK: Построчное вставление

Может сделать свое ctrl+v, но перед вставкой текста смотреть в какое окно вставляется и/или контрол.

31

Re: AHK: Построчное вставление

Так можно, но тогда много чего отслеживать придётся. Тест вставляется не только по Ctrl V, есть ещё Shift  Ins, может и ещё что-то. Кроме того, текст может быть вставлен при вызове меню «Вставить».

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

32

Re: AHK: Построчное вставление

Можно использовать Rich Edit + EN_CLIPFORMAT.

33

Re: AHK: Построчное вставление

Не уверен:

EN_CLIPFORMAT notification code пишет:

Notifies a rich edit control's parent window that a paste occurred with a particular clipboard format.

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

34

Re: AHK: Построчное вставление

Не понял почему ты так считаешь?

35

Re: AHK: Построчное вставление

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

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

36

Re: AHK: Построчное вставление

Посмотрел через Spy++ у меня так работает:

OnMessage(0x402, "test")
test(wParam, lParam)
{
   Critical
   if (lParam = 11025)
      clipboard := "ok"
}

Правда не срабатывает с ctrl+shift+v, shift+insert, ctrl+shift+insert, но их можно переназначить на ctrl+v.

37

Re: AHK: Построчное вставление

Да, с RichEdit так перехватывает. Непонятно, что за константы.

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

38

Re: AHK: Построчное вставление

wisgest
Начиная с версии Windows 1809.
AhkSpy последней версии должен показывать расширенные стили Edit.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui