Recently Browsing 0 members
No registered users viewing this page.
I'm trying to call WinList() with a handle. That should be possible:
But I only get back an 2d array that looks like this:
(That means no window was found.)
It's not the window or the handle. When I call other functions like WinExists() or WinGetHandle() it works.
Is it because of me, the description in the reference or because of Autoit who makes a mistake?
No, because of the rest of my program I don't want to use WinGetTitle() because the format of WinList() has to be kept. Alternatively, I could create a 2d array myself, but it should also work with WinList() ... I hope.
I'm trying to fill a ListView with all normal viewable windows to act with them.
First I tried with WinList:
Local $aWinList = WinList("[REGEXPTITLE:(?i)(.+)]") Local $aTmp, $iID ;~ _ArrayDisplay($aWinList) For $i = $aWinList To 1 Step -1 ; going backwards not disturbing the index while cycling through and deleting some If StringStripWS( $aWinList[$i], 3) == "" Or _ Not BitAND(WinGetState($aWinList[$i]), $WIN_STATE_VISIBLE) Or _ BitAND(WinGetState($aWinList[$i]), $WIN_STATE_MINIMIZED ) Then _ArrayDelete($aWinList, $i) Else ; Window has a Title and is "visible" $aTmp = WinGetPos($aWinList[$i]) If $aTmp < -1000 Or $aTmp < -1000 Then ; Window is minimized or tray icon _ArrayDelete($aWinList, $i) EndIf EndIf Next $aWinList = UBound($aWinList)-1 ; getting actual # of windows ; Each row is now [ID]=> [Title], [hWnd] But it keeps getting Windows which are definitely not there at least not visible:
Those windows "Rechner", "Einstellungen", "Netflix", "Microsoft Store", ... are not there!?!
It should list only the first three windows, which are real.
I even tried it with _WinAPI_ UDF:
$hWnd = _WinAPI_GetForegroundWindow() ; Add items _GUICtrlListView_BeginUpdate($idListview) If $hWnd <> 0 Then $iI = 0 Do If _WinAPI_IsWindow($hWnd) And _WinAPI_IsWindowVisible Then _GUICtrlListView_AddItem($idListview, WinGetTitle($hWnd)) _GUICtrlListView_AddSubItem($idListview, $iI, $hWnd, 1) $iI += 1 $hWnd = _WinAPI_GetWindow($hWnd, $GW_HWNDNEXT) EndIf Until $hWnd = 0 EndIf But it is the same...
How can i distinguish those invisible windows from normal ones?
PS: I'm using Windows 10, maybe it is important to know?
It's been a while since I've used AutoIt, but I'm having fun with it again.
I'm running on Windows 7 Pro, 64_bit. with AutoIt 184.108.40.206+
In my program, I've called Winlist(), so that I can get a list of all windows on the system.
I then iterate through the titles, and attempt to copy the title & handle of Windows I'm specifically interested in.
While this seems to be a very easy task, I'm having a strange problem copying the title & handle of the two windows that I'm interested in.
In the For loop:
For $i = 1 To $AllWindowsCount ConsoleWrite() displays the expected Title & handle, from the WindowsDupe array, so it appears that the copy from the $AllWindows array
works as expected.
_ArrayDisplay($WindowsDupe) is called after the for loop, $WindowsDupe is empty.
I wasn't able to find any functions in the help file, for copying entire arrays or certain elements, so I thought I would just copy them manually, as seen in the for loop.
What am I doing wrong with the WindowsDupe array?
My code is attached.
So the code I use is as follows:
Local $InstancesList = WinList("[REGEXPTITLE:(?i)(.*Paint.*|.*WinAmp.*)]")
And then if this number changes, I do something. But once in a while I SEE a new window paint being opened but nothing happens.
So I added logs and printed the InstancesList and saw it did not pick up the new paint.
Now I also added a WinList with Class to doublecheck, but still now and then it fails. So I was wondering if this is a known problem, and whether there are alternatives of workarounds.
Hi, I use winlist to count the amount of instances of a specific window (in combination with a reg expression). Over multiple runs, it seems that it fails 1 in a hundred times more or less. Any idea how/why? And are there alternatives to use as a backup/check?