1

Тема: AHK: хук для отслеживания появления/закрытия окон в системе

А есть ли возможность установить аналогичный этому хук, который бы отслеживал появление/закрытие окон в системе?

Нужно для скрипта, реализовывающего оконный фильтр (фильтрация окон по их WinTitle).

2

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Всех окон или только определённых? WinWait, WinWaitClose пробовали?

3

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Гм, как-то не додумался сделать всего-то в пару строк сделать убийство плохих окон:

GroupAdd, nastyWindows, Skype™ - Обновить ahk_class TUpgradeForm ahk_exe skype.exe
GroupAdd, nastyWindows, Skype™ - Ваше мнение о качестве связи ahk_class TCallQualityForm ahk_exe skype.exe
Loop
{
    WinWait, ahk_group nastyWindows
    WinClose
}

Спасибо, видимо, вопрос закрыт.

4 (изменено: DD, 2014-06-22 17:38:37)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Вместо постоянного цикла наверно лучше использовать пример отсюда: http://forum.script-coding.com/viewtopic.php?pid=64279
Там я выпытал объяснение разницы у нашего уважаемого creature.ws))

5

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Там идёт речь, вроде, не о показе и скрытии окон, а о их создании и активации, что не одно и то же. Окно может быть создано, но не показано. А иногда окно может быть показано, но не активировано.

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

6 (изменено: DD, 2014-06-22 18:42:49)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

На самом деле тот пример отслеживает события создания или активации определенных окон. В этом ключе я его с тех пор и гоняю.


OnWindowCreated("ahk_class Notepad", "Notepad_Created") ; первый параметр — window title в стандартном формате ahk, второй параметр — имя процедуры, которая должна выполнятся при создании окна с заданными первым параметром характеристиками

OnWindowActivated("ahk_class Notepad", "Notepad_Activated") ; первый параметр — window title в стандартном формате ahk, второй параметр — имя процедуры, которая должна выполнятся при активации окна с заданными первым параметром характеристиками

;!!return ; конец секции автовыполнения. не обязателен, но приемлем.

Notepad_Created(hWnd) ; эта процедура будет выполнятся при каждом создании окна
{
  SplashImage,, M C11 ZH0 ZW0 ZX1 ZY1 B1 CTffffff CW8B0000 FM11 FS6 WM600 WS400,, Окно СОЗДАНО`nТеоретически его можно закрыть)))
  Sleep, 2000
  SplashImage, OFF
/*
  ; КОД ДЛЯ ЗАКРЫТИЯ ОКНА
  ActiveWinID := WinExist("A")
  WinClose, ahk_id %ActiveWinID%
*/
}

Notepad_Activated(hWnd) ; активация
{
  SplashImage,, M C11 ZH0 ZW0 ZX1 ZY1 B1 CTffffff CW8B0000 FM11 FS6 WM600 WS400,, Окно АКТИВИРОВАНО`nТеоретически его можно закрыть)))
  Sleep, 2000
  SplashImage, OFF
/*
  ; КОД ДЛЯ ЗАКРЫТИЯ ОКНА
  ActiveWinID := WinExist("A")
  WinClose, ahk_id %ActiveWinID%
*/
}

OnWindowCreated(winTitle, procName = "", maxThreads = 1)
{
    global ShellHookActionList
 
    IsObject(ShellHookActionList) || ShellHookActionList := Object()
    IsObject(ShellHookActionList[1]) || ShellHookActionList[1] := Object()
 
    if procName
        ShellHookActionList[1][winTitle] := procName
    else
        return ShellHookActionList[1][winTitle]
 
    if !OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK")) {
        DllCall("RegisterShellHookWindow", "UInt", A_ScriptHwnd)
        OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellProc", maxThreads)
    }
}
 
OnWindowActivated(winTitle, procName = "", maxThreads = 1)
{
    global ShellHookActionList
 
    IsObject(ShellHookActionList) || ShellHookActionList := Object()
    IsObject(ShellHookActionList[4]) || ShellHookActionList[4] := Object()
 
    if procName
        ShellHookActionList[4][winTitle] := procName
    else
        return ShellHookActionList[4][winTitle]
 
    if !OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK")) {
        DllCall("RegisterShellHookWindow", "UInt", A_ScriptHwnd)
        OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellProc", maxThreads)
    }
}
 
ShellProc(wParam, lParam)
{
    global ShellHookActionList
 
    if ShellHookActionList.HasKey(wParam) {
        for winTitle, procName in ShellHookActionList[wParam] {
            WinGet, hWndList, List, %winTitle%
            loop %hWndList%
                continue
            until hWndList%A_Index% = lParam && found := true
 
            if (found)
                %procName%(lParam), found := false
        }
    }
    return
}


Только неудобно, что приходится для каждого окна прописывать свою функцию.

7

Re: AHK: хук для отслеживания появления/закрытия окон в системе

DD пишет:

На самом деле тот пример отслеживает события создания или активации определенных окон.

Ну, так а я о чём?
А вопрос-то был:

хук, который бы отслеживал появление/закрытие окон в системе?

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

8 (изменено: DD, 2014-06-22 19:00:53)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

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

9

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Для каких-то случаев, конечно, подойдёт. Но если появившееся окно не будет только что создано, и не получит активности — не сработает.

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

10 (изменено: DD, 2014-06-22 19:19:17)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Я запустил скрипт, назначил окно браузера поверх всех окон и запустил Блокнот. Скрипт на создание среагировал. Т.е. видимо можно ему послать сообщение о закрытии, остановить процесс по PID или еще что-то...

11

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Да, сейчас проверил, действительно на появление окон реагирует как на создание. Я думал, создание — это только когда окно создаётся впервые. Значит, и правда подойдёт для всех случаев.

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

12 (изменено: serzh82saratov, 2014-06-24 02:39:04)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Помоему пример слишком избыточен. Цикл с ожиданием, ничем не плох в контексте отдельного скрипта, другое дело если ТС потом понадобится переместить это в другой скрипт, тогда этого должно быть достаточно:


GroupAdd, nastyWindows, Skype™ - Обновить ahk_class TUpgradeForm ahk_exe skype.exe
GroupAdd, nastyWindows, Skype™ - Ваше мнение о качестве связи ahk_class TCallQualityForm ahk_exe skype.exe
GroupAdd, nastyWindows, ahk_class Notepad ahk_exe notepad.exe
WinClose, ahk_group nastyWindows

OnExit, Exit
DllCall("RegisterShellHookWindow", "UInt", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellProc")
Return

Exit: 
    DllCall("DeregisterShellHookWindow", "UInt", A_ScriptHwnd)
    ExitApp
    
ShellProc(nCode)  { 
    if (nCode = 1) {  ; HSHELL_WINDOWCREATED
        WinClose, ahk_group nastyWindows
    }
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: хук для отслеживания появления/закрытия окон в системе

serzh82saratov,
вообще, я вот что-то типа такого и ожидал. Спасибо.
QFT:

+ открыть спойлер
GroupAdd, nastyWindows, Skype™ - Обновить ahk_class TUpgradeForm ahk_exe skype.exe
GroupAdd, nastyWindows, Skype™ - Ваше мнение о качестве связи ahk_class TCallQualityForm ahk_exe skype.exe
GroupAdd, nastyWindows, ahk_class Notepad ahk_exe notepad.exe
WinClose, ahk_group nastyWindows

OnExit, Exit
DllCall("RegisterShellHookWindow", "UInt", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellProc")
Return

Exit: 
    DllCall("DeregisterShellHookWindow", "UInt", A_ScriptHwnd)
    ExitApp
    
ShellProc(nCode)  { 
    if (nCode = 1) {  ; HSHELL_WINDOWCREATED
        WinClose, ahk_group nastyWindows
    }
}

14

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Да, для дела закрытия — самое то.
Тоже благодарствую.

15 (изменено: Drugoy, 2014-06-26 17:44:21)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

serzh82saratov пишет:

Помоему пример слишком избыточен. Цикл с ожиданием, ничем не плох в контексте отдельного скрипта, другое дело если ТС потом понадобится переместить это в другой скрипт, тогда этого должно быть достаточно:

оказалось работает немного медленно: у меня есть 2 плохих окошка, которые появляются так: когда одно закрывают - появляется другое.
Второе окно с вашим кодом стало раз через раз закрываться.
Добавление "SetBatchLines, -1" не помогло.

16

Re: AHK: хук для отслеживания появления/закрытия окон в системе

По идее Critical должен буферизировать.


ShellProc(nCode)  { 
    Critical
    if (nCode = 1) {  ; HSHELL_WINDOWCREATED
        WinClose, ahk_group nastyWindows
    }
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Интересно, почему на диалоговое окно (Открытие/Сохранение) скрипт Сержа не реагирует, хотя в Опере у меня его запускает отдельный процесс (QSaver.exe)? —

GroupAdd, nastyWindows, ahk_class #32770
WinClose, ahk_group nastyWindows

OnExit, Exit
DllCall("RegisterShellHookWindow", "UInt", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellProc")
Return

Exit: 
    DllCall("DeregisterShellHookWindow", "UInt", A_ScriptHwnd)
    ExitApp
    
ShellProc(nCode)  { 
    if (nCode = 1) {  ; HSHELL_WINDOWCREATED

    Soundplay *48  ;Exclamation

    }
}

18

Re: AHK: хук для отслеживания появления/закрытия окон в системе

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

19

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Может эта тема поможет: SetWinEventHook.

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

20

Re: AHK: хук для отслеживания появления/закрытия окон в системе

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

21 (изменено: serzh82saratov, 2015-02-28 00:39:42)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Да, мне тоже СМС (на телефон) не приходило.

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

22

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Учитывая содержание темы, я имел ввиду не SMS сообщения, а MMS))

23

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Учитывая содержание любой темы, следует приводить код, а не только свои выводы.

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

24

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Имелся в виду к примеру этот код, настроенный под дочерние окна:

EVENT_OBJECT_DESTROY := 0x8001

SetWinEventHook(EVENT_OBJECT_DESTROY, EVENT_OBJECT_DESTROY, 0, RegisterCallback("HookProc", "F"), 0, 0, 0)

TargetWinId := WinExist("ahk_class #32770")  

   
HookProc(hWinEventHook, event, hwnd, idObject, idChild, dwEventThread, dwmsEventTime)
{  
    Global TargetWinId
    If (hwnd = TargetWinId)
        msgbox !!!!!!!!!!!!!!!!!!!!!!!!!!!!
}

SetWinEventHook(eventMin, eventMax, hmodWinEventProc, lpfnWinEventProc, idProcess, idThread, dwFlags)
{
   return DllCall("SetWinEventHook" , UInt, eventMin
                                    , UInt, eventMax
                                    , Ptr, hmodWinEventProc
                                    , Ptr, lpfnWinEventProc
                                    , UInt, idProcess
                                    , UInt, idThread
                                    , UInt, dwFlags)
}
return

и тот что приводил несколько повыше.

25

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Ну и как этот код "употребляется"?

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

26

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Ну мне кажется он должен "арканить" окно по указанному классу, чего не происходит. Наверняка диалоговые окна не считаются за окна, а как-то иначе проходят.

27

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Ну мне кажется он должен "арканить" окно по указанному классу, чего не происходит.

Нет, этот код не должен.

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

28

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Т. е., это не полный код? чего-то не хватает?

29

Re: AHK: хук для отслеживания появления/закрытия окон в системе

чего-то не хватает?

Смысла.

Класс надо проверять в процедуре, и зачем EVENT_OBJECT_DESTROY если требуется появление окна.

 
#Persistent 
EVENT := 0x0006 ; EVENT_SYSTEM_MENUPOPUPSTART
Global tclass := "#32768"

SetWinEventHook(EVENT, EVENT, 0, RegisterCallback("HookProc", "F"), 0, 0, 0) 

   
HookProc(hWinEventHook, event, hwnd, idObject, idChild, dwEventThread, dwmsEventTime)
{   
    WinGetClass, class, ahk_id %hwnd% 
    If (class = tclass)
        msgbox !!!!!!!!!!!!!!!!!!!!!!!!!!!!
}

SetWinEventHook(eventMin, eventMax, hmodWinEventProc, lpfnWinEventProc, idProcess, idThread, dwFlags)
{
   return DllCall("SetWinEventHook" , UInt, eventMin
                                    , UInt, eventMax
                                    , Ptr, hmodWinEventProc
                                    , Ptr, lpfnWinEventProc
                                    , UInt, idProcess
                                    , UInt, idThread
                                    , UInt, dwFlags)
}
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

30

Re: AHK: хук для отслеживания появления/закрытия окон в системе

А почему не EVENT_OBJECT_CREATE?

31

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Ну оно вроде не реагирует на эти окна. Хотя возможно вместо EVENT_SYSTEM_MENUPOPUPSTART поможет EVENT_OBJECT_SHOW, вообщем тут надо самому экспериментировать.

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

32 (изменено: serzh82saratov, 2015-03-01 11:31:33)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

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

А скорее как раз EVENT_SYSTEM_DIALOGSTART = 0x0010. Так наверное и класс окна не нужен.

#Persistent 
EVENT := 0x0010 ; EVENT_SYSTEM_DIALOGSTART 

SetWinEventHook(EVENT, EVENT, 0, RegisterCallback("HookProc", "F"), 0, 0, 0) 
 
HookProc(hWinEventHook, event, hwnd, idObject, idChild, dwEventThread, dwmsEventTime)
{    
    ToolTip !!!!!!!!!!!!!!!!!!!!!!!!!!!!
}

SetWinEventHook(eventMin, eventMax, hmodWinEventProc, lpfnWinEventProc, idProcess, idThread, dwFlags)
{
   return DllCall("SetWinEventHook" , UInt, eventMin
                                    , UInt, eventMax
                                    , Ptr, hmodWinEventProc
                                    , Ptr, lpfnWinEventProc
                                    , UInt, idProcess
                                    , UInt, idThread
                                    , UInt, dwFlags)
}
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

33 (изменено: DD, 2015-03-01 15:23:55)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Серж, хотя ты и не видишь смысла, но всё-таки диалоговые окна из меню «Файл» не ловятся, а только отдельные. Возможен ли отлов диалоговых окон из меню «Файл»?
А за эти наработки конечно спасибо.

34

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Серж, хотя ты и не видишь смысла

В чём?

Возможен ли отлов диалоговых окон из меню «Файл»?

У меня "ловятся" кодом из 32 поста.

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

35 (изменено: DD, 2015-03-02 09:50:22)

Re: AHK: хук для отслеживания появления/закрытия окон в системе

serzh82saratov пишет:

В чём?

Это у тебя надо спросить.

На XP SP2 код из 32 поста отлавливает "не дочерние" диалоговые окна, выводимые системой (об ошибках и т.д.), но те, что запускаются из программ — игнорирует. Потому и спрашивал.

36

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Это у тебя надо спросить.

О чём меня то спрашивать, если я уже ответил? Ты спросил в 28 посте чего не хватает в твоём коде, я тебе ответил что - смысла.

Потому и спрашивал.

Спрашивал не уточняя про XP SP2, на Win7 работает.

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

37

Re: AHK: хук для отслеживания появления/закрытия окон в системе

serzh82saratov пишет:

Ты спросил в 28 посте чего не хватает в твоём коде, я тебе ответил что - смысла.

А я на это сказал, что хотя ты смысла и не видишь, но код у меня не работает, а потому и смысл глубинный в вопросе был))) Теперь мы оба знаем, что где-то он может не работать и что в полную не работает на XP, в отличие от Win7, что весьма и весьма прискорбно.

38

Re: AHK: хук для отслеживания появления/закрытия окон в системе

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

gui show, w333 h333
OnMessage(0x112, "WM_SYSCOMMAND")

WM_SYSCOMMAND(wp, lp) {
	static SC_CLOSE := 0xF060  
	if (wp = SC_CLOSE) {
		MsgBox, 4, % " ", Do you want to close the window?
		IfMsgBox, No
			Return 1 
		Gui, %A_Gui%: Destroy
	}
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

39

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Вот тут пришли к выводу, что не во всех приложениях срабатывает:
http://forum.script-coding.com/viewtopic.php?id=18014

40

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Ты мне льстишь. )
Как компилировать не подскажешь? Что за TDM-GCC-64.
И почему AUTOHOTKEY.dll  не катит, а нужна именно эта.

Malcev пишет:

Хотя HCBT_SYSCOMMAND у меня пресекается, возможно надо через uia запускать.

#include <Windows.h>

extern "C" __declspec(dllexport) LRESULT CALLBACK CBTProc(
	_In_ int    nCode,
	_In_ WPARAM wParam,
	_In_ LPARAM lParam
)
{
	if (nCode < 0) return CallNextHookEx(nullptr, nCode, wParam, lParam);

	switch(nCode)
	{
		case HCBT_DESTROYWND:
		case HCBT_SYSCOMMAND:
			return 1; // Prevent
	}
	return 0;
}

Компилирую через:

C:\TDM-GCC-64\bin\gcc -c source.cpp
C:\TDM-GCC-64\bin\gcc -shared -o mydll.dll source.o
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

41

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Тут скачать можно:
https://jmeubank.github.io/tdm-gcc/
Autohotkey.dll не подходит, так как для вызова SetWindowsHookEx нужна dll с хуком.

42

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Положил в папку C:\TDM-GCC-64\bin\gcc файл source.cpp с С++.
Как обычно не прокатило. (

C:\windows\system32>C:\TDM-GCC-64\bin\gcc -c source.cpp
gcc: ю°шсър: source.cpp: No such file or directory
gcc: ЇрЄры№эр  ю°шсър: эх чрфрэ√ тїюфэ√х Їрщы√
компиляция прервана.

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

43

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Cmd надо запускать из папки, где лежит gcc.

44

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Что то получилось!
Блокнот как вкопаный. )

if !hwnd := WinExist("ahk_exe notepad.exe")
	abort("no open notepads found")

if !hCBTDll := DllCall("LoadLibrary", "Str", "mydll.dll", "Ptr")
	abort("LoadLibrary failed with " A_LastError)

if !hCBTProc := DllCall("GetProcAddress", "Ptr", hCBTDll, "AStr", "CBTProc", "Ptr")
	abort("GetProcAddress failed with " A_LastError)

threadId := DllCall("GetWindowThreadProcessId", "Ptr", hwnd, "Ptr", 0, "UInt")

if !hHook := DllCall("SetWindowsHookEx", "Int", WH_CBT := 5, "Ptr", hCBTProc, "Ptr", hCBTDll, "UInt", threadId, "Ptr")
	abort("SetWindowsHookEx failed with " A_LastError)

MsgBox ur notepad is now unminimizable

Esc::
	DllCall("UnhookWindowsHookEx", "Ptr", hHook)
	MsgBox ur notepad is once again minimizable
	ExitApp
return

abort(msg) {
	MsgBox % msg "`n`n`nExiting"
	ExitApp
}

Я так понял битность длл, анк и процесса окна должны совпадать?
И как сделать длл под 32 бита?

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

45

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Думаю, что запускать из: C:\TDM-GCC-32\bin.

46

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Такой нет, надо с установкой разбираться.

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

47

Re: AHK: хук для отслеживания появления/закрытия окон в системе

А есть варианты этот хук (dll) связать со скриптом?
Передать параметры какие сообщения надо отслеживать, получать уведомления в анк какое сообщение было и какое окно.

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

48

Re: AHK: хук для отслеживания появления/закрытия окон в системе

serzh82saratov пишет:

Передать параметры какие сообщения надо отслеживать

Сомневаюсь.

serzh82saratov пишет:

получать уведомления в анк какое сообщение было и какое окно.

Можно попробовать через postmessage.

49

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Malcev пишет:

Можно попробовать через postmessage.

Ну такое пробовать только бывалым, вроде тебя.
И как понял post не подразумевает синхронность.

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

50

Re: AHK: хук для отслеживания появления/закрытия окон в системе

Поспрашивай у чат гпт как отправлять оконные сообщения из c++.
На счет синхронности не совсем понял, что ты имеешь в виду?

51

Re: AHK: хук для отслеживания появления/закрытия окон в системе

PostMessage не ждёт ответа, и код выполняется дальше, SendMessage ждёт, то есть работает синхронно.
Ну это не суть наверное, если получится PostMessage, значит SendMessage тоже.

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