1

Тема: AHK: Вертикальное / горизонтальное отражение окна Windows

Доброго времени суток!

Прошу помощи с реализацией вертикального / горизонтального отражения окна Windows [не игры!] (к примеру возьмём обычный Блокнот).
В интернете минимум информации на эту тему, возможно данный план проще реализовать на другом языке (подскажите куда смотреть).
Единственное, что я нашел, некий блог: тык
Есть там такой абзац:

Компоновка и отражение
Компоновка окна (window layout) определяет способ размещения в окне или контексте устройства (DC - Device Context) текста и объектов GDI. Некоторые языки (вроде английского, французского, русского и немецкого) требуют компоновку left-to-right (LTR) - "слева направо". Другие языки (арабский, иврит) требуют компоновки right-to-left (RTL) - "справа налево". Компоновка окна применяется к тексту, но она также влияет и на другие элементы окна, включая растры, значки, расположение кнопок, многоуровневых деревьев, то, будет ли увеличиваться или уменьшаться горизонтальная координата при сдвиге вправо и т.п. К примеру, после того, как приложение установит компоновку RTL, начало координатной сетки в окне будет расположено в правом-верхнем углу окна (или контекста устройства) - в то время как обычно точка отсчёта располагается в левом-верхнем угле; а горизонтальная координата будет увеличиваться при движении влево, а не вправо, как это было с LTR. Однако не все объекты подчиняются компоновке окна. К примеру, компоновки диалоговых окон, окон-сообщений (message box) и контекстов устройств, не ассоциированных с окном (метафайлы, принтеры и другие) - обрабатываются отдельно. Некоторые такие особенности также упомянуты ниже.

Оконные функции позволяют вам указать или изменить компоновку окна. Заметьте, что изменение компоновки на RTL (этот процесс также называется зеркалированием или отражением окна - mirroring) не поддерживается окнами, которые установили стиль CS_OWNDC, а также контекстами устройств в режиме GM_ADVANCED.

По умолчанию окно и контексты устройств имеют компоновку left-to-right (LTR). Чтобы изменить компоновку окна на RTL - вызовите функцию CreateWindowEx с флагом WS_EX_LAYOUTRTL. Также, по умолчанию, child окна (т.е. окна, создаваемые со стилем WS_CHILD) будут иметь ту же компоновку, что и их родитель. Чтобы отключить наследование зеркалирования для child окон и задавать компоновку явно - добавьте стиль WS_EX_NOINHERITLAYOUT в вызове CreateWindowEx. Заметьте, что компоновка не наследуется owned окнами (создаваемыми без стиля WS_CHILD) или окнами, чей параметр hWnd в функции CreateWindowEx был установлен в 0. Чтобы отключить наследование зеркалирования в отдельном окне, обработайте сообщение WM_NCCREATE, где используйте функции GetWindowLong и SetWindowLong для замены флага WS_EX_LAYOUTRTL.

Вы также можете изменить умолчание для всего процесса вызовом функции SetProcessDefaultLayout. Все окна, создаваемые после вызова SetProcessDefaultLayout(LAYOUT_RTL), будут создаваться зеркалированными (без указания флага), но уже существующие окна не изменятся. Чтобы отключить зеркалирование по умолчанию - используйте SetProcessDefaultLayout(0).

А также ссылка на данную команду: тык
Я вообще хотя бы примерно туда залез? Или надо в каком то другом направлении искать?

2

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

А чего именно вы хотите добиться?

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

3

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

teadrinker
Собственно, это некое продолжение этой темы: тык
Только в том случае отразить нужное окно удалось настройками драйверов видеокамеры, в итоге камеру я сменил на новую, в которой данная возможность полностью отсутствует..
Суть - отразить окно предпросмотра камеры OBS.

4

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

Michael пишет:

Я вообще хотя бы примерно туда залез?

Не-а, совсем не туда.

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

5

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

Ищите другие драйверы.

6 (изменено: Michael, 2021-03-20 13:56:14)

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

teadrinker
Только сейчас понял что эта функция для стран, у которых интерфейс справа налево, а не слева направо..)

Malcev
Так официальные же драйверы на камеру с офф. сайта, + ко всему читал на разных форумах что далеко не на каждом драйвере есть такая функция. Винда новая, драйвера все по 100 раз сносил, качал с офф. сайта (других просто нету вообще) и всё тоже самое.

Если что, сама камера: тык
Да, есть к ней спец. софт (не драйвер!) в котором есть отражение, но при его использовании дико фризит вебку в ОБС (пробрасывается виртуальная камера), поэтому этот способ я сразу отбросил.

P.S.: Сорри за оффтоп

7 (изменено: Malcev, 2021-03-20 19:29:48)

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

Ну тогда спрашивайте на obs форуме.
Я писал когда-то код для захвата вебкамеры через Microsoft Media Foundation+превью его через Direct2d
http://forum.script-coding.com/viewtopic.php?id=15110
Там можно указать отзеркаливание с помощью IMFVideoProcessorControl::SetMirror метода:
https://docs.microsoft.com/en-us/window … -setmirror
Но это, наверное, примерно тоже самое, что спец. софт для вашей камеры.
Так просто вы окно не перевернете.

8

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

Malcev пишет:

через Microsoft Media Foundation

Такой, возможно глупый вопрос, но всё это в рамках одного скрипта без доп ПО?
Просто если так, мне было бы удобнее, чем я использую сейчас костыль...

9

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

Да, дополнительное по не нужно.

10

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

Но где уверенность в том, что это не будет тормозить obs, так же как и родное ПО.
Долбите obs оф.форум. почему идут тормоза и как отзеркалить конкретно вашу модель камеры.

11

Re: AHK: Вертикальное / горизонтальное отражение окна Windows

Malcev
Я нашел ПО которое не тормозит, не офф., от стороннего разработчика. (ManyCam)
Просто хотелось бы все в рамках одного АХК сделать, без запуского доп. ПО.
А про оф.форум ОБС, спасибо, годная идея, может они что подскажут