title: Python win32gui SetAsForegroundWindow function not working properly
body: <p>I am trying to write a program that finds a window by searching for its title. Once it has found the window, it will attempt to bring it to front. I am using <code>win32gui</code> API to achieve this. I am able to get it to work for the most part, but for some reason it does not work if the taskmanager is in front. I have the follow sample code.</p>
  
  <pre><code>import win32gui, win32con
  import re, traceback
  from time import sleep
  
  class cWindow:
      def __init__(self):
          self._hwnd = None
  
      def BringToTop(self):
          win32gui.BringWindowToTop(self._hwnd)
  
      def SetAsForegroundWindow(self):
          win32gui.SetForegroundWindow(self._hwnd)
  
      def Maximize(self):
          win32gui.ShowWindow(self._hwnd, win32con.SW_MAXIMIZE)
  
      def setActWin(self):
          win32gui.SetActiveWindow(self._hwnd)
  
      def _window_enum_callback(self, hwnd, wildcard):
          '''Pass to win32gui.EnumWindows() to check all the opened windows'''
          if re.match(wildcard, str(win32gui.GetWindowText(hwnd))) != None:
              self._hwnd = hwnd
  
      def find_window_wildcard(self, wildcard):
          self._hwnd = None
          win32gui.EnumWindows(self._window_enum_callback, wildcard)
  
  
  def main():
      sleep(5)
      try:      
          wildcard = ".*Building Operation WorkStation.*"
          cW = cWindow()
          cW.find_window_wildcard(wildcard)
          cW.Maximize()
          cW.BringToTop()
          cW.SetAsForegroundWindow()
  
      except:
          f = open("log.txt", "w")
          f.write(traceback.format_exc())
          print traceback.format_exc()
  main()
  </code></pre>
  
  <p>I pieced this together from multiple online sources. It seems to work for the most part but for some windows like the task manager, it'll work sometimes but fails the rest. When it doesnt work properly, all I notice is the application icon blinks yellow. Is there a proper way of doing this to make sure the window that I am interested in is set to foreground 100% of the times? I am not sure if this is relevant but I am using Windows 7 Professional (32-bit) with Service Pack 1. </p>