1 (изменено: shadowfiend08ss, 2023-07-14 23:51:59)

Тема: AHK: Копировать из буфера в определённую строку.

Задача такая: наводим курсор на буквы или цифры которое необходимо скопировать и сочетание клавиш alt+F1 выделяет и копирует это в буфер. Если в буфере есть буквы и цифры - конец скрипта, если только цифры, то они из буфера должны скопироваться в определённое окно специального калькулятора на рабочем столе, который уже будет открыт, если в этом окне уже есть какие-то цифры - то они должны быть удалены полностью, перед тем как вставить из буфера новые. ClassNN окна куда нужно выгрузить цифры - TkChild8.

2

Re: AHK: Копировать из буфера в определённую строку.

Попытался сам написать код, но у меня проблемы, я никак не могу сделать так чтобы цифры из буфера копировались в определённое окно. Я пытался пользоваться командами ControlFocus и Controlclick, но почему-то не получается активировать нужное окно.  У меня получилось это сделать только через MouseClick + координаты окна.

ALT & F1::
Click 2; Выделяю нужный текст под курсором
Send, ^c ; Ctrl + C; скопировал в буфер
WinActivate, ahk_exe forks4.6.exe; активировал окно калькулятора, чтобы сработали нужные координаты клика мыши
MouseClick, left, 34, 129, 1; мышка наводится на нужное окно ввода текста
SendInput, {sc20}; калькулятор так работает, что при нажатии клавиши d, удалятся весь текст из окна.
Send, %Clipboard%
Return

В принципе даже такой вариант мне подходит, но хотелось бы чтобы мышка не летала по экрану, это мешает. По этому вопрос - как обойтись без команды MouseClick. Так же пока не понял, какая команда может помочь остановить скрипт, если в буфер попали буквы. Прикреплю скрин из AhkSpy c параметрами нужного окна.

Post's attachments

Screenshot_6.png 34.84 kb, file has never been downloaded. 

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

3

Re: AHK: Копировать из буфера в определённую строку.

Непонятно, в чём проблема, и почему нельзя использовать ControlFocus вместо MouseClick. Вместо

Send, %Clipboard%

лучше

Send, ^v
shadowfiend08ss пишет:

какая команда может помочь остановить скрипт, если в буфер попали буквы

Return.

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

4

Re: AHK: Копировать из буфера в определённую строку.

teadrinker пишет:

почему нельзя использовать ControlFocus вместо MouseClick

Если mouseclick заменяю на строку,

ControlFocus, TkChild8, ahk_class TkTopLevel

то копирование из буфера идёт не в окно куда указан фокус, а в окно где был последний раз клик мыши или куда последний раз вводилась информация. Может я команду эту как-то не правильно пишу или данные окна не те ввёл?

5

Re: AHK: Копировать из буфера в определённую строку.

shadowfiend08ss пишет:

TkChild8

По крайней мере, на скриншоте TkChild7.

shadowfiend08ss пишет:

как обойтись без команды MouseClick

Есть ControlClick.

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

6

Re: AHK: Копировать из буфера в определённую строку.

teadrinker пишет:

По крайней мере, на скриншоте TkChild7.

Верно, перепутал. У этой программы 4 окна всего, куда можно вводить данные. ClassNN у каждой называется TkChild, меняется только цифра. Но какое бы окно я не указал командой ControlFocus, толку ноль, будет вносить данные в последнее активное окно. Причём я заметил, что мой скрипт работает так, что если удалить из него

WinActivate, ahk_exe forks4.6.exe

то копирование из буфера вообще не произойдёт, а вот если удалить

ControlFocus, TkChild8, ahk_class TkTopLevel

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

7

Re: AHK: Копировать из буфера в определённую строку.

teadrinker пишет:

есть ControlClick.

Та же самая проблема, пытался указать через ClassNN и через координаты, нет эфекта.

8

Re: AHK: Копировать из буфера в определённую строку.

Убедитесь, что координаты правильно прописаны. Они должны быть заданы относительно окна.

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

9

Re: AHK: Копировать из буфера в определённую строку.

teadrinker пишет:

Они должны быть заданы относительно окна.

Да, я прописывал именно относительно окна. Например, если мне нужно окно TkChild7 - я прописывал координаты, которые в Аhkspy  указаны как "Pos x8 y117"

10

Re: AHK: Копировать из буфера в определённую строку.

Так вам нужны не эти координаты, это координаты верхнего левого угла, а вам надо по центру.

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

11 (изменено: shadowfiend08ss, 2023-07-16 22:59:28)

Re: AHK: Копировать из буфера в определённую строку.

teadrinker пишет:

Так вам нужны не эти координаты

Да я все уже попробовал, после команды

WinActivate, ahk_exe forks4.6.exe

сразу активируется окно, где последний раз были какие-либо действия и уже туда буфер и выгружается. Controlfocus, controlclick как через ClassNN, так и через координаты - все эти команды почему-то игнорируются.
По этому мой скрипт пока выглядит так

ALT & F1::
Clipboard := ""
Click 2
Send, ^c{
If RegExMatch(Clipboard, "[A-Za-z]") {
return
}
If RegExMatch(Clipboard, "^[0-9.,\s]+$") {
WinActivate, ahk_exe forks4.6.exe
MouseClick, left, 30, 91, 1, 0
SendInput, {sc20}
Send, %Clipboard%
}
Return

Строчку

Send, %Clipboard%

пока оставил, т.к. по какой-то причине в моем калькуляторе иногда откючается возможность, отправлять данные через cntrl+v.