// CompatUI.idl : IDL source for CompatUI.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (CompatUI.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
#include "olectl.h"


    [
        object,
        uuid(E84219C9-C6CA-42C9-BFAE-521D1B23AF96),
        dual,
        helpstring("IProgView Interface"),
        pointer_default(unique)
    ]
    interface IProgView : IDispatch
    {
        [propput, id(DISPID_BACKCOLOR)]
        HRESULT BackColor([in]OLE_COLOR clr);
        [propget, id(DISPID_BACKCOLOR)]
        HRESULT BackColor([out,retval]OLE_COLOR* pclr);

        [propput, id(DISPID_ENABLED)]
        HRESULT Enabled([in]VARIANT_BOOL vBool);
        [propget, id(DISPID_ENABLED)]
        HRESULT Enabled([out, retval]VARIANT_BOOL* pbool);

        [id(1), helpstring("method GetSelectedItem")] HRESULT GetSelectedItem();
        [propget, id(2), helpstring("property SelectionName")] HRESULT SelectionName([out, retval] VARIANT *pVal);
        [id(3), helpstring("method GetSelectionInformation")] HRESULT GetSelectionInformation([in]long lInformationClass, [out, retval] VARIANT* pVal);
        [id(4), helpstring("method PopulateList")] HRESULT PopulateList();
        [id(5), helpstring("method UpdateListItem")] HRESULT UpdateListItem([in]BSTR pTarget, [in]VARIANT* pKeys, [out, retval] BOOL* pResult);
        [id(6), helpstring("method CancelPopulateList")] HRESULT CancelPopulateList();
/*
        [propget, id(7), helpstring("property Accel")] HRESULT Accel([out, retval] BSTR *pVal);
        [propput, id(7), helpstring("property Accel")] HRESULT Accel([in] BSTR newVal);
*/
        [propget, id(8), helpstring("property ExternAccel")] HRESULT ExternAccel([out, retval] BSTR *pVal);
        [propput, id(8), helpstring("property ExternAccel")] HRESULT ExternAccel([in] BSTR newVal);
        [propget, id(9), helpstring("property ExcludeFiles")] HRESULT ExcludeFiles([out, retval] BSTR* pVal);
        [propput, id(9), helpstring("property ExcludeFiles")] HRESULT ExcludeFiles([in] BSTR newVal);

        [propget, id(10), helpstring("property AccelCmd")] HRESULT AccelCmd([in] LONG lCmd, [out, retval] BSTR *pVal);
        [propput, id(10), helpstring("property AccelCmd")] HRESULT AccelCmd([in] LONG lCmd, [in] BSTR newVal);
        [id(11), helpstring("method ClearAccel")] HRESULT ClearAccel();
        [id(12), helpstring("method ClearExternAccel")] HRESULT ClearExternAccel();


    };
    [
        object,
        uuid(C5A7C759-1E8D-4B1B-B1E4-59F7F9B5171B),
        dual,
        helpstring("IUtil Interface"),
        pointer_default(unique)
    ]
    interface IUtil : IDispatch
    {
        [id(1), helpstring("method RemoveArgs")] HRESULT RemoveArgs([in]BSTR sVar, [out, retval]VARIANT* pVal);
        [id(2), helpstring("method GetItemKeys")] HRESULT GetItemKeys([in]BSTR pszPath, [out, retval]VARIANT* pszKeys);
        [id(3), helpstring("method SetItemKeys")] HRESULT SetItemKeys([in]BSTR pszPath, [in]VARIANT* pszKeys, [out, retval]BOOL* pVal);
        [id(4), helpstring("method CheckAdminPrivileges")] HRESULT CheckAdminPrivileges([out, retval] BOOL* pVal);
        [id(5), helpstring("method RunApplication")] HRESULT RunApplication([in]BSTR pLayers, [in]BSTR pszCmdLine, [in]BOOL bEnableLog, [out, retval]DWORD* pResult);
        [id(6), helpstring("method GetExePathFromObject")] HRESULT GetExePathFromObject([in]BSTR pszPath, [out, retval]VARIANT* pVal);
        [id(7), helpstring("method IsSystemTarget")] HRESULT IsSystemTarget([in]BSTR bstrPath, [out, retval]BOOL* pbSystemTarget);
        [id(8), helpstring("method IsExecutableFile")] HRESULT IsExecutableFile([in]BSTR bstrPath, [out, retval]BOOL* pbExecutableFile);
        [id(9), helpstring("method IsCompatWizardDisabled")] HRESULT IsCompatWizardDisabled([out, retval]BOOL* pbDisabled);
    };

[
    uuid(233A5627-7755-4B36-AA00-656B8846F501),
    version(1.0),
    helpstring("CompatUI 1.0 Type Library")
]
library COMPATUILib
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");

    [
        uuid(4BCBFEC8-C7D4-4A48-A7A5-9824A6BA8755),
        helpstring("_IProgViewEvents Interface")
    ]
    dispinterface _IProgViewEvents
    {
        properties:
        methods:
        [id(1), helpstring("method DblClk")] HRESULT DblClk(LONG lFlags);
        [id(2), helpstring("method ProgramListReady")] HRESULT ProgramListReady();
    };


    [
        object,
        uuid(78A029DD-B561-4702-A7EF-0ECD12EEF7B1),
        dual,
        helpstring("ISelectFile Interface"),
        pointer_default(unique)
    ]
    interface ISelectFile : IDispatch
    {
        [propput, id(DISPID_BACKCOLOR)]
        HRESULT BackColor([in]OLE_COLOR clr);
        [propget, id(DISPID_BACKCOLOR)]
        HRESULT BackColor([out,retval]OLE_COLOR* pclr);
        [propput, id(DISPID_BACKSTYLE)]
        HRESULT BackStyle([in]long style);
        [propget, id(DISPID_BACKSTYLE)]
        HRESULT BackStyle([out,retval]long* pstyle);

/*        [propput, id(DISPID_BORDERCOLOR)]
        HRESULT BorderColor([in]OLE_COLOR clr);
        [propget, id(DISPID_BORDERCOLOR)]
        HRESULT BorderColor([out, retval]OLE_COLOR* pclr);

        [propput, id(DISPID_TABSTOP)]
        HRESULT TabStop([in]VARIANT_BOOL vbool);
        [propget, id(DISPID_TABSTOP)]
        HRESULT TabStop([out, retval]VARIANT_BOOL* pbool);

        [propput, id(DISPID_BORDERVISIBLE)]
        HRESULT BorderVisible([in]VARIANT_BOOL vbool);
        [propget, id(DISPID_BORDERVISIBLE)]
        HRESULT BorderVisible([out, retval]VARIANT_BOOL* pbool);
*/
/*
        [propput, id(DISPID_VALID)]
        HRESULT Valid([in]VARIANT_BOOL vbool);
        [propget, id(DISPID_VALID)]
        HRESULT Valid([out, retval]VARIANT_BOOL* pbool);
*/
        [propput, id(DISPID_ENABLED)]
        HRESULT Enabled([in]VARIANT_BOOL vBool);
        [propget, id(DISPID_ENABLED)]
        HRESULT Enabled([out, retval]VARIANT_BOOL* pbool);

        [propget, id(1), helpstring("property BrowseTitle")] HRESULT BrowseTitle([out, retval] BSTR *pVal);
        [propput, id(1), helpstring("property BrowseTitle")] HRESULT BrowseTitle([in] BSTR newVal);
        [propget, id(2), helpstring("property BrowseFilter")] HRESULT BrowseFilter([out, retval] BSTR *pVal);
        [propput, id(2), helpstring("property BrowseFilter")] HRESULT BrowseFilter([in] BSTR newVal);
        [propget, id(3), helpstring("property BrowseInitialDirectory")] HRESULT BrowseInitialDirectory([out, retval] BSTR *pVal);
        [propput, id(3), helpstring("property BrowseInitialDirectory")] HRESULT BrowseInitialDirectory([in] BSTR newVal);
        [propget, id(4), helpstring("property BrowseFlags")] HRESULT BrowseFlags([out, retval] long *pVal);
        [propput, id(4), helpstring("property BrowseFlags")] HRESULT BrowseFlags([in] long newVal);
        [propget, id(5), helpstring("property FileName")] HRESULT FileName([out, retval] BSTR *pVal);
        [propput, id(5), helpstring("property FileName")] HRESULT FileName([in] BSTR newVal);
        [propget, id(6), helpstring("property ErrorCode")] HRESULT ErrorCode([out, retval] long *pVal);

/*      [propget, id(7), helpstring("property Accel")] HRESULT Accel([out, retval] BSTR *pVal);
        [propput, id(7), helpstring("property Accel")] HRESULT Accel([in] BSTR newVal);
*/
        [propget, id(8), helpstring("property ExternAccel")] HRESULT ExternAccel([out, retval] BSTR *pVal);
        [propput, id(8), helpstring("property ExternAccel")] HRESULT ExternAccel([in] BSTR newVal);
        [propget, id(9), helpstring("property BrowseBtnCaption")] HRESULT BrowseBtnCaption([out, retval] BSTR *pVal);
        [propput, id(9), helpstring("property BrowseBtnCaption")] HRESULT BrowseBtnCaption([in] BSTR newVal);
        [propget, id(10), helpstring("property AccelCmd")] HRESULT AccelCmd([in] LONG lCmd, [out, retval] BSTR *pVal);
        [propput, id(10), helpstring("property AccelCmd")] HRESULT AccelCmd([in] LONG lCmd, [in] BSTR newVal);
        [id(11), helpstring("method ClearAccel")] HRESULT ClearAccel();
        [id(12), helpstring("method ClearExternAccel")] HRESULT ClearExternAccel();
    };

    [
        uuid(B9B7D40C-0C41-4EAF-B0B5-6B41378C7F48),
        helpstring("ProgView Class")
    ]
    coclass ProgView
    {
        [default] interface IProgView;
        [default, source] dispinterface _IProgViewEvents;
    };
    [
        uuid(0355854A-7F23-47E2-B7C3-97EE8DD42CD8),
        helpstring("Util Class")
    ]
    coclass Util
    {
        [default] interface IUtil;
    };
    [
        uuid(FCFCB4A2-1656-458A-8713-83D5FD9A9C54),
        helpstring("_ISelectFileEvents Interface")
    ]
    dispinterface _ISelectFileEvents
    {
        properties:
        methods:
        [id(1), helpstring("method SelectionComplete")] HRESULT SelectionComplete();
        [id(2), helpstring("method StateChanged")] HRESULT StateChanged([in]LONG lState);
    };
    [
        object,
        uuid(F21EB30D-AA39-47F5-AB0B-686F783147B0),
        dual,
        helpstring("IUpload Interface"),
        pointer_default(unique)
    ]
    interface IUpload : IDispatch
    {
        [id(1), helpstring("method SetKey")] HRESULT SetKey([in]BSTR pszKey, [in]VARIANT* pvValue);
        [id(2), helpstring("method GetKey")] HRESULT GetKey([in]BSTR pszKey, [out, retval]VARIANT* pValue);
        [id(3), helpstring("method AddMatchingInfo")] HRESULT AddMatchingInfo
                ([in] BSTR pszCommand,
                 [in, optional]VARIANT dwFilter,
                 [in, optional]VARIANT pKey,
                 [in, optional]VARIANT pDescription,
                 [in, optional]VARIANT bProgress,
                 [out, retval]BOOL* pbSuccess);
        [id(4), helpstring("method AddDataFile")] HRESULT AddDataFile
                ([in]BSTR pszDataFile,
                 [in, optional]VARIANT pszKey,
                 [in, optional]VARIANT pszDescription,
                 [in, optional]VARIANT bOwn);
        [id(5), helpstring("method RemoveDataFile")] HRESULT RemoveDataFile([in]BSTR pszDataFile);
        [id(6), helpstring("method CreateManifestFile")] HRESULT CreateManifestFile([out, retval]BOOL *pbSuccess);
        [id(7), helpstring("method SendReport")] HRESULT SendReport([out, retval]BOOL* pbSuccess);
        [id(8), helpstring("method AddDescriptionFile")] HRESULT AddDescriptionFile
                ([in]BSTR pszApplicationName,
                 [in]BSTR pszApplicationPath,
                 [in]LONG lMediaType,
                 [in]BOOL bCompatSuccess,
                 [in]VARIANT* pvFixesApplied,
                 [in, optional]VARIANT pszKey,
                 [out, retval]BOOL* pbSuccess);
        [id(9), helpstring("method DeleteTempFiles")] HRESULT DeleteTempFiles();
        [id(10), helpstring("method ShowTempFiles")] HRESULT ShowTempFiles();
        [id(11), helpstring("method GetDataFile")] HRESULT GetDataFile([in]VARIANT vKey, [in]LONG InformationClass, [out, retval]VARIANT* pbstrVal);
    };

    [
        uuid(66CBC149-A49F-48F9-B17A-6A3EA9B42A87),
        helpstring("SelectFile Class")
    ]
    coclass SelectFile
    {
        [default] interface ISelectFile;
        [default, source] dispinterface _ISelectFileEvents;
    };
    [
        uuid(31EAD8CC-C2F6-4639-BA99-5F495F9B1502),
        helpstring("Upload Class")
    ]
    coclass Upload
    {
        [default] interface IUpload;
    };
};
