Windows-Apps: detect a new created window

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
GEV
Posts: 1005
Joined: 25 Feb 2014, 00:50

Windows-Apps: detect a new created window

Post by GEV » 12 Nov 2021, 09:00

Is there a way to detect a new created window of a Windows-App in this (or another) Shell Hook?
This seems not to work:

Code: Select all

#NoEnv
#SingleInstance Force

; https://autohotkey.com/board/topic/80644-how-to-hook-on-to-shell-to-receive-its-messages/

Gui +LastFound
hWnd := WinExist()
DllCall("RegisterShellHookWindow", UInt,WinExist())
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
return

ShellMessage( wParam,lParam )
{
	WinGet, pname, ProcessName, ahk_id %lParam%
	WinGetTitle, title_W, ahk_id %lParam%
	WinGetClass, class_W, ahk_id %lParam%
	If ((title_W != "") && (class_W != ""))
	{
		If ( wParam = 1 ) ;  1 means HSHELL_WINDOWCREATED
			ToolTip, WINDOW CREATED:`n"%title_W%" ahk_class "%class_W%"`n%pname%
	}
}
just me
Posts: 9574
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Windows-Apps: detect a new created window

Post by just me » 12 Nov 2021, 09:10

At least, you should use DetectHiddenWindows, On.
GEV
Posts: 1005
Joined: 25 Feb 2014, 00:50

Re: Windows-Apps: detect a new created window

Post by GEV » 12 Nov 2021, 09:24

just me wrote:
12 Nov 2021, 09:10
At least, you should use DetectHiddenWindows, On.
DetectHiddenWindows detects another ahk_class and I get the same result by closing the active window.
I want to avoid DetectHiddenWindows (if possible).
doubledave22
Posts: 343
Joined: 08 Jun 2019, 17:36

Re: Windows-Apps: detect a new created window

Post by doubledave22 » 12 Nov 2021, 09:49

You can try wineventhook. If you monitor EVENT_SYSTEM_FOREGROUND or 0x0003 this often picks up certain windows shellhook misses. I use this, there should be some examples here: viewtopic.php?t=830
GEV
Posts: 1005
Joined: 25 Feb 2014, 00:50

Re: Windows-Apps: detect a new created window

Post by GEV » 12 Nov 2021, 10:35

doubledave22 wrote:
12 Nov 2021, 09:49
You can try wineventhook. If you monitor EVENT_SYSTEM_FOREGROUND or 0x0003 this often picks up certain windows shellhook misses. I use this, there should be some examples here: viewtopic.php?t=830
I can't get it it to work.
And @cyruz says
cyruz wrote:
07 Dec 2013, 11:32
If you need to catch windows creation is better to use RegisterShellHookWindow and react to the HSHELL_WINDOWCREATED event. You could also use the CBT Hook i posted in this forum, but this will complicate the situation a lot...
doubledave22
Posts: 343
Joined: 08 Jun 2019, 17:36

Re: Windows-Apps: detect a new created window

Post by doubledave22 » 12 Nov 2021, 10:45

Code: Select all

#Persistent

E_Win_Hook1 := EWinHook_SetWinEventHook("EVENT_SYSTEM_FOREGROUND", "EVENT_SYSTEM_FOREGROUND", 0, "WinProcCallback", 0, 0, "WINEVENT_OUTOFCONTEXT")
return

WinProcCallback(hWinEventHook, event, hwnd, idObject, idChild, dwEventThread, dwmsEventTime) 
{ 
	if (Event = "3")
	{
		tooltip, % "hWinEventHook: " hWinEventHook
		. "`n    hwnd:"           hwnd
		. "`n    idObject: "      idObject
		. "`n   idChild: "       idChild
		. "`n    dwEventThread:" dwEventThread
		. "`n    dwmsEventTime:" dwmsEventTime
	}
}
(not included in script above) dont forget to unhook onexit -> EWinHook_UnhookWinEvent(E_Win_Hook1)
GEV
Posts: 1005
Joined: 25 Feb 2014, 00:50

Re: Windows-Apps: detect a new created window

Post by GEV » 12 Nov 2021, 10:48

This seems to work without DetectHiddenWindows:

Code: Select all

#NoEnv
#SingleInstance Force

Gui +LastFound
hWnd := WinExist()
DllCall("RegisterShellHookWindow", UInt,WinExist())
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
return

ShellMessage( wParam,lParam )
{
    WinGet, pname, ProcessName, ahk_id %lParam%
    WinGetTitle, title_W, ahk_id %lParam%
    WinGetClass, class_W, ahk_id %lParam%
    If ((title_W != "") && (class_W != ""))
    {
        If ( wParam = 1 ) ; 1 means HSHELL_WINDOWCREATED
        {
            If (class_W != "Windows.UI.Core.CoreWindow") 
				ToolTip, WINDOW CREATED:`n"%title_W%" ahk_class "%class_W%"`n%pname%				
        }
        else
        If ( wParam = 2 ) ;  2 means HSHELL_WINDOWDESTROYED
        {
			If (class_W = "Windows.UI.Core.CoreWindow")
			{
				WinGetClass, ActiveClass, A
				If ( ActiveClass = "ApplicationFrameWindow" ) 
				{
					WinGetTitle, ActiveTitle, A
					If ( ActiveTitle = title_W) 			
						ToolTip, WINDOW CREATED:`n"%title_W%" ahk_class "%ActiveClass%"`n%pname%
				}
			}
        }
    }
}
Maybe someone can explain what happens in this case or whether its the right way to get the desired result.
doubledave22
Posts: 343
Joined: 08 Jun 2019, 17:36

Re: Windows-Apps: detect a new created window

Post by doubledave22 » 12 Nov 2021, 11:05

If this worked your original example should also work. It looks like you just wanted some basic filtering? If so that looks fine.

Definitely use shellhook if that works, i just proposed wineventhook since it can capture some child windows shellhook misses.

edit: I would keep using lparam for wintitle instead of A since thats the hwnd of the window that's been created. I'm not sure why you switched to the active window. Not all newly created windows take focus so that could mess you up some.

edit2: ok it looks like that active window stuff was for HSHELL_WINDOWDESTROYED. You won't be able to get the title/class/process once it's been destroyed since shellhook messsages come after the event. If you want to track when a certain window has closed you'll have to keep a list of the open windows of that process and then compare it after HSHELL_WINDOWDESTROYED is called
JustinNL
Posts: 28
Joined: 01 Sep 2020, 13:22

Re: Windows-Apps: detect a new created window

Post by JustinNL » 09 Feb 2022, 17:03

Hi all,

I'm running into a similar problem in detecting a window using the shell hook

I'm trying to detect a window from a program I'm using for work
I've got the script to monitor shell hook messages HSHELL_WINDOWCREATED working
However it seems the window I'm trying to monitor doesn't trigger a HSHELL_WINDOWCREATED message.

I would like to try a WinEventHook method, but I'm running into an issue:
It might work by monitoring EVENT_SYSTEM_FOREGROUND, however the window that I'm trying to capture doesn't always receive focus on creation (I actually want to monitor it to WinActivate it)

What would be the proper event constant to monitor creation of a window (i.e. the WinEventMonitor equivalent of HSHELL_WINDOWCREATED)?
EVENT_OBJECT_CREATE is not working for me either.

Best, Justin
User avatar
FanaticGuru
Posts: 1908
Joined: 30 Sep 2013, 22:25

Re: Windows-Apps: detect a new created window

Post by FanaticGuru » 09 Feb 2022, 20:36

JustinNL wrote:
09 Feb 2022, 17:03
Hi all,

I'm running into a similar problem in detecting a window using the shell hook

I'm trying to detect a window from a program I'm using for work
I've got the script to monitor shell hook messages HSHELL_WINDOWCREATED working
However it seems the window I'm trying to monitor doesn't trigger a HSHELL_WINDOWCREATED message.

I would like to try a WinEventHook method, but I'm running into an issue:
It might work by monitoring EVENT_SYSTEM_FOREGROUND, however the window that I'm trying to capture doesn't always receive focus on creation (I actually want to monitor it to WinActivate it)

What would be the proper event constant to monitor creation of a window (i.e. the WinEventMonitor equivalent of HSHELL_WINDOWCREATED)?
EVENT_OBJECT_CREATE is not working for me either.

Best, Justin

You might try using [Class] WinHook which was created for this purpose: viewtopic.php?t=59149

It makes working with Window Shell Hooks and Window Event Hooks easier.

FG
Hotkey Help - Help Dialog for Currently Running AHK Scripts
AHK Startup - Consolidate Multiply AHK Scripts with one Tray Icon
Hotstring Manager - Create and Manage Hotstrings
[Class] WinHook - Create Window Shell Hooks and Window Event Hooks
JustinNL
Posts: 28
Joined: 01 Sep 2020, 13:22

Re: Windows-Apps: detect a new created window

Post by JustinNL » 10 Feb 2022, 14:59

Thanks FG! This does look like a nice solution, but the problem is not so much the scripting but more which message to listen for.

EVENT_SYSTEM_FOREGROUND works well for new windows that receive focus, but the window I want to capture does not always receive focus on creation.

Which event would you suggest to use? I’ve looked into the MSDN page of the winevent hook, but I cannot really find how to go from there.
User avatar
FanaticGuru
Posts: 1908
Joined: 30 Sep 2013, 22:25

Re: Windows-Apps: detect a new created window

Post by FanaticGuru » 10 Feb 2022, 16:13

JustinNL wrote:
10 Feb 2022, 14:59
Thanks FG! This does look like a nice solution, but the problem is not so much the scripting but more which message to listen for.

EVENT_SYSTEM_FOREGROUND works well for new windows that receive focus, but the window I want to capture does not always receive focus on creation.

Which event would you suggest to use? I’ve looked into the MSDN page of the winevent hook, but I cannot really find how to go from there.

As shown in the examples for the class, I would use 1 = HSHELL_WINDOWCREATED with a Shell Hook to detect the creation of a window.

I would not use an Event Hook.

FG
Hotkey Help - Help Dialog for Currently Running AHK Scripts
AHK Startup - Consolidate Multiply AHK Scripts with one Tray Icon
Hotstring Manager - Create and Manage Hotstrings
[Class] WinHook - Create Window Shell Hooks and Window Event Hooks
JustinNL
Posts: 28
Joined: 01 Sep 2020, 13:22

Re: Windows-Apps: detect a new created window

Post by JustinNL » 11 Feb 2022, 05:57

Hi FG, thanks for the reply, but unfortunately this doesn't work for my purpose:
I setup the following script

Code: Select all

#Persistent
SetBatchLines, -1
Process, Priority,, High

Gui +LastFound
hWnd := WinExist()
DetectHiddenWindows, On

DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return

ShellMessage( wParam,lParam ) {
	If ( wParam = 1 ) ;  HSHELL_WINDOWCREATED := 1
     {
		WinGetTitle, Title, ahk_id %lParam%
		MsgBox, %Title%
     }
}
Everytime I open a new window it gives me the a MsgBox with the window title as expected
However, the window that I am looking for does not invoke a messagebox
That's why I'm looking for an alternate approach besides HSHELL_WINDOWCREATED
User avatar
FanaticGuru
Posts: 1908
Joined: 30 Sep 2013, 22:25

Re: Windows-Apps: detect a new created window

Post by FanaticGuru » 11 Feb 2022, 15:00

JustinNL wrote:
11 Feb 2022, 05:57
Hi FG, thanks for the reply, but unfortunately this doesn't work for my purpose:
I setup the following script

Code: Select all

#Persistent
SetBatchLines, -1
Process, Priority,, High

Gui +LastFound
hWnd := WinExist()
DetectHiddenWindows, On

DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return

ShellMessage( wParam,lParam ) {
	If ( wParam = 1 ) ;  HSHELL_WINDOWCREATED := 1
     {
		WinGetTitle, Title, ahk_id %lParam%
		MsgBox, %Title%
     }
}
Everytime I open a new window it gives me the a MsgBox with the window title as expected
However, the window that I am looking for does not invoke a messagebox
That's why I'm looking for an alternate approach besides HSHELL_WINDOWCREATED

Shell Hook and Event Hook are only going to work with windows that play nice with Windows. What program is creating this window? It could be some type of custom interface that does not use Windows to create the interface. But assuming it is a fairly normal window, monitoring for everything and reporting what is found might help. Some windows do report unusual numbers because they add the 32768 = 0x8000 = HSHELL_HIGHBIT to the number.

Modifying your code to for example catch all Shell Messages and then report the wParam in a ToolTip.

Code: Select all

#Persistent
SetBatchLines, -1
Process, Priority,, High

CoordMode, ToolTip, Screen
Gui +LastFound
hWnd := WinExist()
DetectHiddenWindows, On

DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return

ShellMessage( wParam,lParam ) 
{
	static Report
	WinGetTitle, Title, ahk_id %lParam%
	Report .= Title "`t"  wParam "`n"
	ToolTip, %Report%, 10, 10
}
ToolTip will overflow at a point but should give you the information you need before then.

FG
Hotkey Help - Help Dialog for Currently Running AHK Scripts
AHK Startup - Consolidate Multiply AHK Scripts with one Tray Icon
Hotstring Manager - Create and Manage Hotstrings
[Class] WinHook - Create Window Shell Hooks and Window Event Hooks
JustinNL
Posts: 28
Joined: 01 Sep 2020, 13:22

Re: Windows-Apps: detect a new created window

Post by JustinNL » 14 Feb 2022, 07:00

Hi FG,

Thanks for your suggestion. It is a commercial Electronic Patient File system. It is not the most expensive or bugfree software...
I tried your hotkey file and I could clearly follow the message, but the window (it is some sort of warning message) does not appear to trigger any HSHELL event.

So what I can do is do a SetTimer to look out for this message window every few seconds, but it seemed like a more logical approach to do an OnMessage so that AHK is not continuously looking for a certain message.

Would you have any final suggestion on how to use an Event Hook if possible? If not I'll stick to the SetTimer approach.

Thanks again for all the help so far!
Best, Justin
User avatar
FanaticGuru
Posts: 1908
Joined: 30 Sep 2013, 22:25

Re: Windows-Apps: detect a new created window

Post by FanaticGuru » 14 Feb 2022, 15:24

JustinNL wrote:
14 Feb 2022, 07:00
I tried your hotkey file and I could clearly follow the message, but the window (it is some sort of warning message) does not appear to trigger any HSHELL event.
...
Would you have any final suggestion on how to use an Event Hook if possible? If not I'll stick to the SetTimer approach.

An Event Hook has to hook into event messages for a certain process.

He is some monitoring code that might help.

Code: Select all

Gui, +AlwaysOnTop
Gui, Add, ListView, h200 w870, Count|WinTitle|ahk_class|hWinEventHook|event|hwnd|idObject|idChild|dwEventThread|dwmsEventTime
for Col, Width in [50, 150, 100, 100, 50, 80, 80, 50, 100, 100]
    LV_ModifyCol(Col, Width)
Gui, Show, x10 y10
OnExit, UnHook

; ExcelPID is used for the idProcess parameter when calling SetWinEventHook
Process, Exist, EXCEL.EXE
if ErrorLevel
    ExcelPID := ErrorLevel

/*  HWINEVENTHOOK WINAPI SetWinEventHook
 *      - http://msdn.microsoft.com/en-us/library/windows/desktop/dd373640%28v=vs.85%29.aspx
 *  Event Constants
 *      - http://msdn.microsoft.com/en-us/library/windows/desktop/dd318066%28v=vs.85%29.aspx
 */
;EVENT_OBJECT_CREATE := 0x8000
;EVENT_OBJECT_FOCUS := 0x8005
;EVENT_OBJECT_LOCATIONCHANGE := 0x800B
EVENT_SYSTEM_MOVESIZEEND := 0x000B
EVENT_SYSTEM_MOVESIZESTART := 0x000A
WINEVENT_OUTOFCONTEXT := 0x0
WINEVENT_SKIPOWNPROCESS := 0x2
Hook := DllCall("SetWinEventHook"
    , "UInt",   EVENT_SYSTEM_MOVESIZESTART                      ;_In_  UINT eventMin
    , "UInt",   EVENT_SYSTEM_MOVESIZEEND                        ;_In_  UINT eventMax
    , "Ptr" ,   0x0                                             ;_In_  HMODULE hmodWinEventProc
    , "Ptr" ,   RegisterCallback("WinEventProc")                ;_In_  WINEVENTPROC lpfnWinEventProc
    , "UInt",   ExcelPID                                        ;_In_  DWORD idProcess
    , "UInt",   0x0                                             ;_In_  DWORD idThread
    , "UInt",   WINEVENT_OUTOFCONTEXT|WINEVENT_SKIPOWNPROCESS)  ;_In_  UINT dwflags
return


/*  WinEventProc callback function
 *      - http://msdn.microsoft.com/en-us/library/windows/desktop/dd373885%28v=vs.85%29.aspx
 */
WinEventProc(hWinEventHook, event, hwnd, idObject, idChild, dwEventThread, dwmsEventTime) {
    static Count := 0
    WinGetTitle, WinTitle, ahk_id %hwnd%
    WinGetClass, WinClass, ahk_id %hwnd%
    LV_Insert(1, "", ++Count, WinTitle, WinClass, hWinEventHook, event, hwnd, idObject, idChild, dwEventThread, dwmsEventTime)
    return
}

UnHook:
DllCall("UnhookWinEvent", "Ptr",Hook)
GuiEscape:
GuiClose:
ExitApp

This code is setup to monitor events from Excel. Excel has to be running before you start this code. Then this code gets a hook into the Excel.exe process and watches for event messages.

You can try this code out with Excel to see what it does when you do things like move, resize, create children windows, etc. of Excel.

Then you will need to change this Process, Exist, EXCEL.EXE to the process of your program and attempt to monitor it for event messages. If you find one that reliably comes up when the window you want opens, then you can work on creating an Event Hook for it. There are lots of examples of Event Hooks on the forums or you can just use the WinHook class that does all the hard work for you once you know the event number to watch for.

FG
Hotkey Help - Help Dialog for Currently Running AHK Scripts
AHK Startup - Consolidate Multiply AHK Scripts with one Tray Icon
Hotstring Manager - Create and Manage Hotstrings
[Class] WinHook - Create Window Shell Hooks and Window Event Hooks
JustinNL
Posts: 28
Joined: 01 Sep 2020, 13:22

Re: Windows-Apps: detect a new created window

Post by JustinNL » 15 Feb 2022, 10:32

Thanks! I'll use your monitoring code and go from there!
Best, Justin
User avatar
FanaticGuru
Posts: 1908
Joined: 30 Sep 2013, 22:25

Re: Windows-Apps: detect a new created window

Post by FanaticGuru » 15 Feb 2022, 13:32

JustinNL wrote:
15 Feb 2022, 10:32
Thanks! I'll use your monitoring code and go from there!

Looking at it now I see the code I posted has minimum and maximums from the last time I used it. You have to hook into a range of events to watch for.

You set that range right here:

Code: Select all

    , "UInt",   EVENT_SYSTEM_MOVESIZESTART                      ;_In_  UINT eventMin
    , "UInt",   EVENT_SYSTEM_MOVESIZEEND                        ;_In_  UINT eventMax
I have some other event numbers defined above it that I used in the past.

Here is a list of more:

Code: Select all

;				Event Hook Events:
;				0x8012 = EVENT_OBJECT_ACCELERATORCHANGE
;				0x8017 = EVENT_OBJECT_CLOAKED
;				0x8015 = EVENT_OBJECT_CONTENTSCROLLED
;				0x8000 = EVENT_OBJECT_CREATE
;				0x8011 = EVENT_OBJECT_DEFACTIONCHANGE
;				0x800D = EVENT_OBJECT_DESCRIPTIONCHANGE
;				0x8001 = EVENT_OBJECT_DESTROY
;				0x8021 = EVENT_OBJECT_DRAGSTART
;				0x8022 = EVENT_OBJECT_DRAGCANCEL
;				0x8023 = EVENT_OBJECT_DRAGCOMPLETE
;				0x8024 = EVENT_OBJECT_DRAGENTER
;				0x8025 = EVENT_OBJECT_DRAGLEAVE
;				0x8026 = EVENT_OBJECT_DRAGDROPPED
;				0x80FF = EVENT_OBJECT_END
;				0x8005 = EVENT_OBJECT_FOCUS
;				0x8010  = EVENT_OBJECT_HELPCHANGE
;				0x8003 = EVENT_OBJECT_HIDE
;				0x8020 = EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED
;				0x8028 = EVENT_OBJECT_IME_HIDE
;				0x8027 = EVENT_OBJECT_IME_SHOW
;				0x8029 = EVENT_OBJECT_IME_CHANGE
;				0x8013 = EVENT_OBJECT_INVOKED
;				0x8019 = EVENT_OBJECT_LIVEREGIONCHANGED
;				0x800B = EVENT_OBJECT_LOCATIONCHANGE
;				0x800C = EVENT_OBJECT_NAMECHANGE
;				0x800F = EVENT_OBJECT_PARENTCHANGE
;				0x8004 = EVENT_OBJECT_REORDER
;				0x8006 = EVENT_OBJECT_SELECTION
;				0x8007 = EVENT_OBJECT_SELECTIONADD
;				0x8008 = EVENT_OBJECT_SELECTIONREMOVE
;				0x8009 = EVENT_OBJECT_SELECTIONWITHIN
;				0x8002 = EVENT_OBJECT_SHOW
;				0x800A = EVENT_OBJECT_STATECHANGE
;				0x8030 = EVENT_OBJECT_TEXTEDIT_CONVERSIONTARGETCHANGED
;				0x8014 = EVENT_OBJECT_TEXTSELECTIONCHANGED
;				0x8018 = EVENT_OBJECT_UNCLOAKED
;				0x800E = EVENT_OBJECT_VALUECHANGE
;				0x0002 = EVENT_SYSTEM_ALERT
;				0x8016 = EVENT_SYSTEM_ARRANGMENTPREVIEW
;				0x0009 = EVENT_SYSTEM_CAPTUREEND
;				0x0008 = EVENT_SYSTEM_CAPTURESTART
;				0x000D = EVENT_SYSTEM_CONTEXTHELPEND
;				0x000C = EVENT_SYSTEM_CONTEXTHELPSTART
;				0x0020 = EVENT_SYSTEM_DESKTOPSWITCH
;				0x0011 = EVENT_SYSTEM_DIALOGEND
;				0x0010 = EVENT_SYSTEM_DIALOGSTART
;				0x000F = EVENT_SYSTEM_DRAGDROPEND
;				0x000E = EVENT_SYSTEM_DRAGDROPSTART
;				0x00FF = EVENT_SYSTEM_END
;				0x0003 = EVENT_SYSTEM_FOREGROUND
;				0x0007 = EVENT_SYSTEM_MENUPOPUPEND
;				0x0006 = EVENT_SYSTEM_MENUPOPUPSTART
;				0x0005 = EVENT_SYSTEM_MENUEND
;				0x0004 = EVENT_SYSTEM_MENUSTART
;				0x0017 = EVENT_SYSTEM_MINIMIZEEND
;				0x0016 = EVENT_SYSTEM_MINIMIZESTART
;				0x000B = EVENT_SYSTEM_MOVESIZEEND
;				0x000A = EVENT_SYSTEM_MOVESIZESTART
;				0x0013 = EVENT_SYSTEM_SCROLLINGEND
;				0x0012 = EVENT_SYSTEM_SCROLLINGSTART
;				0x0001 = EVENT_SYSTEM_SOUND
;				0x0015 = EVENT_SYSTEM_SWITCHEND
;				0x0014 = EVENT_SYSTEM_SWITCHSTART

You could just do:

Code: Select all

    , "UInt",   0x0000                      ;_In_  UINT eventMin
    , "UInt",   0xFFFF                        ;_In_  UINT eventMax
That would get the entire range but you would get a gizzilion event messages because there are all kinds of events going on all the time.

FG
Hotkey Help - Help Dialog for Currently Running AHK Scripts
AHK Startup - Consolidate Multiply AHK Scripts with one Tray Icon
Hotstring Manager - Create and Manage Hotstrings
[Class] WinHook - Create Window Shell Hooks and Window Event Hooks
User avatar
andymbody
Posts: 993
Joined: 02 Jul 2017, 23:47

Re: Windows-Apps: detect a new created window

Post by andymbody » 01 Mar 2024, 15:03

Thank you!
Post Reply

Return to “Ask for Help (v1)”