Sign in to follow this  
Followers 0
JScript

WH_CBT and HCBT_ACTIVATE to detect a new window...

4 posts in this topic

Hello guys!

Does anyone know how to capture the creation of a window without it being through the program itself?

I use the following: WH_CBT and HCBT_ACTIVATE to detect a new window.

But unfortunately only detects windows created by the program itself...

Run this:

#include <WinAPI.au3>

HotKeySet("{Esc}", "Terminate")

Global Const $HCBT_ACTIVATE = 5

;---->
Global $hCBTPROC_CALLBK = DllCallbackRegister("_WH_CBT", "int", "int;int;int")
If Not $hCBTPROC_CALLBK Then
    MsgBox(4096, "Error!", "DllCallbackRegister fail!")
    Exit
EndIf
Global $hCBTPROC_HOOK = _WinAPI_SetWindowsHookEx($WH_CBT, DllCallbackGetPtr($hCBTPROC_CALLBK), 0, _WinAPI_GetCurrentThreadId())
If Not $hCBTPROC_HOOK Then
    DllCallbackFree($hCBTPROC_CALLBK)
    MsgBox(4096, "Error!", "_WinAPI_SetWindowsHookEx fail!")
    Exit
EndIf
;<----

Sleep(2000)
MsgBox(4096, "HCBT_ACTIVATE!", "HCBT_ACTIVATE captured!!!")

While 1
    Sleep(100)
WEnd

Func _WH_CBT($nCode, $wParam, $lParam)
    If $nCode < 0 Then
        Return _WinAPI_CallNextHookEx($hCBTPROC_HOOK, $nCode, $wParam, $lParam)
    EndIf

    Switch $nCode
        Case $HCBT_ACTIVATE
            TrayTip("$HCBT_ACTIVATE", "Win title: " & WinGetTitle(HWnd($wParam)), 20, 1)
    EndSwitch

    Return _WinAPI_CallNextHookEx($hCBTPROC_HOOK, $nCode, $wParam, $lParam)
EndFunc   ;==>__CBTProc_ErrorTrap

Func Terminate()
    _WinAPI_UnhookWindowsHookEx($hCBTPROC_HOOK)
    Exit
EndFunc

Unfortunately I do not know how to get the ThreadId of another process, like explorer.exe for example. That way I could capture any window that was created.

JS


http://forum.autoitbrasil.com/ (AutoIt v3 Brazil!!!)

Somewhere Out ThereJames Ingram

somewh10.png

dropbo10.pngDownload Dropbox - Simplify your life!
Your virtual HD wherever you go, anywhere!

Share this post


Link to post
Share on other sites



Look at WM_SHELLHOOK in my signature.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

I did several tests but unfortunately does not detect a menu as a window, so far I only found this function _WinAPI_EnumWindows() that detects a menu created as if it were a common window, but in a loop it is slow...

Do you have any other idea?

JS


http://forum.autoitbrasil.com/ (AutoIt v3 Brazil!!!)

Somewhere Out ThereJames Ingram

somewh10.png

dropbo10.pngDownload Dropbox - Simplify your life!
Your virtual HD wherever you go, anywhere!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0