1 (изменено: Malcev, 2021-08-31 15:59:51)

Тема: AHK: Поверх всех окон в Windows 10

Недокументированная CreateWindowInBand.

CreateWindowInBand
This is a private api function found in user32.dll.
CreateWindowInBand function is the same as CreateWindowEx except it has 1 more parameter, dwBand, that is where you specify the band on which the window should stay (ZBID).

HWND WINAPI CreateWindowInBand(
DWORD dwExStyle,
LPCWSTR lpClassName,
LPCWSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam,
DWORD dwBand);

https://blog.adeltax.com/window-z-order-in-windows-10/

Скрипт надо запускать с Run with UI Access:

#persistent
hwnd := DllCall("CreateWindowInBand", "uint", 0, "str", "Autohotkey", "str", "title", "uint", 0, "int", 0, "int", 0, "int", 200, "int", 200, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "int", ZBID_UIACCESS := 2, "ptr")
if !a_lasterror
   WinShow ahk_id %hwnd%
else 
   msgbox % a_lasterror

teadrinker определил, что при запуске скрипта через UI ACCESS, опция +AlwaysOnTop  устанавливает на гуи ZBID_UIACCESS.

If !RegExMatch(DllCall("GetCommandLine", "Str"), " /restart(?!\S)")
{
   If (A_PtrSize = 8)
      RunWait "C:\Program Files\AutoHotkey\AutoHotkeyU64_UIA.exe" /restart "%A_ScriptFullPath%"
   Else If A_IsUnicode
      RunWait "C:\Program Files\AutoHotkey\AutoHotkeyU32_UIA.exe" /restart "%A_ScriptFullPath%"
   Else
      RunWait "C:\Program Files\AutoHotkey\AutoHotkeyA32_UIA.exe" /restart "%A_ScriptFullPath%"
}
Gui, +HWNDhGui
Gui, Add, Text,, Please enter your name:
Gui, Add, Edit, vName hwndhEdit
Gui, Show, x0 y0
DllCall("GetWindowBand", "ptr", hGui, "uint*", band)
msgbox % band
Gui, +AlwaysOnTop
DllCall("GetWindowBand", "ptr", hGui, "uint*", band)
msgbox % band

2

Re: AHK: Поверх всех окон в Windows 10

О, работает!

Malcev пишет:

Скрипт надо запускать с Run with UI Access:

Только с AutoHotkeyU64_UIA.exe.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

3

Re: AHK: Поверх всех окон в Windows 10

У меня работает со всеми версиями AutoHotkeyU**_UIA.exe.

4

Re: AHK: Поверх всех окон в Windows 10

А через Run "C:\Program Files\AutoHotkey\AutoHotkeyU64_UIA.exe" "%ScriptPath%" работает?
У меня почему то только через перетаскивание в проводнике.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

5

Re: AHK: Поверх всех окон в Windows 10

Да, работает.

6

Re: AHK: Поверх всех окон в Windows 10

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

офф:
Ты недавно писал, что у тебя ОС версии 1809, не в курсе с 1909 есть проблемы, или лучше 1809 переустановить?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

7

Re: AHK: Поверх всех окон в Windows 10

Я бы ставил последнюю.
У меня просто LTSC, а у них последняя 1809.

8

Re: AHK: Поверх всех окон в Windows 10

А у тебя получается скомпилировать с AutoHotkeyU**_UIA.exe? У меня в Ahk2Exe.exe нет таких вариантов.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

9

Re: AHK: Поверх всех окон в Windows 10

Такой опции в нем не присутствует.
Смотри код install.ahk, там расписано, что надо сделать.

Copies AutoHotkeyA32.exe, AutoHotkeyU32.exe and (if present) AutoHotkeyU64.exe to AutoHotkey*_UIA.exe.
    Sets the uiAccess attribute in each UIA file's embedded manifest.
    Creates a self-signed digital certificate named "AutoHotkey" and signs each UIA file.
    Registers the context menu option to run the appropriate exe file.

https://www.autohotkey.com/docs/Program … r_uiAccess

10

Re: AHK: Поверх всех окон в Windows 10

Выдаёт ошибку 5. Дело в версии АХК?

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

11

Re: AHK: Поверх всех окон в Windows 10

Скрипт надо запускать с Run with UI Access

12

Re: AHK: Поверх всех окон в Windows 10

Malcev

Немного непонятно. Я так запускаю скрипты:

;От администратора:
full_command_line := DllCall("GetCommandLine", "str")
If Not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)"))
{
  Try
  {
    If A_IsCompiled
      RunWait *RunAs "%A_ScriptFullPath%" /restart
    Else
      RunWait *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
  }
}
If Not A_IsAdmin
{
 TrayTip, , Обычные права доступа
 ;MsgBox,Administrator rights not found, the program might not work correctly.
}
Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

13

Re: AHK: Поверх всех окон в Windows 10

Могу лишь повторить, что запускать надо с UI Access, а не от администратора.
Читайте справку.

14

Re: AHK: Поверх всех окон в Windows 10

Обновил версию AHK +поставил _UIA, но в игре Warface перехват клавиш сильнее, проверить по клавише запустив своё Gui не вышло. Блокирует даже кнопки мыши.
Я предполагал что _UIA версия будет иметь приоритет и перехватывать клавиши чуть ли ни на низком уровне. Похоже античит отключает все перехваты клавиш намертво.

Line := DllCall("GetCommandLine", "str")
if !RegExMatch(Line, " /restart(?!\S)")
 RunWait "C:\Program Files\AutoHotkey\AutoHotkeyU64_UIA.exe" /restart "%A_ScriptFullPath%"
Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

15

Re: AHK: Поверх всех окон в Windows 10

А игру запускаете в оконном режиме?

16

Re: AHK: Поверх всех окон в Windows 10

Да, любые настройки какие не делаю - АХК полностью игнорит, будто не запущен. Даже игре расширение окна менял на меньшее, как только мышь вне игры (раб. стол) - перехват есть, только в игру тыкну - снова нет реакций.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

17

Re: AHK: Поверх всех окон в Windows 10

Перехватывайте на уровне драйвера.

18

Re: AHK: Поверх всех окон в Windows 10

Сейчас проверил, AHKHID тоже бессильна.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

19

Re: AHK: Поверх всех окон в Windows 10

Interception пробовали?

20

Re: AHK: Поверх всех окон в Windows 10

Interception не пробовал. Главное чтобы инжекта не было, думаю забанят сразу.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

21

Re: AHK: Поверх всех окон в Windows 10

Если вас интересует тема хакинга игр и много свободного времени, то рекомендую сайт
https://www.unknowncheats.me/forum/index.php
Там ликбеза и куча полезной информации предостаточно.

22

Re: AHK: Поверх всех окон в Windows 10

Не то что бы настолько интересен взлом / читерство в играх, по большему счёту было для меня удивительно обнаружить то, что раньше (год назад) ещё всё работало, а сейчас разработчики игру обновили и всё перестало, да ещё и так сильно перехватывает, что скрипт от админа или с правами _UIA (или как это правильнее) не работают полностью.
Ранее в некоторых играх были случаи, где только мышь можно было перехватывать через AHK, так простой кликер хотя бы можно было назначить, а теперь полный запрет.
Клавиши мультимедиа (управление браузером, клавиши звука и т.д.) в окне игры Warface теперь работают по стандарту, хотя все они перехватываются у меня постоянно загруженным скриптом (от админа).
Посмотрю что ещё можно будет сделать на выходных.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

23 (изменено: Malcev, 2021-08-30 08:00:57)

Re: AHK: Поверх всех окон в Windows 10

Добавил в первый пост пример, как установить ZBID_UIACCESS в обычное gui с помощью дочернего окна.

24

Re: AHK: Поверх всех окон в Windows 10

У меня так вышло:

if !RegExMatch(DllCall("GetCommandLine", "str"), " /restart(?!\S)")
{
   if A_Is64bitOS
      RunWait "C:\Program Files\AutoHotkey\AutoHotkeyU64_UIA.exe" /restart "%A_ScriptFullPath%"
   else
      RunWait "C:\Program Files\AutoHotkey\AutoHotkeyU32_UIA.exe" /restart "%A_ScriptFullPath%"
}

Gui, +AlwaysOnTop +HWNDhGui
Gui, Add, Text,, Please enter your name:
Gui, Add, Edit, vName hwndhEdit
Gui, Show

DllCall("SetWindowBand", "Ptr", hEdit, "Ptr", HWND_TOP := 0, "UInt", ZBID_UIACCESS := 2)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

25

Re: AHK: Поверх всех окон в Windows 10

А, нет, SetWindowBand ноль возвращает. Но, похоже, +AlwaysOnTop с UIACCESS достаточно?

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

26

Re: AHK: Поверх всех окон в Windows 10

Да, достаточно.
Интересный эффект.
Добавил в первый пост.