IBrowserApplicationState

This interface is implemented in IEFRAME and seems new to Windows Vista. Closer inspection may reveal it or something similar in some other module in an earlier Windows version. The IID is:

IBrowserApplicationState {A9EEC745-B92E-4F50-BA80-721072208C67}

This interface is not completely undocumented. It doesn’t get even a declaration in any Windows SDK header, but the corresponding IID_IBrowserApplicationState is defined in the UUID.LIB library.

Methods

The IBrowserApplicationState methods are:

Offset Method
0x0C GetFrameFromHWND
0x10 GetFrameFromThreadID
0x14 GetFrameFromBrowserHWND
0x18 GetFrameFromBrowserThreadID
0x1C QueryDialogsAllowed
0x20 QueueDialog
0x24 RemoveDialog
0x28 AssociateThread
0x2C DisassociateThread
0x30 FindParentHWND

Prototypes

The following are known from Microsoft’s symbol file for IEFRAME:

HRESULT GetFrameFromHWND (HWND, IBrowserFrameState **);
HRESULT GetFrameFromThreadID (ULONG, IBrowserFrameState **);
HRESULT GetFrameFromBrowserHWND (HWND, IBrowserFrameState **);
HRESULT GetFrameFromBrowserThreadID (ULONG, IBrowserFrameState **);
HRESULT QueryDialogsAllowed (HWND, ULONG);
HRESULT QueueDialog (HWND, HWND, ULONG);
HRESULT RemoveDialog (HWND, ULONG);
HRESULT AssociateThread (ULONG, ULONG);
HRESULT DisassociateThread (ULONG);
HRESULT FindParentHWND (ULONG, HWND *);

Of course, the IBrowserFrameState interface produced by several of these methods is undocumented also.

Implementations

The only known implementation is by the BrowserApplicationState class, which IEFRAME exposes through its DllGetClassObject function as if for the following IDL declaration:

[
    uuid (E569BDE7-A8DC-47F3-893F-FD2B31B3EEFD)
]
coclass BrowserApplicationState
{
    [default] interface IBrowserApplicationState;
};

This too is undocumented, though the CLSID_BrowserApplicationState symbol is defined in the UUID.LIB library. The only known use is from MSHTML.