Search code examples
pythonpywinauto

Python pywinauto search windows with partial title


Is there any way to make pywinauto find a window just with a part of the title?

This is my code:

import pywinauto

pwa_app = pywinauto.application.Application()
w_handle = pywinauto.findwindows.find_windows(title=u'Minitab Professional 5.1 64bit - 3333348.temp.project',
                                              class_name='Window')[0]

The problem is that the number before temp.project changes every time I open the software and because of that I cannot get pywinauto to find the right window.


Solution

  • By skimming the source code on google code, I see you can feed a regex for the title :

    #=========================================================================
    def find_windows(class_name = None,
                    class_name_re = None,
                    parent = None,
                    process = None,
                    title = None,
                    title_re = None,
                    top_level_only = True,
                    visible_only = True,
                    enabled_only = False,
                    best_match = None,
                    handle = None,
                    ctrl_index = None,
                    predicate_func = None,
                    active_only = False,
                    control_id = None,
        ):
        """Find windows based on criteria passed in
    
        Possible values are:
    
        * **class_name**  Windows with this window class
        * **class_name_re**  Windows whose class match this regular expression
        * **parent**    Windows that are children of this
        * **process**   Windows running in this process
        * **title**     Windows with this Text
        * **title_re**  Windows whose Text match this regular expression
        * **top_level_only** Top level windows only (default=True)
        * **visible_only**   Visible windows only (default=True)
        * **enabled_only**   Enabled windows only (default=True)
        * **best_match**  Windows with a title similar to this
        * **handle**      The handle of the window to return
        * **ctrl_index**  The index of the child window to return
        * **active_only**  Active windows only (default=False)
        * **control_id**  Windows with this control id
       """
    

    According to me pywinauto.findwindows.find_windows(title_re = r'Minitab Professional 5.1 64bit*', class_name='Window')[0] should work.