1 (изменено: Странникх, 2014-08-03 21:03:34)

Тема: AHK: Мгновенная переактивация окна с использованием clipboard

Задача:
1) Сделать неактивным окно Name.
2) Взять в буфер текст
3) Сделать активным окно Name
4) Произвести вставку с нажатиями Enter
Код, который сейчас:

SetWinDelay, -1
SetControlDelay -1
#MaxMem 4096
Process, priority, , Realtime
#NoEnv
#SingleInstance Force


F1:: ; Я нажимаю только когда окно NAME активно (без какой-либо проверки)
SendInput !{Escape}
clipboard = 
clipboard = >LITTLE BIT TEXT FOR EXAMPLE
WinActivate, NAME
Send {Enter}^v{Enter}
Return

Переактивация не происходит мгновенно. Я замечаю следующее за Name окно прежде чем Name снова будет активным. Иными словами - нужно сделать переактивацию окна Name действительно мгновенным, чтобы никакие другие окна не были видны даже на долю секунды.

Add:
С добавлением SetBatchLines, -1 вообще не переключает.

2

Re: AHK: Мгновенная переактивация окна с использованием clipboard

Бывает, что при активации окна, содержащего графику, требуется время на прорисовку.
Ещё есть #WinActivateForce. Сам не пробовал, это так, до кучи.

3 (изменено: Странникх, 2014-08-03 21:50:15)

Re: AHK: Мгновенная переактивация окна с использованием clipboard

С #WinActivateForce процесс медленнее идет. Окно, которое я делаю неактивным и активным содержит графику. Может как решение - создать невидимое окно, на которое будет переключение, чтобы окно NAME было за ним ?

4

Re: AHK: Мгновенная переактивация окна с использованием clipboard

Просто активируйте рабочий стол.

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

5

Re: AHK: Мгновенная переактивация окна с использованием clipboard

А, зачем это всё?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6 (изменено: Malcev, 2014-08-03 23:20:24)

Re: AHK: Мгновенная переактивация окна с использованием clipboard

Вместо этого:

SendInput !{Escape}

Попробуйте так:

WinActivate, Start ahk_class Button

А почему создали новую тему?
http://forum.script-coding.com/viewtopic.php?id=9571

7 (изменено: Странникх, 2014-08-04 00:17:23)

Re: AHK: Мгновенная переактивация окна с использованием clipboard

Ну это не совсем относится к проблеме с буфером. Это скорее отдельная ветвь проблемы с переактивацией окон.

Что касается проблемы с буфером обмена, то некоторые окна имеют свой локальный буфер обмена как я понял. То есть если вы заносите в буфер обмена что-либо с помощью, например, программы AHK во время активного окна, то та информация, что вы занесли, не будет передана в активное это окно (буфер не обновится иными словами). Однако буфер работает если взять в буфер что-то, когда окно не активно, а затем активировать нужное то окно и выполнить вставку (это если с помощью AHK). Но есть и еще один нюанс - если брать вручную в буфер что-либо (например, текст) во время активного этого окна, то буфер обновится этой информацией, что нельзя сказать о занесении данных в буфер AHK в такой же ситуации.

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

Кстати, нужные мне окна со своим локальным буфером обладают каким-то странным свойством - "нельзя свернуть", то есть буквально окно не деактивируется сверсткой, а просто прячется за другими окнами. Плюс все окна такого типа имеют отдельную задержку для каждой посылаемой клавиши, за счет чего невозможно отправить длинный текст моментально через тот же SendInput.

8

Re: AHK: Мгновенная переактивация окна с использованием clipboard

Активация рабочего стола значительно привносит изменения, но тогда Панель задач становится видна на долю секунды. Решение подходит если есть способ скрыть Панель задач

9 (изменено: Странникх, 2014-08-04 02:48:01)

Re: AHK: Мгновенная переактивация окна с использованием clipboard

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

+ открыть спойлер
SetWinDelay, -1
SetControlDelay -1
SetBatchLines, -1
;SetTitleMatchMode, Fast
#MaxMem 4096
#NoEnv
Process, priority, , Realtime


F1::
WinHide ahk_class Shell_TrayWnd
;ControlClick,, ahk_class Progman,, MIDDLE
WinActivate, ahk_class Progman
clipboard = > EXPLANE EXPLANE EXPLANE EXPLANE
WinActivate, ahk_class NAME
WinShow, ahk_class Shell_TrayWnd
;ControlClick,, ahk_class NAME
Send {Enter}^v{Enter}
Return

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

Add:
И все равно не работает как должно:

+ открыть спойлер
SetWinDelay, -1
SetControlDelay -1
;SetBatchLines, -1
;SetTitleMatchMode, Fast
#MaxMem 4096
#NoEnv
Process, priority, , Realtime

F1::
clipboard = >1111
WinHide, ahk_class Shell_TrayWnd
WinActivate, ahk_class Progman
WinActivate, ahk_class NAME
Send {Enter}^{vk0x56}{Enter}
WinShow, ahk_class Shell_TrayWnd
Return

F2::
clipboard = >2222
WinHide, ahk_class Shell_TrayWnd
WinActivate, ahk_class Progman
WinActivate, ahk_class NAME
Send {Enter}^{vk0x56}{Enter}
WinShow, ahk_class Shell_TrayWnd
Return

Вот так работает, но на долю секунды появляется Панель задач:

+ открыть спойлер
SetWinDelay, -1
SetControlDelay -1
;SetBatchLines, -1
;SetTitleMatchMode, Fast
#MaxMem 4096
#NoEnv
Process, priority, , Realtime

F1::
clipboard = >1111
WinActivate, ahk_class Progman
WinHide, ahk_class Shell_TrayWnd
WinActivate, ahk_class NAME
Send {Enter}^{vk0x56}{Enter}
WinShow, ahk_class Shell_TrayWnd
Return

F2::
clipboard = >2222
WinActivate, ahk_class Progman
WinHide, ahk_class Shell_TrayWnd
WinActivate, ahk_class NAME
Send {Enter}^{vk0x56}{Enter}
WinShow, ahk_class Shell_TrayWnd
Return

(WinHide переписан под)

Add:
Проблему решил с добавлением Button и прочего типажа "Hide"  в цикл.

10

Re: AHK: Мгновенная переактивация окна с использованием clipboard

Проблему решил с добавлением Button и прочего типажа "Hide"  в цикл.

Может всё таки с гуи проще деактивировать?

Gui +ToolWindow
1::Gui, Show

Я так и не пойму, если активировать другое окно, и послать Ctrl+C, то ведь сообщение о копировании будет послано в активное окно.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11 (изменено: Странникх, 2014-08-04 11:48:01)

Re: AHK: Мгновенная переактивация окна с использованием clipboard

Может всё таки с гуи проще деактивировать?

Под Button имелось в виду:

WinHide, ahk_class Button 

Видимо это считается как отдельный элемент панели задач, потому что при простом добавлении ahk_class Shell_TrayWnd , скрытие происходит не совсем мгновенно.

Я так и не пойму, если активировать другое окно, и послать Ctrl+C, то ведь сообщение о копировании будет послано в активное окно.

Не совсем верно. Буфер AHK как бы работает за нужным активным окном. А в окне может браться в буфер информация только из этого же окна, в данном случае кроме текста там нечего брать.