JScript Posted June 22, 2014 Share Posted June 22, 2014 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: expandcollapse popup#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 Download Dropbox - Simplify your life!Your virtual HD wherever you go, anywhere! Link to comment Share on other sites More sharing options...
guinness Posted June 22, 2014 Share Posted June 22, 2014 Look at WM_SHELLHOOK in my signature. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _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 parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
JScript Posted June 22, 2014 Author Share Posted June 22, 2014 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 Download Dropbox - Simplify your life!Your virtual HD wherever you go, anywhere! Link to comment Share on other sites More sharing options...
junkew Posted June 23, 2014 Share Posted June 23, 2014 see event examples in this thread in examples'?do=embed' frameborder='0' data-embedContent>> FAQ 31 How to click some elements, FAQ 40 Test automation with AutoIt, Multithreading CLR .NET Powershell CMDLets Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now