//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1992 - 1995
//
//  File:       scrproc.idl
//
//  Contents:   Defines interfaces used to talk to the script engine by remote
//              processes.
//
//----------------------------------------------------------------------------

import "oleidl.idl";

// *************  Scripted Process Interfaces *****************

interface IScriptedProcessSink;

[object,
uuid(854c3171-c854-4a77-b189-606859e4391b)]
interface IScriptedProcess : IUnknown
{
    // This interface needs to be easy to use from C++

    HRESULT SetProcessID([in] long lProcessID, [in, string] wchar_t *pszEnvID);

    // Fires an OnProcessEvent event to the script engine
    HRESULT SendData([in, string] wchar_t * pszType,
                     [in, string] wchar_t * pszData,
                     [out] long *plReturn);

    HRESULT SetExitCode([in] long lExitCode);

    // This removes the requirement for the process to support IConnectionPointContainer
    HRESULT SetProcessSink([in] IScriptedProcessSink * pSPS);
}

[object,
uuid(854c3172-c854-4a77-b189-606859e4391b)]
interface IScriptedProcessSink : IUnknown
{
    // This interface needs to be easy to use from C++

    HRESULT RequestExit();
    HRESULT ReceiveData([in, string] wchar_t *pszType,
                        [in, string] wchar_t *pszData,
                        [out]        long    *plReturn);
}

[uuid(854c3173-c854-4a77-b189-606859e4391b)]
library MTScriptedProcessLib
{
    [uuid(854c316f-c854-4a77-b189-606859e4391b)]
    coclass LocalScriptedProcess
    {
        [default]         interface IScriptedProcess;
        [default, source] interface IScriptedProcessSink;
    }
}

