1

Тема: AHK: дублирование окна по hwid.

Здравствуйте!
Хотелось бы узнать о правильном подходе к трансляции любого окна внутри Gui ahk.
То есть мне нужно, чтобы когда я запускаю скрипт, он получал окно блокнота и выводил мне его в Gui, без возможности с ним взаимодействовать.
Принцип как в OBS программе.
Можно ли такое реализовать в AHK без сильной нагрузки?В мыслях только максимально глупый вариант, это делать скриншот каждую секунду через Gdi, но это явно сильно будет нагружать систему.
Есть ли какой-нибудь метод захвата другого окна без сильной нагрузки?

2

Re: AHK: дублирование окна по hwid.

DwmRegisterThumbnail.

3 (изменено: Clannad5, 2022-11-02 15:26:24)

Re: AHK: дублирование окна по hwid.

Malcev
Спасибо!
Нашёл вот это:
https://www.autohotkey.com/boards/viewtopic.php?t=66585.

Только есть одна проблема.
Если я перевожу окно в Hide(полностью скрываю с панели задач), то Gui уже не отображает окно.
Как это можно решить?

4

Re: AHK: дублирование окна по hwid.

Не занимался подобным.
Но у taskbar есть api для управления табами.
Гуглите.

5

Re: AHK: дублирование окна по hwid.

Malcev
То есть, по сути, можно спрятать из ALt+Tab и Taskbar, но оставить активным и не прятать в Hide?

6

Re: AHK: дублирование окна по hwid.

Я бы поигрался с WS_EX_TOOLWINDOW стилем.

7

Re: AHK: дублирование окна по hwid.

Malcev
Знать бы еще как это применять...

8

Re: AHK: дублирование окна по hwid.

В справке все написано.

9

Re: AHK: дублирование окна по hwid.

Хотя если почитать справку, то надо еще WS_EX_APPWINDOW убирать.
https://learn.microsoft.com/en-us/windo … ar-buttons
Так что читайте msdn - там много, чего можно найти.

10 (изменено: __Михаил__, 2022-11-04 19:14:33)

Re: AHK: дублирование окна по hwid.

Clannad5

В Win10 есть возможность создавать Рабочие столы. Следовательно если у вас эта ОС то создаём новый Рабочий стол, открываем нужные окна, переключаемся обратно и отображаем их скриптом.

У меня так вышло (Необходимо создать второй Рабочий стол перед запуском и переключиться назад):

#Include LiveThumb.ahk

Send ^#{Right}
Sleep, 500

Run, mspaint.exe,,, nPid
WinWaitActive, ahk_pid %nPid%

WinGet, hPaint, ID, ahk_pid %nPid%
WinGetPos,,, nW, nH, ahk_pid %nPid%

Gui, +HwndhGui

Send ^#{Left}

hLT := new LiveThumb(hPaint, hGui)
hLT.Source      := [0, 0, nW, nH]
hLT.Destination := [0, 0, nW, nH]
hLT.Visible     := True
hLT.Update()

Gui, Show, w%nW% h%nH%
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

11

Re: AHK: дублирование окна по hwid.

__Михаил__
К сожалению это не работает с моим окном, т.к окно использует OpenGl Графику, окно просто появляется на каждом новом созданном рабочем столе (Win+Ctrl+D)