WinTables: ignore tables that are not visible, have parents, or appear to be other non-app styled windows

This commit is contained in:
Eric Blade 2011-03-04 08:46:41 -05:00
parent b713b5f289
commit d0acf8e943

View File

@ -56,12 +56,23 @@ class Table(Table_Window):
"""Finds poker client window with the given table name.""" """Finds poker client window with the given table name."""
titles = {} titles = {}
win32gui.EnumWindows(win_enum_handler, titles) win32gui.EnumWindows(win_enum_handler, titles)
for hwnd in titles: for hwnd in titles:
if titles[hwnd] == "": if titles[hwnd] == "":
continue continue
if re.search(self.search_string, titles[hwnd], re.I): if re.search(self.search_string, titles[hwnd], re.I):
if self.check_bad_words(titles[hwnd]): if self.check_bad_words(titles[hwnd]):
continue continue
if not win32gui.IsWindowVisible(hwnd): # if window not visible, probably not a table
continue
if win32gui.GetParent(hwnd) != 0: # if window is a child of another window, probably not a table
continue
HasNoOwner = win32gui.GetWindow(hwnd, win32con.GW_OWNER) == 0
WindowStyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
if HasNoOwner and WindowStyle & win32con.WS_EX_TOOLWINDOW != 0:
continue
if not HasNoOwner and WindowStyle & win32con.WS_EX_APPWINDOW == 0:
continue
self.window = hwnd self.window = hwnd
break break