1 (изменено: Clannad5, 2022-11-04 15:35:03)

Тема: AHK: Спрятать окно с помощью WinApi

Здравствуйте!
На зарубежном форуме мне посоветовали способ спрятать окно через WinApi Dll:


Gui, Show, w500 h500
F10::
{
WinGet, hwnd, ID, A
SetWindowCloaked(hwnd) 

SetWindowCloaked(hwnd, cloak=1) {
  ; DWMWA_CLOAK = 13
 DllCall("Dwmapi\DwmSetWindowAttribute", "Ptr", hwnd, "UInt", 13, "Int*", cloak, "UInt", 4) ; Прячем окно.
Sleep 1000
  DllCall("Dwmapi\DwmSetWindowAttribute", "Ptr", hwnd, "UInt", 13, "Int*", 0, "UInt", 4) ; Отображаем окно.
}
return
}

Зачем я добавил строчку "Gui, Show, w500 h500": Чтобы продемонстрировать проблему.

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

Можно ли это как-то исправить или это невозможно?

2

Re: AHK: Спрятать окно с помощью WinApi

Инжектесь в процесс или пытайтесь ставить cloak с недокумментированного virtual desktop api.

3

Re: AHK: Спрятать окно с помощью WinApi

Или еще проще - сделать владельцем чужого окна своё окно.

4 (изменено: Clannad5, 2022-11-04 17:42:00)

Re: AHK: Спрятать окно с помощью WinApi

Malcev
Для меня эти ответы, как капля в море.
Еще бы понимать, что вы пишите, у меня в этом опыта 0 практически.
К тому же не думаю что приложение разрешит мне запустить виртуальную среду, если это как-то отражается на самом окне игры, т.к действуют костыльные методы защиты от виртуалок и тд.

5

Re: AHK: Спрятать окно с помощью WinApi

Вас же в гугле не забанили?
Гуглите: setwindowlongptr, inject ahk, setcloak virtual desktop.

6

Re: AHK: Спрятать окно с помощью WinApi

Clannad5 пишет:

если это как-то отражается на самом окне игры

По играм есть отдельная ветка.

7

Re: AHK: Спрятать окно с помощью WinApi

Malcev
Мне помог способ сделать окно полностью прозрачным и отключив его в TaskBar.