Home | History | Annotate | Download | only in chrome_frame
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_FRAME_CHROME_FRAME_HELPER_UTIL_H_
      6 #define CHROME_FRAME_CHROME_FRAME_HELPER_UTIL_H_
      7 
      8 #include <windows.h>
      9 
     10 // Compare the given class name with the known window class names for
     11 // internet explorer browser windows.
     12 //
     13 // @param [in] window_to_check handle to the window to be checked
     14 //
     15 // @return true if the window class matches known class names for IE browser.
     16 //
     17 bool UtilIsWebBrowserWindow(HWND window_to_check);
     18 
     19 // A utility function that retrieves the specified web browser COM interface
     20 // from the web browser window. The passed in window must be the web browser
     21 // window (class name "IEFrame" in IE6 and "TabWindowClass" in IE7)
     22 // @param[in] window The web browser window whose COM object is to be fetched
     23 // @param[in] iid    The IID of the interface to be fetched
     24 // @param[out] web_browser_object
     25 //                   The requested interface pointer to the web browser object
     26 //                   is returned in this variable upon success
     27 //
     28 HRESULT UtilGetWebBrowserObjectFromWindow(HWND window,
     29                                           REFIID iid,
     30                                           void** web_browser_object);
     31 
     32 // Checks to see whether the passed in window is of the class specified.
     33 // of the heirarchy list
     34 // @param hwnd_to_match        [in]  The handle of the window that is to be
     35 //                                   matched.
     36 // @param window_class         [in]  The window class to match against.
     37 //
     38 bool IsWindowOfClass(HWND hwnd_to_match, const wchar_t* window_class);
     39 
     40 // Returns true if the current process name is process_name, false otherwise.
     41 bool IsNamedProcess(const wchar_t* process_name);
     42 
     43 // Returns true if window has the name |window_name|, false otherwise.
     44 bool IsNamedWindow(HWND window, const wchar_t* window_name);
     45 
     46 //
     47 // This function recursively enumerates all windows from a given starting point
     48 // and searches for the first occurrence of a window matching
     49 // the class name and window name passed in. We use the EnumChildWindows API
     50 // to search for the window.
     51 // @note The FindWindowEx function does something similar, however, it goes
     52 // only one level deep and does not recurse descendants.
     53 // @param parent [in] The HWND of the window from which to start looking. If
     54 //                    this is NULL then enumerate all windows on the desktop.
     55 // @param class_name [in, optional] The class name of the matching window
     56 // @param window_name [in, optional] The window text of the matching window.
     57 //                                   At least one of class_name and
     58 //                                   window_name must be non-NULL.
     59 // @param thread_id_to_match [in] This parameter will be used to match
     60 //                                particular thread id for window.
     61 // @param process_id_to_match [in] This parameter will be used to match
     62 //                                 particular process id for window.
     63 // @return The window handle of the matching window, if found, or NULL.
     64 //
     65 HWND RecurseFindWindow(HWND parent,
     66                        const wchar_t* class_name,
     67                        const wchar_t* window_name,
     68                        DWORD thread_id_to_match,
     69                        DWORD process_id_to_match);
     70 
     71 // Reads |value_size| characters from a value named |value_name| in |key| and
     72 // places them in the buffer pointed to by |value|. Returns ERROR_SUCCESS on
     73 // success.
     74 LONG ReadValue(HKEY key,
     75                const wchar_t* value_name,
     76                size_t value_size,
     77                wchar_t* value);
     78 
     79 
     80 // Returns true if our BHO is registered in the HKLM subkey that IE checks for
     81 // the list of BHOs to load.
     82 bool IsBHOLoadingPolicyRegistered();
     83 
     84 // Returns true if system-level Chrome Frame is installed.
     85 bool IsSystemLevelChromeFrameInstalled();
     86 
     87 #endif  // CHROME_FRAME_CHROME_FRAME_HELPER_UTIL_H_
     88