Noviceatthis Posted January 31, 2014 Posted January 31, 2014 Hello all Basically what I would like to do is hide all windows of a particular process by using their handles This is what I have so far: expandcollapse popup#include <WinAPIProc.au3> #include <Array.au3> $processname = "vlc.exe" If Not ProcessExists($processname) Then Exit EndIf $Data = ProcessList($processname) global $numberofInstances = $Data[0][0] Global $PID[$numberofInstances + 1] Global $hWndArray For $i = 1 To $numberofInstances $PID[$i] = $Data[$i][1] $hWndArray = _WinAPI_EnumProcessWindows($PID[$i]) $hWnd = $hWndArray[1][0] $Hide = WinSetState($hWnd, "", @SW_HIDE) Next sleep (5000) For $i = 1 To $numberofInstances $PID[$i] = $Data[$i][1] $hWndArray = _WinAPI_EnumProcessWindows($PID[$i], false) $hWnd = $hWndArray[1][0] WinSetState($hWnd, '', @SW_SHOW) Next So all the windows of the process do become hidden, its getting them back that's the problem, in the example I used above, VLC does come back, but in a really weird form. When I tried it with MS Word, the window simply did not return. I was wondering whether there was a solution to this Thanks in Advance
jdelaney Posted January 31, 2014 Posted January 31, 2014 (edited) The first function only returns an array of visible windows...usually only 1 or 2 at a time. Generally, for any process, there are MANY handles, and mostly NOT visible. So it's easy to hide, but you would need to loop through the array and make all visible...or maybe only those where wingetpos is within bounds of your monitor, and over certain width/height....I'll leave that to you, but this will brute force it: For $i = 1 To $numberofInstances $PID[$i] = $Data[$i][1] $hWndArray = _WinAPI_EnumProcessWindows($PID[$i], false) For $i = 1 to UBound($hWndArray)-1 WinSetState($hWndArray[$i][1], '', @SW_SHOW) Next Next Very cool function though...I always got ALL window handles, and looped through to see if those windows were of the same process...much easier to have this do it for you! Note: I would suggest looping through the "visible" array also, just in case there is ever more than one window. Edited January 31, 2014 by jdelaney IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
Noviceatthis Posted January 31, 2014 Author Posted January 31, 2014 Thanks jdelaney I'll have a play around with this
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