MSTSCLib; // Microsoft Terminal Services Control Type Library

Dispatch IMsTscAxEvents;
GUID={336D5562-EFA8-482E-8CB3-C5C0FC7A7DB6};
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);

Alias AutoReconnectContinueState;
  __MIDL___MIDL_itf_mstsax_0000_0032_0001

Enum __MIDL___MIDL_itf_mstsax_0000_0032_0001;
  autoReconnectContinueAutomatic = 0;
  autoReconnectContinueStop = 1;
  autoReconnectContinueManual = 2;

Alias RemoteProgramResult;
  __MIDL___MIDL_itf_mstsax_0000_0039_0001

Enum __MIDL___MIDL_itf_mstsax_0000_0039_0001;
  remoteAppResultOk = 0;
  remoteAppResultLocked = 1;
  remoteAppResultProtocolError = 2;
  remoteAppResultNotInWhitelist = 3;
  remoteAppResultNetworkPathDenied = 4;
  remoteAppResultFileNotFound = 5;
  remoteAppResultFailure = 6;
  remoteAppResultHookNotLoaded = 7;

Class MsTscAxNotSafeForScripting; // Microsoft Terminal Services Client Control - version 1
GUID={A41A4187-5A86-4E26-B40A-856F9035D9CB};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Dispatch IMsRdpClient;
GUID={92B4A539-7115-4B7C-A5A9-E5D9EFC2780A};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;

Dispatch IMsTscAx;
GUID={8C11EFAE-92C3-11D1-BC1E-00C04FA31489};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);

Dispatch IMsTscAx_Redist;
GUID={327BB5CD-834E-4400-AEF2-B30E15E5D682};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);

Dispatch IMsTscSecuredSettings;
GUID={C9D65442-A0F9-45B2-8F73-D61D2DB8CBB6};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put StartProgram(BSTR);
  property-get StartProgram: BSTR;
  property-put WorkDir(BSTR);
  property-get WorkDir: BSTR;
  property-put FullScreen(I4);
  property-get FullScreen: I4;

Dispatch IMsTscAdvancedSettings;
GUID={809945CC-4B3B-4A92-A6B0-DBF9B5F2EF2D};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Compress(I4);
  property-get Compress: I4;
  property-put BitmapPeristence(I4);
  property-get BitmapPeristence: I4;
  property-put allowBackgroundInput(I4);
  property-get allowBackgroundInput: I4;
  property-put KeyBoardLayoutStr(BSTR);
  property-put PluginDlls(BSTR);
  property-put IconFile(BSTR);
  property-put IconIndex(I4);
  property-put ContainerHandledFullScreen(I4);
  property-get ContainerHandledFullScreen: I4;
  property-put DisableRdpdr(I4);
  property-get DisableRdpdr: I4;

Dispatch IMsTscDebug;
GUID={209D0EB9-6254-47B1-9033-A98DAE55BB27};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put HatchBitmapPDU(I4);
  property-get HatchBitmapPDU: I4;
  property-put HatchSSBOrder(I4);
  property-get HatchSSBOrder: I4;
  property-put HatchMembltOrder(I4);
  property-get HatchMembltOrder: I4;
  property-put HatchIndexPDU(I4);
  property-get HatchIndexPDU: I4;
  property-put LabelMemblt(I4);
  property-get LabelMemblt: I4;
  property-put BitmapCacheMonitor(I4);
  property-get BitmapCacheMonitor: I4;
  property-put MallocFailuresPercent(I4);
  property-get MallocFailuresPercent: I4;
  property-put MallocHugeFailuresPercent(I4);
  property-get MallocHugeFailuresPercent: I4;
  property-put NetThroughput(I4);
  property-get NetThroughput: I4;
  property-put CLXCmdLine(BSTR);
  property-get CLXCmdLine: BSTR;
  property-put CLXDll(BSTR);
  property-get CLXDll: BSTR;
  property-put RemoteProgramsHatchVisibleRegion(I4);
  property-get RemoteProgramsHatchVisibleRegion: I4;
  property-put RemoteProgramsHatchVisibleNoDataRegion(I4);
  property-get RemoteProgramsHatchVisibleNoDataRegion: I4;
  property-put RemoteProgramsHatchNonVisibleRegion(I4);
  property-get RemoteProgramsHatchNonVisibleRegion: I4;
  property-put RemoteProgramsHatchWindow(I4);
  property-get RemoteProgramsHatchWindow: I4;
  property-put RemoteProgramsStayConnectOnBadCaps(I4);
  property-get RemoteProgramsStayConnectOnBadCaps: I4;
  property-get ControlType: UINT;

Dispatch IMsRdpClientAdvancedSettings;
GUID={3C65B4AB-12B3-465B-ACD4-B8DAD3BFF9E2};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Compress(I4);
  property-get Compress: I4;
  property-put BitmapPeristence(I4);
  property-get BitmapPeristence: I4;
  property-put allowBackgroundInput(I4);
  property-get allowBackgroundInput: I4;
  property-put KeyBoardLayoutStr(BSTR);
  property-put PluginDlls(BSTR);
  property-put IconFile(BSTR);
  property-put IconIndex(I4);
  property-put ContainerHandledFullScreen(I4);
  property-get ContainerHandledFullScreen: I4;
  property-put DisableRdpdr(I4);
  property-get DisableRdpdr: I4;
  property-put SmoothScroll(I4);
  property-get SmoothScroll: I4;
  property-put AcceleratorPassthrough(I4);
  property-get AcceleratorPassthrough: I4;
  property-put ShadowBitmap(I4);
  property-get ShadowBitmap: I4;
  property-put TransportType(I4);
  property-get TransportType: I4;
  property-put SasSequence(I4);
  property-get SasSequence: I4;
  property-put EncryptionEnabled(I4);
  property-get EncryptionEnabled: I4;
  property-put DedicatedTerminal(I4);
  property-get DedicatedTerminal: I4;
  property-put RDPPort(I4);
  property-get RDPPort: I4;
  property-put EnableMouse(I4);
  property-get EnableMouse: I4;
  property-put DisableCtrlAltDel(I4);
  property-get DisableCtrlAltDel: I4;
  property-put EnableWindowsKey(I4);
  property-get EnableWindowsKey: I4;
  property-put DoubleClickDetect(I4);
  property-get DoubleClickDetect: I4;
  property-put MaximizeShell(I4);
  property-get MaximizeShell: I4;
  property-put HotKeyFullScreen(I4);
  property-get HotKeyFullScreen: I4;
  property-put HotKeyCtrlEsc(I4);
  property-get HotKeyCtrlEsc: I4;
  property-put HotKeyAltEsc(I4);
  property-get HotKeyAltEsc: I4;
  property-put HotKeyAltTab(I4);
  property-get HotKeyAltTab: I4;
  property-put HotKeyAltShiftTab(I4);
  property-get HotKeyAltShiftTab: I4;
  property-put HotKeyAltSpace(I4);
  property-get HotKeyAltSpace: I4;
  property-put HotKeyCtrlAltDel(I4);
  property-get HotKeyCtrlAltDel: I4;
  property-put orderDrawThreshold(I4);
  property-get orderDrawThreshold: I4;
  property-put BitmapCacheSize(I4);
  property-get BitmapCacheSize: I4;
  property-put BitmapVirtualCacheSize(I4);
  property-get BitmapVirtualCacheSize: I4;
  property-put ScaleBitmapCachesByBPP(I4);
  property-get ScaleBitmapCachesByBPP: I4;
  property-put NumBitmapCaches(I4);
  property-get NumBitmapCaches: I4;
  property-put CachePersistenceActive(I4);
  property-get CachePersistenceActive: I4;
  property-put PersistCacheDirectory(BSTR);
  property-put brushSupportLevel(I4);
  property-get brushSupportLevel: I4;
  property-put minInputSendInterval(I4);
  property-get minInputSendInterval: I4;
  property-put InputEventsAtOnce(I4);
  property-get InputEventsAtOnce: I4;
  property-put maxEventCount(I4);
  property-get maxEventCount: I4;
  property-put keepAliveInterval(I4);
  property-get keepAliveInterval: I4;
  property-put shutdownTimeout(I4);
  property-get shutdownTimeout: I4;
  property-put overallConnectionTimeout(I4);
  property-get overallConnectionTimeout: I4;
  property-put singleConnectionTimeout(I4);
  property-get singleConnectionTimeout: I4;
  property-put KeyboardType(I4);
  property-get KeyboardType: I4;
  property-put KeyboardSubType(I4);
  property-get KeyboardSubType: I4;
  property-put KeyboardFunctionKey(I4);
  property-get KeyboardFunctionKey: I4;
  property-put WinceFixedPalette(I4);
  property-get WinceFixedPalette: I4;
  property-put ConnectToServerConsole(bool);
  property-get ConnectToServerConsole: bool;
  property-put BitmapPersistence(I4);
  property-get BitmapPersistence: I4;
  property-put MinutesToIdleTimeout(I4);
  property-get MinutesToIdleTimeout: I4;
  property-put SmartSizing(bool);
  property-get SmartSizing: bool;
  property-put RdpdrLocalPrintingDocName(BSTR);
  property-get RdpdrLocalPrintingDocName: BSTR;
  property-put RdpdrClipCleanTempDirString(BSTR);
  property-get RdpdrClipCleanTempDirString: BSTR;
  property-put RdpdrClipPasteInfoString(BSTR);
  property-get RdpdrClipPasteInfoString: BSTR;
  property-put ClearTextPassword(BSTR);
  property-put DisplayConnectionBar(bool);
  property-get DisplayConnectionBar: bool;
  property-put PinConnectionBar(bool);
  property-get PinConnectionBar: bool;
  property-put GrabFocusOnConnect(bool);
  property-get GrabFocusOnConnect: bool;
  property-put LoadBalanceInfo(BSTR);
  property-get LoadBalanceInfo: BSTR;
  property-put RedirectDrives(bool);
  property-get RedirectDrives: bool;
  property-put RedirectPrinters(bool);
  property-get RedirectPrinters: bool;
  property-put RedirectPorts(bool);
  property-get RedirectPorts: bool;
  property-put RedirectSmartCards(bool);
  property-get RedirectSmartCards: bool;
  property-put BitmapVirtualCache16BppSize(I4);
  property-get BitmapVirtualCache16BppSize: I4;
  property-put BitmapVirtualCache24BppSize(I4);
  property-get BitmapVirtualCache24BppSize: I4;
  property-put PerformanceFlags(I4);
  property-get PerformanceFlags: I4;
  property-put ConnectWithEndpoint(^variant);
  property-put NotifyTSPublicKey(bool);
  property-get NotifyTSPublicKey: bool;

Dispatch IMsRdpClientSecuredSettings;
GUID={605BEFCF-39C1-45CC-A811-068FB7BE346D};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put StartProgram(BSTR);
  property-get StartProgram: BSTR;
  property-put WorkDir(BSTR);
  property-get WorkDir: BSTR;
  property-put FullScreen(I4);
  property-get FullScreen: I4;
  property-put KeyboardHookMode(I4);
  property-get KeyboardHookMode: I4;
  property-put AudioRedirectionMode(I4);
  property-get AudioRedirectionMode: I4;

Alias ExtendedDisconnectReasonCode;
  __MIDL_IMsRdpClient_0001

Enum __MIDL_IMsRdpClient_0001;
  exDiscReasonNoInfo = 0;
  exDiscReasonAPIInitiatedDisconnect = 1;
  exDiscReasonAPIInitiatedLogoff = 2;
  exDiscReasonServerIdleTimeout = 3;
  exDiscReasonServerLogonTimeout = 4;
  exDiscReasonReplacedByOtherConnection = 5;
  exDiscReasonOutOfMemory = 6;
  exDiscReasonServerDeniedConnection = 7;
  exDiscReasonServerDeniedConnectionFips = 8;
  exDiscReasonServerInsufficientPrivileges = 9;
  exDiscReasonServerFreshCredsRequired = 10;
  exDiscReasonLicenseInternal = $100;
  exDiscReasonLicenseNoLicenseServer = $101;
  exDiscReasonLicenseNoLicense = $102;
  exDiscReasonLicenseErrClientMsg = $103;
  exDiscReasonLicenseHwidDoesntMatchLicense = $104;
  exDiscReasonLicenseErrClientLicense = $105;
  exDiscReasonLicenseCantFinishProtocol = $106;
  exDiscReasonLicenseClientEndedProtocol = $107;
  exDiscReasonLicenseErrClientEncryption = $108;
  exDiscReasonLicenseCantUpgradeLicense = $109;
  exDiscReasonLicenseNoRemoteConnections = $10A;
  exDiscReasonRdpEncInvalidCredentials = $300;
  exDiscReasonProtocolRangeStart = $1000;
  exDiscReasonProtocolRangeEnd = $7FFF;

Alias ControlCloseStatus;
  __MIDL_IMsRdpClient_0002

Enum __MIDL_IMsRdpClient_0002;
  controlCloseCanProceed = 0;
  controlCloseWaitForEvents = 1;

Interface IMsTscNonScriptable;
GUID={C1E6743A-41C1-4A74-832A-0DD06C1C7A0E};
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;

Interface IMsRdpClientNonScriptable;
GUID={2F079C4C-87B2-4AFD-97AB-20CDB43038AE};
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Alias UINT_PTR;
  UI4

Alias LONG_PTR;
  I4

Class MsTscAx; // Microsoft Terminal Services Client Control (redistributable) - version 1
GUID={1FB464C8-09BB-4017-A2F5-EB742F04392F};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Class MsRdpClientNotSafeForScripting; // Microsoft RDP Client Control - version 2
GUID={7CACBD7B-0D99-468F-AC33-22E495C0AFE5};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Class MsRdpClient; // Microsoft RDP Client Control (redistributable) - version 2
GUID={791FA017-2DE3-492E-ACC5-53C67A2B94D0};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Class MsRdpClient2NotSafeForScripting; // Microsoft RDP Client Control - version 3
GUID={3523C2FB-4031-44E4-9A3B-F1E94986EE7F};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Dispatch IMsRdpClient2;
GUID={E7E17DC4-3B71-4BA7-A8E6-281FFADCA28F};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;

Dispatch IMsRdpClientAdvancedSettings2;
GUID={9AC42117-2B76-4320-AA44-0E616AB8437B};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Compress(I4);
  property-get Compress: I4;
  property-put BitmapPeristence(I4);
  property-get BitmapPeristence: I4;
  property-put allowBackgroundInput(I4);
  property-get allowBackgroundInput: I4;
  property-put KeyBoardLayoutStr(BSTR);
  property-put PluginDlls(BSTR);
  property-put IconFile(BSTR);
  property-put IconIndex(I4);
  property-put ContainerHandledFullScreen(I4);
  property-get ContainerHandledFullScreen: I4;
  property-put DisableRdpdr(I4);
  property-get DisableRdpdr: I4;
  property-put SmoothScroll(I4);
  property-get SmoothScroll: I4;
  property-put AcceleratorPassthrough(I4);
  property-get AcceleratorPassthrough: I4;
  property-put ShadowBitmap(I4);
  property-get ShadowBitmap: I4;
  property-put TransportType(I4);
  property-get TransportType: I4;
  property-put SasSequence(I4);
  property-get SasSequence: I4;
  property-put EncryptionEnabled(I4);
  property-get EncryptionEnabled: I4;
  property-put DedicatedTerminal(I4);
  property-get DedicatedTerminal: I4;
  property-put RDPPort(I4);
  property-get RDPPort: I4;
  property-put EnableMouse(I4);
  property-get EnableMouse: I4;
  property-put DisableCtrlAltDel(I4);
  property-get DisableCtrlAltDel: I4;
  property-put EnableWindowsKey(I4);
  property-get EnableWindowsKey: I4;
  property-put DoubleClickDetect(I4);
  property-get DoubleClickDetect: I4;
  property-put MaximizeShell(I4);
  property-get MaximizeShell: I4;
  property-put HotKeyFullScreen(I4);
  property-get HotKeyFullScreen: I4;
  property-put HotKeyCtrlEsc(I4);
  property-get HotKeyCtrlEsc: I4;
  property-put HotKeyAltEsc(I4);
  property-get HotKeyAltEsc: I4;
  property-put HotKeyAltTab(I4);
  property-get HotKeyAltTab: I4;
  property-put HotKeyAltShiftTab(I4);
  property-get HotKeyAltShiftTab: I4;
  property-put HotKeyAltSpace(I4);
  property-get HotKeyAltSpace: I4;
  property-put HotKeyCtrlAltDel(I4);
  property-get HotKeyCtrlAltDel: I4;
  property-put orderDrawThreshold(I4);
  property-get orderDrawThreshold: I4;
  property-put BitmapCacheSize(I4);
  property-get BitmapCacheSize: I4;
  property-put BitmapVirtualCacheSize(I4);
  property-get BitmapVirtualCacheSize: I4;
  property-put ScaleBitmapCachesByBPP(I4);
  property-get ScaleBitmapCachesByBPP: I4;
  property-put NumBitmapCaches(I4);
  property-get NumBitmapCaches: I4;
  property-put CachePersistenceActive(I4);
  property-get CachePersistenceActive: I4;
  property-put PersistCacheDirectory(BSTR);
  property-put brushSupportLevel(I4);
  property-get brushSupportLevel: I4;
  property-put minInputSendInterval(I4);
  property-get minInputSendInterval: I4;
  property-put InputEventsAtOnce(I4);
  property-get InputEventsAtOnce: I4;
  property-put maxEventCount(I4);
  property-get maxEventCount: I4;
  property-put keepAliveInterval(I4);
  property-get keepAliveInterval: I4;
  property-put shutdownTimeout(I4);
  property-get shutdownTimeout: I4;
  property-put overallConnectionTimeout(I4);
  property-get overallConnectionTimeout: I4;
  property-put singleConnectionTimeout(I4);
  property-get singleConnectionTimeout: I4;
  property-put KeyboardType(I4);
  property-get KeyboardType: I4;
  property-put KeyboardSubType(I4);
  property-get KeyboardSubType: I4;
  property-put KeyboardFunctionKey(I4);
  property-get KeyboardFunctionKey: I4;
  property-put WinceFixedPalette(I4);
  property-get WinceFixedPalette: I4;
  property-put ConnectToServerConsole(bool);
  property-get ConnectToServerConsole: bool;
  property-put BitmapPersistence(I4);
  property-get BitmapPersistence: I4;
  property-put MinutesToIdleTimeout(I4);
  property-get MinutesToIdleTimeout: I4;
  property-put SmartSizing(bool);
  property-get SmartSizing: bool;
  property-put RdpdrLocalPrintingDocName(BSTR);
  property-get RdpdrLocalPrintingDocName: BSTR;
  property-put RdpdrClipCleanTempDirString(BSTR);
  property-get RdpdrClipCleanTempDirString: BSTR;
  property-put RdpdrClipPasteInfoString(BSTR);
  property-get RdpdrClipPasteInfoString: BSTR;
  property-put ClearTextPassword(BSTR);
  property-put DisplayConnectionBar(bool);
  property-get DisplayConnectionBar: bool;
  property-put PinConnectionBar(bool);
  property-get PinConnectionBar: bool;
  property-put GrabFocusOnConnect(bool);
  property-get GrabFocusOnConnect: bool;
  property-put LoadBalanceInfo(BSTR);
  property-get LoadBalanceInfo: BSTR;
  property-put RedirectDrives(bool);
  property-get RedirectDrives: bool;
  property-put RedirectPrinters(bool);
  property-get RedirectPrinters: bool;
  property-put RedirectPorts(bool);
  property-get RedirectPorts: bool;
  property-put RedirectSmartCards(bool);
  property-get RedirectSmartCards: bool;
  property-put BitmapVirtualCache16BppSize(I4);
  property-get BitmapVirtualCache16BppSize: I4;
  property-put BitmapVirtualCache24BppSize(I4);
  property-get BitmapVirtualCache24BppSize: I4;
  property-put PerformanceFlags(I4);
  property-get PerformanceFlags: I4;
  property-put ConnectWithEndpoint(^variant);
  property-put NotifyTSPublicKey(bool);
  property-get NotifyTSPublicKey: bool;
  property-get CanAutoReconnect: bool;
  property-put EnableAutoReconnect(bool);
  property-get EnableAutoReconnect: bool;
  property-put MaxReconnectAttempts(I4);
  property-get MaxReconnectAttempts: I4;

Class MsRdpClient2; // Microsoft RDP Client Control (redistributable) - version 3
GUID={9059F30F-4EB1-4BD2-9FDC-36F43A218F4A};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Class MsRdpClient2a; // Microsoft RDP Client Control (redistributable) - version 3a
GUID={971127BB-259F-48C2-BD75-5F97A3331551};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Class MsRdpClient3NotSafeForScripting; // Microsoft RDP Client Control - version 4
GUID={ACE575FD-1FCF-4074-9401-EBAB990FA9DE};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Dispatch IMsRdpClient3;
GUID={91B7CBC5-A72E-4FA0-9300-D647D7E897FF};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;

Dispatch IMsRdpClientAdvancedSettings3;
GUID={19CD856B-C542-4C53-ACEE-F127E3BE1A59};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Compress(I4);
  property-get Compress: I4;
  property-put BitmapPeristence(I4);
  property-get BitmapPeristence: I4;
  property-put allowBackgroundInput(I4);
  property-get allowBackgroundInput: I4;
  property-put KeyBoardLayoutStr(BSTR);
  property-put PluginDlls(BSTR);
  property-put IconFile(BSTR);
  property-put IconIndex(I4);
  property-put ContainerHandledFullScreen(I4);
  property-get ContainerHandledFullScreen: I4;
  property-put DisableRdpdr(I4);
  property-get DisableRdpdr: I4;
  property-put SmoothScroll(I4);
  property-get SmoothScroll: I4;
  property-put AcceleratorPassthrough(I4);
  property-get AcceleratorPassthrough: I4;
  property-put ShadowBitmap(I4);
  property-get ShadowBitmap: I4;
  property-put TransportType(I4);
  property-get TransportType: I4;
  property-put SasSequence(I4);
  property-get SasSequence: I4;
  property-put EncryptionEnabled(I4);
  property-get EncryptionEnabled: I4;
  property-put DedicatedTerminal(I4);
  property-get DedicatedTerminal: I4;
  property-put RDPPort(I4);
  property-get RDPPort: I4;
  property-put EnableMouse(I4);
  property-get EnableMouse: I4;
  property-put DisableCtrlAltDel(I4);
  property-get DisableCtrlAltDel: I4;
  property-put EnableWindowsKey(I4);
  property-get EnableWindowsKey: I4;
  property-put DoubleClickDetect(I4);
  property-get DoubleClickDetect: I4;
  property-put MaximizeShell(I4);
  property-get MaximizeShell: I4;
  property-put HotKeyFullScreen(I4);
  property-get HotKeyFullScreen: I4;
  property-put HotKeyCtrlEsc(I4);
  property-get HotKeyCtrlEsc: I4;
  property-put HotKeyAltEsc(I4);
  property-get HotKeyAltEsc: I4;
  property-put HotKeyAltTab(I4);
  property-get HotKeyAltTab: I4;
  property-put HotKeyAltShiftTab(I4);
  property-get HotKeyAltShiftTab: I4;
  property-put HotKeyAltSpace(I4);
  property-get HotKeyAltSpace: I4;
  property-put HotKeyCtrlAltDel(I4);
  property-get HotKeyCtrlAltDel: I4;
  property-put orderDrawThreshold(I4);
  property-get orderDrawThreshold: I4;
  property-put BitmapCacheSize(I4);
  property-get BitmapCacheSize: I4;
  property-put BitmapVirtualCacheSize(I4);
  property-get BitmapVirtualCacheSize: I4;
  property-put ScaleBitmapCachesByBPP(I4);
  property-get ScaleBitmapCachesByBPP: I4;
  property-put NumBitmapCaches(I4);
  property-get NumBitmapCaches: I4;
  property-put CachePersistenceActive(I4);
  property-get CachePersistenceActive: I4;
  property-put PersistCacheDirectory(BSTR);
  property-put brushSupportLevel(I4);
  property-get brushSupportLevel: I4;
  property-put minInputSendInterval(I4);
  property-get minInputSendInterval: I4;
  property-put InputEventsAtOnce(I4);
  property-get InputEventsAtOnce: I4;
  property-put maxEventCount(I4);
  property-get maxEventCount: I4;
  property-put keepAliveInterval(I4);
  property-get keepAliveInterval: I4;
  property-put shutdownTimeout(I4);
  property-get shutdownTimeout: I4;
  property-put overallConnectionTimeout(I4);
  property-get overallConnectionTimeout: I4;
  property-put singleConnectionTimeout(I4);
  property-get singleConnectionTimeout: I4;
  property-put KeyboardType(I4);
  property-get KeyboardType: I4;
  property-put KeyboardSubType(I4);
  property-get KeyboardSubType: I4;
  property-put KeyboardFunctionKey(I4);
  property-get KeyboardFunctionKey: I4;
  property-put WinceFixedPalette(I4);
  property-get WinceFixedPalette: I4;
  property-put ConnectToServerConsole(bool);
  property-get ConnectToServerConsole: bool;
  property-put BitmapPersistence(I4);
  property-get BitmapPersistence: I4;
  property-put MinutesToIdleTimeout(I4);
  property-get MinutesToIdleTimeout: I4;
  property-put SmartSizing(bool);
  property-get SmartSizing: bool;
  property-put RdpdrLocalPrintingDocName(BSTR);
  property-get RdpdrLocalPrintingDocName: BSTR;
  property-put RdpdrClipCleanTempDirString(BSTR);
  property-get RdpdrClipCleanTempDirString: BSTR;
  property-put RdpdrClipPasteInfoString(BSTR);
  property-get RdpdrClipPasteInfoString: BSTR;
  property-put ClearTextPassword(BSTR);
  property-put DisplayConnectionBar(bool);
  property-get DisplayConnectionBar: bool;
  property-put PinConnectionBar(bool);
  property-get PinConnectionBar: bool;
  property-put GrabFocusOnConnect(bool);
  property-get GrabFocusOnConnect: bool;
  property-put LoadBalanceInfo(BSTR);
  property-get LoadBalanceInfo: BSTR;
  property-put RedirectDrives(bool);
  property-get RedirectDrives: bool;
  property-put RedirectPrinters(bool);
  property-get RedirectPrinters: bool;
  property-put RedirectPorts(bool);
  property-get RedirectPorts: bool;
  property-put RedirectSmartCards(bool);
  property-get RedirectSmartCards: bool;
  property-put BitmapVirtualCache16BppSize(I4);
  property-get BitmapVirtualCache16BppSize: I4;
  property-put BitmapVirtualCache24BppSize(I4);
  property-get BitmapVirtualCache24BppSize: I4;
  property-put PerformanceFlags(I4);
  property-get PerformanceFlags: I4;
  property-put ConnectWithEndpoint(^variant);
  property-put NotifyTSPublicKey(bool);
  property-get NotifyTSPublicKey: bool;
  property-get CanAutoReconnect: bool;
  property-put EnableAutoReconnect(bool);
  property-get EnableAutoReconnect: bool;
  property-put MaxReconnectAttempts(I4);
  property-get MaxReconnectAttempts: I4;
  property-put ConnectionBarShowMinimizeButton(bool);
  property-get ConnectionBarShowMinimizeButton: bool;
  property-put ConnectionBarShowRestoreButton(bool);
  property-get ConnectionBarShowRestoreButton: bool;

Class MsRdpClient3; // Microsoft RDP Client Control (redistributable) - version 4
GUID={7584C670-2274-4EFB-B00B-D6AABA6D3850};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Class MsRdpClient3a; // Microsoft RDP Client Control (redistributable) - version 4a
GUID={6A6F4B83-45C5-4CA9-BDD9-0D81C12295E4};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;

Class MsRdpClient4NotSafeForScripting; // Microsoft RDP Client Control - version 5
GUID={6AE29350-321B-42BE-BBE5-12FB5270C0DE};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;

Dispatch IMsRdpClient4;
GUID={095E0738-D97D-488B-B9F6-DD0E8D66C0DE};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;

Dispatch IMsRdpClientAdvancedSettings4;
GUID={FBA7F64E-7345-4405-AE50-FA4A763DC0DE};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Compress(I4);
  property-get Compress: I4;
  property-put BitmapPeristence(I4);
  property-get BitmapPeristence: I4;
  property-put allowBackgroundInput(I4);
  property-get allowBackgroundInput: I4;
  property-put KeyBoardLayoutStr(BSTR);
  property-put PluginDlls(BSTR);
  property-put IconFile(BSTR);
  property-put IconIndex(I4);
  property-put ContainerHandledFullScreen(I4);
  property-get ContainerHandledFullScreen: I4;
  property-put DisableRdpdr(I4);
  property-get DisableRdpdr: I4;
  property-put SmoothScroll(I4);
  property-get SmoothScroll: I4;
  property-put AcceleratorPassthrough(I4);
  property-get AcceleratorPassthrough: I4;
  property-put ShadowBitmap(I4);
  property-get ShadowBitmap: I4;
  property-put TransportType(I4);
  property-get TransportType: I4;
  property-put SasSequence(I4);
  property-get SasSequence: I4;
  property-put EncryptionEnabled(I4);
  property-get EncryptionEnabled: I4;
  property-put DedicatedTerminal(I4);
  property-get DedicatedTerminal: I4;
  property-put RDPPort(I4);
  property-get RDPPort: I4;
  property-put EnableMouse(I4);
  property-get EnableMouse: I4;
  property-put DisableCtrlAltDel(I4);
  property-get DisableCtrlAltDel: I4;
  property-put EnableWindowsKey(I4);
  property-get EnableWindowsKey: I4;
  property-put DoubleClickDetect(I4);
  property-get DoubleClickDetect: I4;
  property-put MaximizeShell(I4);
  property-get MaximizeShell: I4;
  property-put HotKeyFullScreen(I4);
  property-get HotKeyFullScreen: I4;
  property-put HotKeyCtrlEsc(I4);
  property-get HotKeyCtrlEsc: I4;
  property-put HotKeyAltEsc(I4);
  property-get HotKeyAltEsc: I4;
  property-put HotKeyAltTab(I4);
  property-get HotKeyAltTab: I4;
  property-put HotKeyAltShiftTab(I4);
  property-get HotKeyAltShiftTab: I4;
  property-put HotKeyAltSpace(I4);
  property-get HotKeyAltSpace: I4;
  property-put HotKeyCtrlAltDel(I4);
  property-get HotKeyCtrlAltDel: I4;
  property-put orderDrawThreshold(I4);
  property-get orderDrawThreshold: I4;
  property-put BitmapCacheSize(I4);
  property-get BitmapCacheSize: I4;
  property-put BitmapVirtualCacheSize(I4);
  property-get BitmapVirtualCacheSize: I4;
  property-put ScaleBitmapCachesByBPP(I4);
  property-get ScaleBitmapCachesByBPP: I4;
  property-put NumBitmapCaches(I4);
  property-get NumBitmapCaches: I4;
  property-put CachePersistenceActive(I4);
  property-get CachePersistenceActive: I4;
  property-put PersistCacheDirectory(BSTR);
  property-put brushSupportLevel(I4);
  property-get brushSupportLevel: I4;
  property-put minInputSendInterval(I4);
  property-get minInputSendInterval: I4;
  property-put InputEventsAtOnce(I4);
  property-get InputEventsAtOnce: I4;
  property-put maxEventCount(I4);
  property-get maxEventCount: I4;
  property-put keepAliveInterval(I4);
  property-get keepAliveInterval: I4;
  property-put shutdownTimeout(I4);
  property-get shutdownTimeout: I4;
  property-put overallConnectionTimeout(I4);
  property-get overallConnectionTimeout: I4;
  property-put singleConnectionTimeout(I4);
  property-get singleConnectionTimeout: I4;
  property-put KeyboardType(I4);
  property-get KeyboardType: I4;
  property-put KeyboardSubType(I4);
  property-get KeyboardSubType: I4;
  property-put KeyboardFunctionKey(I4);
  property-get KeyboardFunctionKey: I4;
  property-put WinceFixedPalette(I4);
  property-get WinceFixedPalette: I4;
  property-put ConnectToServerConsole(bool);
  property-get ConnectToServerConsole: bool;
  property-put BitmapPersistence(I4);
  property-get BitmapPersistence: I4;
  property-put MinutesToIdleTimeout(I4);
  property-get MinutesToIdleTimeout: I4;
  property-put SmartSizing(bool);
  property-get SmartSizing: bool;
  property-put RdpdrLocalPrintingDocName(BSTR);
  property-get RdpdrLocalPrintingDocName: BSTR;
  property-put RdpdrClipCleanTempDirString(BSTR);
  property-get RdpdrClipCleanTempDirString: BSTR;
  property-put RdpdrClipPasteInfoString(BSTR);
  property-get RdpdrClipPasteInfoString: BSTR;
  property-put ClearTextPassword(BSTR);
  property-put DisplayConnectionBar(bool);
  property-get DisplayConnectionBar: bool;
  property-put PinConnectionBar(bool);
  property-get PinConnectionBar: bool;
  property-put GrabFocusOnConnect(bool);
  property-get GrabFocusOnConnect: bool;
  property-put LoadBalanceInfo(BSTR);
  property-get LoadBalanceInfo: BSTR;
  property-put RedirectDrives(bool);
  property-get RedirectDrives: bool;
  property-put RedirectPrinters(bool);
  property-get RedirectPrinters: bool;
  property-put RedirectPorts(bool);
  property-get RedirectPorts: bool;
  property-put RedirectSmartCards(bool);
  property-get RedirectSmartCards: bool;
  property-put BitmapVirtualCache16BppSize(I4);
  property-get BitmapVirtualCache16BppSize: I4;
  property-put BitmapVirtualCache24BppSize(I4);
  property-get BitmapVirtualCache24BppSize: I4;
  property-put PerformanceFlags(I4);
  property-get PerformanceFlags: I4;
  property-put ConnectWithEndpoint(^variant);
  property-put NotifyTSPublicKey(bool);
  property-get NotifyTSPublicKey: bool;
  property-get CanAutoReconnect: bool;
  property-put EnableAutoReconnect(bool);
  property-get EnableAutoReconnect: bool;
  property-put MaxReconnectAttempts(I4);
  property-get MaxReconnectAttempts: I4;
  property-put ConnectionBarShowMinimizeButton(bool);
  property-get ConnectionBarShowMinimizeButton: bool;
  property-put ConnectionBarShowRestoreButton(bool);
  property-get ConnectionBarShowRestoreButton: bool;
  property-put AuthenticationLevel(UINT);
  property-get AuthenticationLevel: UINT;

Interface IMsRdpClientNonScriptable2;
GUID={17A5E535-4072-4FA4-AF32-C8D0D47345E9};
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;

Alias wireHWND;
  ^_RemotableHandle

Record _RemotableHandle;
  fContext: I4;
  u: __MIDL_IWinTypes_0009;

Union __MIDL_IWinTypes_0009;
  hInproc: I4;
  hRemote: I4;

Class MsRdpClient4; // Microsoft RDP Client Control (redistributable) - version 5
GUID={4EDCB26C-D24C-4E72-AF07-B576699AC0DE};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;

Class MsRdpClient4a; // Microsoft RDP Client Control (redistributable) - version 5a
GUID={54CE37E0-9834-41AE-9896-4DAB69DC022B};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;

Class MsRdpClient5NotSafeForScripting; // Microsoft RDP Client Control - version 6
GUID={4EB2F086-C818-447E-B32C-C51CE2B30D31};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;
  property-put ShowRedirectionWarningDialog(pfShowRdrDlg:bool): HResult;
  property-get ShowRedirectionWarningDialog(out pfShowRdrDlg:^bool): HResult;
  property-put PromptForCredentials(pfPrompt:bool): HResult;
  property-get PromptForCredentials(out pfPrompt:^bool): HResult;
  property-put NegotiateSecurityLayer(pfNegotiate:bool): HResult;
  property-get NegotiateSecurityLayer(out pfNegotiate:^bool): HResult;
  property-put EnableCredSspSupport(pfEnableSupport:bool): HResult;
  property-get EnableCredSspSupport(out pfEnableSupport:^bool): HResult;
  property-put RedirectDynamicDrives(pfRedirectDynamicDrives:bool): HResult;
  property-get RedirectDynamicDrives(out pfRedirectDynamicDrives:^bool): HResult;
  property-put RedirectDynamicDevices(pfRedirectDynamicDevices:bool): HResult;
  property-get RedirectDynamicDevices(out pfRedirectDynamicDevices:^bool): HResult;
  property-get DeviceCollection(out ppDeviceCollection:^^IMsRdpDeviceCollection): HResult;
  property-get DriveCollection(out ppDeviceCollection:^^IMsRdpDriveCollection): HResult;
  property-put WarnAboutSendingCredentials(pfWarn:bool): HResult;
  property-get WarnAboutSendingCredentials(out pfWarn:^bool): HResult;
  property-put WarnAboutClipboardRedirection(pfWarn:bool): HResult;
  property-get WarnAboutClipboardRedirection(out pfWarn:^bool): HResult;
  property-put ConnectionBarText(pConnectionBarText:BSTR): HResult;
  property-get ConnectionBarText(out pConnectionBarText:^BSTR): HResult;

Dispatch IMsRdpClient5;
GUID={4EB5335B-6429-477D-B922-E06A28ECD8BF};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;

Dispatch IMsRdpClientTransportSettings;
GUID={720298C0-A099-46F5-9F82-96921BAE4701};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put GatewayHostname(BSTR);
  property-get GatewayHostname: BSTR;
  property-put GatewayUsageMethod(UI4);
  property-get GatewayUsageMethod: UI4;
  property-put GatewayProfileUsageMethod(UI4);
  property-get GatewayProfileUsageMethod: UI4;
  property-put GatewayCredsSource(UI4);
  property-get GatewayCredsSource: UI4;
  property-put GatewayUserSelectedCredsSource(UI4);
  property-get GatewayUserSelectedCredsSource: UI4;
  property-get GatewayIsSupported: I4;
  property-get GatewayDefaultUsageMethod: UI4;

Dispatch IMsRdpClientAdvancedSettings5;
GUID={FBA7F64E-6783-4405-DA45-FA4A763DABD0};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Compress(I4);
  property-get Compress: I4;
  property-put BitmapPeristence(I4);
  property-get BitmapPeristence: I4;
  property-put allowBackgroundInput(I4);
  property-get allowBackgroundInput: I4;
  property-put KeyBoardLayoutStr(BSTR);
  property-put PluginDlls(BSTR);
  property-put IconFile(BSTR);
  property-put IconIndex(I4);
  property-put ContainerHandledFullScreen(I4);
  property-get ContainerHandledFullScreen: I4;
  property-put DisableRdpdr(I4);
  property-get DisableRdpdr: I4;
  property-put SmoothScroll(I4);
  property-get SmoothScroll: I4;
  property-put AcceleratorPassthrough(I4);
  property-get AcceleratorPassthrough: I4;
  property-put ShadowBitmap(I4);
  property-get ShadowBitmap: I4;
  property-put TransportType(I4);
  property-get TransportType: I4;
  property-put SasSequence(I4);
  property-get SasSequence: I4;
  property-put EncryptionEnabled(I4);
  property-get EncryptionEnabled: I4;
  property-put DedicatedTerminal(I4);
  property-get DedicatedTerminal: I4;
  property-put RDPPort(I4);
  property-get RDPPort: I4;
  property-put EnableMouse(I4);
  property-get EnableMouse: I4;
  property-put DisableCtrlAltDel(I4);
  property-get DisableCtrlAltDel: I4;
  property-put EnableWindowsKey(I4);
  property-get EnableWindowsKey: I4;
  property-put DoubleClickDetect(I4);
  property-get DoubleClickDetect: I4;
  property-put MaximizeShell(I4);
  property-get MaximizeShell: I4;
  property-put HotKeyFullScreen(I4);
  property-get HotKeyFullScreen: I4;
  property-put HotKeyCtrlEsc(I4);
  property-get HotKeyCtrlEsc: I4;
  property-put HotKeyAltEsc(I4);
  property-get HotKeyAltEsc: I4;
  property-put HotKeyAltTab(I4);
  property-get HotKeyAltTab: I4;
  property-put HotKeyAltShiftTab(I4);
  property-get HotKeyAltShiftTab: I4;
  property-put HotKeyAltSpace(I4);
  property-get HotKeyAltSpace: I4;
  property-put HotKeyCtrlAltDel(I4);
  property-get HotKeyCtrlAltDel: I4;
  property-put orderDrawThreshold(I4);
  property-get orderDrawThreshold: I4;
  property-put BitmapCacheSize(I4);
  property-get BitmapCacheSize: I4;
  property-put BitmapVirtualCacheSize(I4);
  property-get BitmapVirtualCacheSize: I4;
  property-put ScaleBitmapCachesByBPP(I4);
  property-get ScaleBitmapCachesByBPP: I4;
  property-put NumBitmapCaches(I4);
  property-get NumBitmapCaches: I4;
  property-put CachePersistenceActive(I4);
  property-get CachePersistenceActive: I4;
  property-put PersistCacheDirectory(BSTR);
  property-put brushSupportLevel(I4);
  property-get brushSupportLevel: I4;
  property-put minInputSendInterval(I4);
  property-get minInputSendInterval: I4;
  property-put InputEventsAtOnce(I4);
  property-get InputEventsAtOnce: I4;
  property-put maxEventCount(I4);
  property-get maxEventCount: I4;
  property-put keepAliveInterval(I4);
  property-get keepAliveInterval: I4;
  property-put shutdownTimeout(I4);
  property-get shutdownTimeout: I4;
  property-put overallConnectionTimeout(I4);
  property-get overallConnectionTimeout: I4;
  property-put singleConnectionTimeout(I4);
  property-get singleConnectionTimeout: I4;
  property-put KeyboardType(I4);
  property-get KeyboardType: I4;
  property-put KeyboardSubType(I4);
  property-get KeyboardSubType: I4;
  property-put KeyboardFunctionKey(I4);
  property-get KeyboardFunctionKey: I4;
  property-put WinceFixedPalette(I4);
  property-get WinceFixedPalette: I4;
  property-put ConnectToServerConsole(bool);
  property-get ConnectToServerConsole: bool;
  property-put BitmapPersistence(I4);
  property-get BitmapPersistence: I4;
  property-put MinutesToIdleTimeout(I4);
  property-get MinutesToIdleTimeout: I4;
  property-put SmartSizing(bool);
  property-get SmartSizing: bool;
  property-put RdpdrLocalPrintingDocName(BSTR);
  property-get RdpdrLocalPrintingDocName: BSTR;
  property-put RdpdrClipCleanTempDirString(BSTR);
  property-get RdpdrClipCleanTempDirString: BSTR;
  property-put RdpdrClipPasteInfoString(BSTR);
  property-get RdpdrClipPasteInfoString: BSTR;
  property-put ClearTextPassword(BSTR);
  property-put DisplayConnectionBar(bool);
  property-get DisplayConnectionBar: bool;
  property-put PinConnectionBar(bool);
  property-get PinConnectionBar: bool;
  property-put GrabFocusOnConnect(bool);
  property-get GrabFocusOnConnect: bool;
  property-put LoadBalanceInfo(BSTR);
  property-get LoadBalanceInfo: BSTR;
  property-put RedirectDrives(bool);
  property-get RedirectDrives: bool;
  property-put RedirectPrinters(bool);
  property-get RedirectPrinters: bool;
  property-put RedirectPorts(bool);
  property-get RedirectPorts: bool;
  property-put RedirectSmartCards(bool);
  property-get RedirectSmartCards: bool;
  property-put BitmapVirtualCache16BppSize(I4);
  property-get BitmapVirtualCache16BppSize: I4;
  property-put BitmapVirtualCache24BppSize(I4);
  property-get BitmapVirtualCache24BppSize: I4;
  property-put PerformanceFlags(I4);
  property-get PerformanceFlags: I4;
  property-put ConnectWithEndpoint(^variant);
  property-put NotifyTSPublicKey(bool);
  property-get NotifyTSPublicKey: bool;
  property-get CanAutoReconnect: bool;
  property-put EnableAutoReconnect(bool);
  property-get EnableAutoReconnect: bool;
  property-put MaxReconnectAttempts(I4);
  property-get MaxReconnectAttempts: I4;
  property-put ConnectionBarShowMinimizeButton(bool);
  property-get ConnectionBarShowMinimizeButton: bool;
  property-put ConnectionBarShowRestoreButton(bool);
  property-get ConnectionBarShowRestoreButton: bool;
  property-put AuthenticationLevel(UINT);
  property-get AuthenticationLevel: UINT;
  property-put RedirectClipboard(bool);
  property-get RedirectClipboard: bool;
  property-put AudioRedirectionMode(UINT);
  property-get AudioRedirectionMode: UINT;
  property-put ConnectionBarShowPinButton(bool);
  property-get ConnectionBarShowPinButton: bool;
  property-put PublicMode(bool);
  property-get PublicMode: bool;
  property-put RedirectDevices(bool);
  property-get RedirectDevices: bool;
  property-put RedirectPOSDevices(bool);
  property-get RedirectPOSDevices: bool;
  property-put BitmapVirtualCache32BppSize(I4);
  property-get BitmapVirtualCache32BppSize: I4;

Dispatch ITSRemoteProgram;
GUID={FDD029F9-467A-4C49-8529-64B521DBD1B4};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put RemoteProgramMode(bool);
  property-get RemoteProgramMode: bool;
  function ServerStartProgram(bstrExecutablePath:BSTR; bstrFilePath:BSTR; bstrWorkingDirectory:BSTR; vbExpandEnvVarInWorkingDirectoryOnServer:bool; bstrArguments:BSTR; vbExpandEnvVarInArgumentsOnServer:bool);

Dispatch IMsRdpClientShell;
GUID={D012AE6D-C19A-4BFE-B367-201F8911F134};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function Launch;
  property-put RdpFileContents(BSTR);
  property-get RdpFileContents: BSTR;
  function SetRdpProperty(szProperty:BSTR; Value:variant);
  function GetRdpProperty(szProperty:BSTR): variant;
  property-get IsRemoteProgramClientInstalled: bool;
  property-put PublicMode(bool);
  property-get PublicMode: bool;
  function ShowTrustedSitesManagementDialog;

Interface IMsRdpClientNonScriptable3;
GUID={B3378D90-0728-45C7-8ED7-B6159FB92219};
  property-put ShowRedirectionWarningDialog(pfShowRdrDlg:bool): HResult;
  property-get ShowRedirectionWarningDialog(out pfShowRdrDlg:^bool): HResult;
  property-put PromptForCredentials(pfPrompt:bool): HResult;
  property-get PromptForCredentials(out pfPrompt:^bool): HResult;
  property-put NegotiateSecurityLayer(pfNegotiate:bool): HResult;
  property-get NegotiateSecurityLayer(out pfNegotiate:^bool): HResult;
  property-put EnableCredSspSupport(pfEnableSupport:bool): HResult;
  property-get EnableCredSspSupport(out pfEnableSupport:^bool): HResult;
  property-put RedirectDynamicDrives(pfRedirectDynamicDrives:bool): HResult;
  property-get RedirectDynamicDrives(out pfRedirectDynamicDrives:^bool): HResult;
  property-put RedirectDynamicDevices(pfRedirectDynamicDevices:bool): HResult;
  property-get RedirectDynamicDevices(out pfRedirectDynamicDevices:^bool): HResult;
  property-get DeviceCollection(out ppDeviceCollection:^^IMsRdpDeviceCollection): HResult;
  property-get DriveCollection(out ppDeviceCollection:^^IMsRdpDriveCollection): HResult;
  property-put WarnAboutSendingCredentials(pfWarn:bool): HResult;
  property-get WarnAboutSendingCredentials(out pfWarn:^bool): HResult;
  property-put WarnAboutClipboardRedirection(pfWarn:bool): HResult;
  property-get WarnAboutClipboardRedirection(out pfWarn:^bool): HResult;
  property-put ConnectionBarText(pConnectionBarText:BSTR): HResult;
  property-get ConnectionBarText(out pConnectionBarText:^BSTR): HResult;

Interface IMsRdpDeviceCollection;
GUID={56540617-D281-488C-8738-6A8FDF64A118};
  function RescanDevices(vboolDynRedir:bool): HResult;
  property-get DeviceByIndex(index:UI4; out ppDevice:^^IMsRdpDevice): HResult;
  property-get DeviceById(devInstanceId:BSTR; out ppDevice:^^IMsRdpDevice): HResult;
  property-get DeviceCount(out pDeviceCount:^UI4): HResult;

Interface IMsRdpDevice;
GUID={60C3B9C8-9E92-4F5E-A3E7-604A912093EA};
  property-get DeviceInstanceId(out pDevInstanceId:^BSTR): HResult;
  property-get FriendlyName(out pFriendlyName:^BSTR): HResult;
  property-get DeviceDescription(out pDeviceDescription:^BSTR): HResult;
  property-put RedirectionState(pvboolRedirState:bool): HResult;
  property-get RedirectionState(out pvboolRedirState:^bool): HResult;

Interface IMsRdpDriveCollection;
GUID={7FF17599-DA2C-4677-AD35-F60C04FE1585};
  function RescanDrives(vboolDynRedir:bool): HResult;
  property-get DriveByIndex(index:UI4; out ppDevice:^^IMsRdpDrive): HResult;
  property-get DriveCount(out pDriveCount:^UI4): HResult;

Interface IMsRdpDrive;
GUID={D28B5458-F694-47A8-8E61-40356A767E46};
  property-get Name(out pName:^BSTR): HResult;
  property-put RedirectionState(pvboolRedirState:bool): HResult;
  property-get RedirectionState(out pvboolRedirState:^bool): HResult;

Class MsRdpClient5; // Microsoft RDP Client Control (redistributable) - version 6
GUID={4EB89FF4-7F78-4A0F-8B8D-2BF02E94E4B2};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;
  property-put ShowRedirectionWarningDialog(pfShowRdrDlg:bool): HResult;
  property-get ShowRedirectionWarningDialog(out pfShowRdrDlg:^bool): HResult;
  property-put PromptForCredentials(pfPrompt:bool): HResult;
  property-get PromptForCredentials(out pfPrompt:^bool): HResult;
  property-put NegotiateSecurityLayer(pfNegotiate:bool): HResult;
  property-get NegotiateSecurityLayer(out pfNegotiate:^bool): HResult;
  property-put EnableCredSspSupport(pfEnableSupport:bool): HResult;
  property-get EnableCredSspSupport(out pfEnableSupport:^bool): HResult;
  property-put RedirectDynamicDrives(pfRedirectDynamicDrives:bool): HResult;
  property-get RedirectDynamicDrives(out pfRedirectDynamicDrives:^bool): HResult;
  property-put RedirectDynamicDevices(pfRedirectDynamicDevices:bool): HResult;
  property-get RedirectDynamicDevices(out pfRedirectDynamicDevices:^bool): HResult;
  property-get DeviceCollection(out ppDeviceCollection:^^IMsRdpDeviceCollection): HResult;
  property-get DriveCollection(out ppDeviceCollection:^^IMsRdpDriveCollection): HResult;
  property-put WarnAboutSendingCredentials(pfWarn:bool): HResult;
  property-get WarnAboutSendingCredentials(out pfWarn:^bool): HResult;
  property-put WarnAboutClipboardRedirection(pfWarn:bool): HResult;
  property-get WarnAboutClipboardRedirection(out pfWarn:^bool): HResult;
  property-put ConnectionBarText(pConnectionBarText:BSTR): HResult;
  property-get ConnectionBarText(out pConnectionBarText:^BSTR): HResult;

Class MsRdpClient6NotSafeForScripting; // Microsoft RDP Client Control - version 7
GUID={D2EA46A7-C2BF-426B-AF24-E19C44456399};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  property-get AdvancedSettings7: ^IMsRdpClientAdvancedSettings6;
  property-get TransportSettings2: ^IMsRdpClientTransportSettings2;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;
  property-put ShowRedirectionWarningDialog(pfShowRdrDlg:bool): HResult;
  property-get ShowRedirectionWarningDialog(out pfShowRdrDlg:^bool): HResult;
  property-put PromptForCredentials(pfPrompt:bool): HResult;
  property-get PromptForCredentials(out pfPrompt:^bool): HResult;
  property-put NegotiateSecurityLayer(pfNegotiate:bool): HResult;
  property-get NegotiateSecurityLayer(out pfNegotiate:^bool): HResult;
  property-put EnableCredSspSupport(pfEnableSupport:bool): HResult;
  property-get EnableCredSspSupport(out pfEnableSupport:^bool): HResult;
  property-put RedirectDynamicDrives(pfRedirectDynamicDrives:bool): HResult;
  property-get RedirectDynamicDrives(out pfRedirectDynamicDrives:^bool): HResult;
  property-put RedirectDynamicDevices(pfRedirectDynamicDevices:bool): HResult;
  property-get RedirectDynamicDevices(out pfRedirectDynamicDevices:^bool): HResult;
  property-get DeviceCollection(out ppDeviceCollection:^^IMsRdpDeviceCollection): HResult;
  property-get DriveCollection(out ppDeviceCollection:^^IMsRdpDriveCollection): HResult;
  property-put WarnAboutSendingCredentials(pfWarn:bool): HResult;
  property-get WarnAboutSendingCredentials(out pfWarn:^bool): HResult;
  property-put WarnAboutClipboardRedirection(pfWarn:bool): HResult;
  property-get WarnAboutClipboardRedirection(out pfWarn:^bool): HResult;
  property-put ConnectionBarText(pConnectionBarText:BSTR): HResult;
  property-get ConnectionBarText(out pConnectionBarText:^BSTR): HResult;
  property-put RedirectionWarningType(pWrnType:RedirectionWarningType): HResult;
  property-get RedirectionWarningType(out pWrnType:^RedirectionWarningType): HResult;
  property-put MarkRdpSettingsSecure(pfRdpSecure:bool): HResult;
  property-get MarkRdpSettingsSecure(out pfRdpSecure:^bool): HResult;
  property-put PublisherCertificateChain(pVarCert:^variant): HResult;
  property-get PublisherCertificateChain(out pVarCert:^variant): HResult;
  property-put WarnAboutPrinterRedirection(pfWarn:bool): HResult;
  property-get WarnAboutPrinterRedirection(out pfWarn:^bool): HResult;
  property-put AllowCredentialSaving(pfAllowSave:bool): HResult;
  property-get AllowCredentialSaving(out pfAllowSave:^bool): HResult;
  property-put PromptForCredsOnClient(pfPromptForCredsOnClient:bool): HResult;
  property-get PromptForCredsOnClient(out pfPromptForCredsOnClient:^bool): HResult;
  property-put LaunchedViaClientShellInterface(pfLaunchedViaClientShellInterface:bool): HResult;
  property-get LaunchedViaClientShellInterface(out pfLaunchedViaClientShellInterface:^bool): HResult;
  property-put TrustedZoneSite(pfIsTrustedZone:bool): HResult;
  property-get TrustedZoneSite(out pfIsTrustedZone:^bool): HResult;

Dispatch IMsRdpClient6;
GUID={D43B7D80-8517-4B6D-9EAC-96AD6800D7F2};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  property-get AdvancedSettings7: ^IMsRdpClientAdvancedSettings6;
  property-get TransportSettings2: ^IMsRdpClientTransportSettings2;

Dispatch IMsRdpClientAdvancedSettings6;
GUID={222C4B5D-45D9-4DF0-A7C6-60CF9089D285};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Compress(I4);
  property-get Compress: I4;
  property-put BitmapPeristence(I4);
  property-get BitmapPeristence: I4;
  property-put allowBackgroundInput(I4);
  property-get allowBackgroundInput: I4;
  property-put KeyBoardLayoutStr(BSTR);
  property-put PluginDlls(BSTR);
  property-put IconFile(BSTR);
  property-put IconIndex(I4);
  property-put ContainerHandledFullScreen(I4);
  property-get ContainerHandledFullScreen: I4;
  property-put DisableRdpdr(I4);
  property-get DisableRdpdr: I4;
  property-put SmoothScroll(I4);
  property-get SmoothScroll: I4;
  property-put AcceleratorPassthrough(I4);
  property-get AcceleratorPassthrough: I4;
  property-put ShadowBitmap(I4);
  property-get ShadowBitmap: I4;
  property-put TransportType(I4);
  property-get TransportType: I4;
  property-put SasSequence(I4);
  property-get SasSequence: I4;
  property-put EncryptionEnabled(I4);
  property-get EncryptionEnabled: I4;
  property-put DedicatedTerminal(I4);
  property-get DedicatedTerminal: I4;
  property-put RDPPort(I4);
  property-get RDPPort: I4;
  property-put EnableMouse(I4);
  property-get EnableMouse: I4;
  property-put DisableCtrlAltDel(I4);
  property-get DisableCtrlAltDel: I4;
  property-put EnableWindowsKey(I4);
  property-get EnableWindowsKey: I4;
  property-put DoubleClickDetect(I4);
  property-get DoubleClickDetect: I4;
  property-put MaximizeShell(I4);
  property-get MaximizeShell: I4;
  property-put HotKeyFullScreen(I4);
  property-get HotKeyFullScreen: I4;
  property-put HotKeyCtrlEsc(I4);
  property-get HotKeyCtrlEsc: I4;
  property-put HotKeyAltEsc(I4);
  property-get HotKeyAltEsc: I4;
  property-put HotKeyAltTab(I4);
  property-get HotKeyAltTab: I4;
  property-put HotKeyAltShiftTab(I4);
  property-get HotKeyAltShiftTab: I4;
  property-put HotKeyAltSpace(I4);
  property-get HotKeyAltSpace: I4;
  property-put HotKeyCtrlAltDel(I4);
  property-get HotKeyCtrlAltDel: I4;
  property-put orderDrawThreshold(I4);
  property-get orderDrawThreshold: I4;
  property-put BitmapCacheSize(I4);
  property-get BitmapCacheSize: I4;
  property-put BitmapVirtualCacheSize(I4);
  property-get BitmapVirtualCacheSize: I4;
  property-put ScaleBitmapCachesByBPP(I4);
  property-get ScaleBitmapCachesByBPP: I4;
  property-put NumBitmapCaches(I4);
  property-get NumBitmapCaches: I4;
  property-put CachePersistenceActive(I4);
  property-get CachePersistenceActive: I4;
  property-put PersistCacheDirectory(BSTR);
  property-put brushSupportLevel(I4);
  property-get brushSupportLevel: I4;
  property-put minInputSendInterval(I4);
  property-get minInputSendInterval: I4;
  property-put InputEventsAtOnce(I4);
  property-get InputEventsAtOnce: I4;
  property-put maxEventCount(I4);
  property-get maxEventCount: I4;
  property-put keepAliveInterval(I4);
  property-get keepAliveInterval: I4;
  property-put shutdownTimeout(I4);
  property-get shutdownTimeout: I4;
  property-put overallConnectionTimeout(I4);
  property-get overallConnectionTimeout: I4;
  property-put singleConnectionTimeout(I4);
  property-get singleConnectionTimeout: I4;
  property-put KeyboardType(I4);
  property-get KeyboardType: I4;
  property-put KeyboardSubType(I4);
  property-get KeyboardSubType: I4;
  property-put KeyboardFunctionKey(I4);
  property-get KeyboardFunctionKey: I4;
  property-put WinceFixedPalette(I4);
  property-get WinceFixedPalette: I4;
  property-put ConnectToServerConsole(bool);
  property-get ConnectToServerConsole: bool;
  property-put BitmapPersistence(I4);
  property-get BitmapPersistence: I4;
  property-put MinutesToIdleTimeout(I4);
  property-get MinutesToIdleTimeout: I4;
  property-put SmartSizing(bool);
  property-get SmartSizing: bool;
  property-put RdpdrLocalPrintingDocName(BSTR);
  property-get RdpdrLocalPrintingDocName: BSTR;
  property-put RdpdrClipCleanTempDirString(BSTR);
  property-get RdpdrClipCleanTempDirString: BSTR;
  property-put RdpdrClipPasteInfoString(BSTR);
  property-get RdpdrClipPasteInfoString: BSTR;
  property-put ClearTextPassword(BSTR);
  property-put DisplayConnectionBar(bool);
  property-get DisplayConnectionBar: bool;
  property-put PinConnectionBar(bool);
  property-get PinConnectionBar: bool;
  property-put GrabFocusOnConnect(bool);
  property-get GrabFocusOnConnect: bool;
  property-put LoadBalanceInfo(BSTR);
  property-get LoadBalanceInfo: BSTR;
  property-put RedirectDrives(bool);
  property-get RedirectDrives: bool;
  property-put RedirectPrinters(bool);
  property-get RedirectPrinters: bool;
  property-put RedirectPorts(bool);
  property-get RedirectPorts: bool;
  property-put RedirectSmartCards(bool);
  property-get RedirectSmartCards: bool;
  property-put BitmapVirtualCache16BppSize(I4);
  property-get BitmapVirtualCache16BppSize: I4;
  property-put BitmapVirtualCache24BppSize(I4);
  property-get BitmapVirtualCache24BppSize: I4;
  property-put PerformanceFlags(I4);
  property-get PerformanceFlags: I4;
  property-put ConnectWithEndpoint(^variant);
  property-put NotifyTSPublicKey(bool);
  property-get NotifyTSPublicKey: bool;
  property-get CanAutoReconnect: bool;
  property-put EnableAutoReconnect(bool);
  property-get EnableAutoReconnect: bool;
  property-put MaxReconnectAttempts(I4);
  property-get MaxReconnectAttempts: I4;
  property-put ConnectionBarShowMinimizeButton(bool);
  property-get ConnectionBarShowMinimizeButton: bool;
  property-put ConnectionBarShowRestoreButton(bool);
  property-get ConnectionBarShowRestoreButton: bool;
  property-put AuthenticationLevel(UINT);
  property-get AuthenticationLevel: UINT;
  property-put RedirectClipboard(bool);
  property-get RedirectClipboard: bool;
  property-put AudioRedirectionMode(UINT);
  property-get AudioRedirectionMode: UINT;
  property-put ConnectionBarShowPinButton(bool);
  property-get ConnectionBarShowPinButton: bool;
  property-put PublicMode(bool);
  property-get PublicMode: bool;
  property-put RedirectDevices(bool);
  property-get RedirectDevices: bool;
  property-put RedirectPOSDevices(bool);
  property-get RedirectPOSDevices: bool;
  property-put BitmapVirtualCache32BppSize(I4);
  property-get BitmapVirtualCache32BppSize: I4;
  property-put RelativeMouseMode(bool);
  property-get RelativeMouseMode: bool;
  property-get AuthenticationServiceClass: BSTR;
  property-put AuthenticationServiceClass(BSTR);
  property-get PCB: BSTR;
  property-put PCB(BSTR);
  property-put HotKeyFocusReleaseLeft(I4);
  property-get HotKeyFocusReleaseLeft: I4;
  property-put HotKeyFocusReleaseRight(I4);
  property-get HotKeyFocusReleaseRight: I4;
  property-put EnableCredSspSupport(bool);
  property-get EnableCredSspSupport: bool;
  property-get AuthenticationType: UINT;
  property-put ConnectToAdministerServer(bool);
  property-get ConnectToAdministerServer: bool;

Dispatch IMsRdpClientTransportSettings2;
GUID={67341688-D606-4C73-A5D2-2E0489009319};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put GatewayHostname(BSTR);
  property-get GatewayHostname: BSTR;
  property-put GatewayUsageMethod(UI4);
  property-get GatewayUsageMethod: UI4;
  property-put GatewayProfileUsageMethod(UI4);
  property-get GatewayProfileUsageMethod: UI4;
  property-put GatewayCredsSource(UI4);
  property-get GatewayCredsSource: UI4;
  property-put GatewayUserSelectedCredsSource(UI4);
  property-get GatewayUserSelectedCredsSource: UI4;
  property-get GatewayIsSupported: I4;
  property-get GatewayDefaultUsageMethod: UI4;
  property-put GatewayCredSharing(UI4);
  property-get GatewayCredSharing: UI4;
  property-put GatewayPreAuthRequirement(UI4);
  property-get GatewayPreAuthRequirement: UI4;
  property-put GatewayPreAuthServerAddr(BSTR);
  property-get GatewayPreAuthServerAddr: BSTR;
  property-put GatewaySupportUrl(BSTR);
  property-get GatewaySupportUrl: BSTR;
  property-put GatewayEncryptedOtpCookie(BSTR);
  property-get GatewayEncryptedOtpCookie: BSTR;
  property-put GatewayEncryptedOtpCookieSize(UI4);
  property-get GatewayEncryptedOtpCookieSize: UI4;
  property-put GatewayUsername(BSTR);
  property-get GatewayUsername: BSTR;
  property-put GatewayDomain(BSTR);
  property-get GatewayDomain: BSTR;
  property-put GatewayPassword(BSTR);

Interface IMsRdpClientNonScriptable4;
GUID={F50FA8AA-1C7D-4F59-B15C-A90CACAE1FCB};
  property-put RedirectionWarningType(pWrnType:RedirectionWarningType): HResult;
  property-get RedirectionWarningType(out pWrnType:^RedirectionWarningType): HResult;
  property-put MarkRdpSettingsSecure(pfRdpSecure:bool): HResult;
  property-get MarkRdpSettingsSecure(out pfRdpSecure:^bool): HResult;
  property-put PublisherCertificateChain(pVarCert:^variant): HResult;
  property-get PublisherCertificateChain(out pVarCert:^variant): HResult;
  property-put WarnAboutPrinterRedirection(pfWarn:bool): HResult;
  property-get WarnAboutPrinterRedirection(out pfWarn:^bool): HResult;
  property-put AllowCredentialSaving(pfAllowSave:bool): HResult;
  property-get AllowCredentialSaving(out pfAllowSave:^bool): HResult;
  property-put PromptForCredsOnClient(pfPromptForCredsOnClient:bool): HResult;
  property-get PromptForCredsOnClient(out pfPromptForCredsOnClient:^bool): HResult;
  property-put LaunchedViaClientShellInterface(pfLaunchedViaClientShellInterface:bool): HResult;
  property-get LaunchedViaClientShellInterface(out pfLaunchedViaClientShellInterface:^bool): HResult;
  property-put TrustedZoneSite(pfIsTrustedZone:bool): HResult;
  property-get TrustedZoneSite(out pfIsTrustedZone:^bool): HResult;

Alias RedirectionWarningType;
  __MIDL_IMsRdpClientNonScriptable4_0001

Enum __MIDL_IMsRdpClientNonScriptable4_0001;
  RedirectionWarningTypeDefault = 0;
  RedirectionWarningTypeUnsigned = 1;
  RedirectionWarningTypeUnknown = 2;
  RedirectionWarningTypeUser = 3;
  RedirectionWarningTypeThirdPartySigned = 4;
  RedirectionWarningTypeTrusted = 5;
  RedirectionWarningTypeMax = 5;

Class MsRdpClient6; // Microsoft RDP Client Control (redistributable) - version 7
GUID={7390F3D8-0439-4C05-91E3-CF5CB290C3D0};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  property-get AdvancedSettings7: ^IMsRdpClientAdvancedSettings6;
  property-get TransportSettings2: ^IMsRdpClientTransportSettings2;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;
  property-put ShowRedirectionWarningDialog(pfShowRdrDlg:bool): HResult;
  property-get ShowRedirectionWarningDialog(out pfShowRdrDlg:^bool): HResult;
  property-put PromptForCredentials(pfPrompt:bool): HResult;
  property-get PromptForCredentials(out pfPrompt:^bool): HResult;
  property-put NegotiateSecurityLayer(pfNegotiate:bool): HResult;
  property-get NegotiateSecurityLayer(out pfNegotiate:^bool): HResult;
  property-put EnableCredSspSupport(pfEnableSupport:bool): HResult;
  property-get EnableCredSspSupport(out pfEnableSupport:^bool): HResult;
  property-put RedirectDynamicDrives(pfRedirectDynamicDrives:bool): HResult;
  property-get RedirectDynamicDrives(out pfRedirectDynamicDrives:^bool): HResult;
  property-put RedirectDynamicDevices(pfRedirectDynamicDevices:bool): HResult;
  property-get RedirectDynamicDevices(out pfRedirectDynamicDevices:^bool): HResult;
  property-get DeviceCollection(out ppDeviceCollection:^^IMsRdpDeviceCollection): HResult;
  property-get DriveCollection(out ppDeviceCollection:^^IMsRdpDriveCollection): HResult;
  property-put WarnAboutSendingCredentials(pfWarn:bool): HResult;
  property-get WarnAboutSendingCredentials(out pfWarn:^bool): HResult;
  property-put WarnAboutClipboardRedirection(pfWarn:bool): HResult;
  property-get WarnAboutClipboardRedirection(out pfWarn:^bool): HResult;
  property-put ConnectionBarText(pConnectionBarText:BSTR): HResult;
  property-get ConnectionBarText(out pConnectionBarText:^BSTR): HResult;
  property-put RedirectionWarningType(pWrnType:RedirectionWarningType): HResult;
  property-get RedirectionWarningType(out pWrnType:^RedirectionWarningType): HResult;
  property-put MarkRdpSettingsSecure(pfRdpSecure:bool): HResult;
  property-get MarkRdpSettingsSecure(out pfRdpSecure:^bool): HResult;
  property-put PublisherCertificateChain(pVarCert:^variant): HResult;
  property-get PublisherCertificateChain(out pVarCert:^variant): HResult;
  property-put WarnAboutPrinterRedirection(pfWarn:bool): HResult;
  property-get WarnAboutPrinterRedirection(out pfWarn:^bool): HResult;
  property-put AllowCredentialSaving(pfAllowSave:bool): HResult;
  property-get AllowCredentialSaving(out pfAllowSave:^bool): HResult;
  property-put PromptForCredsOnClient(pfPromptForCredsOnClient:bool): HResult;
  property-get PromptForCredsOnClient(out pfPromptForCredsOnClient:^bool): HResult;
  property-put LaunchedViaClientShellInterface(pfLaunchedViaClientShellInterface:bool): HResult;
  property-get LaunchedViaClientShellInterface(out pfLaunchedViaClientShellInterface:^bool): HResult;
  property-put TrustedZoneSite(pfIsTrustedZone:bool): HResult;
  property-get TrustedZoneSite(out pfIsTrustedZone:^bool): HResult;

Class MsRdpClient7NotSafeForScripting; // Microsoft RDP Client Control - version 8
GUID={54D38BF7-B1EF-4479-9674-1BD6EA465258};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  property-get AdvancedSettings7: ^IMsRdpClientAdvancedSettings6;
  property-get TransportSettings2: ^IMsRdpClientTransportSettings2;
  property-get AdvancedSettings8: ^IMsRdpClientAdvancedSettings7;
  property-get TransportSettings3: ^IMsRdpClientTransportSettings3;
  function GetStatusText(statusCode:UINT): BSTR;
  property-get SecuredSettings3: ^IMsRdpClientSecuredSettings2;
  property-get RemoteProgram2: ^ITSRemoteProgram2;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  property-get AdvancedSettings7: ^IMsRdpClientAdvancedSettings6;
  property-get TransportSettings2: ^IMsRdpClientTransportSettings2;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;
  property-put ShowRedirectionWarningDialog(pfShowRdrDlg:bool): HResult;
  property-get ShowRedirectionWarningDialog(out pfShowRdrDlg:^bool): HResult;
  property-put PromptForCredentials(pfPrompt:bool): HResult;
  property-get PromptForCredentials(out pfPrompt:^bool): HResult;
  property-put NegotiateSecurityLayer(pfNegotiate:bool): HResult;
  property-get NegotiateSecurityLayer(out pfNegotiate:^bool): HResult;
  property-put EnableCredSspSupport(pfEnableSupport:bool): HResult;
  property-get EnableCredSspSupport(out pfEnableSupport:^bool): HResult;
  property-put RedirectDynamicDrives(pfRedirectDynamicDrives:bool): HResult;
  property-get RedirectDynamicDrives(out pfRedirectDynamicDrives:^bool): HResult;
  property-put RedirectDynamicDevices(pfRedirectDynamicDevices:bool): HResult;
  property-get RedirectDynamicDevices(out pfRedirectDynamicDevices:^bool): HResult;
  property-get DeviceCollection(out ppDeviceCollection:^^IMsRdpDeviceCollection): HResult;
  property-get DriveCollection(out ppDeviceCollection:^^IMsRdpDriveCollection): HResult;
  property-put WarnAboutSendingCredentials(pfWarn:bool): HResult;
  property-get WarnAboutSendingCredentials(out pfWarn:^bool): HResult;
  property-put WarnAboutClipboardRedirection(pfWarn:bool): HResult;
  property-get WarnAboutClipboardRedirection(out pfWarn:^bool): HResult;
  property-put ConnectionBarText(pConnectionBarText:BSTR): HResult;
  property-get ConnectionBarText(out pConnectionBarText:^BSTR): HResult;
  property-put RedirectionWarningType(pWrnType:RedirectionWarningType): HResult;
  property-get RedirectionWarningType(out pWrnType:^RedirectionWarningType): HResult;
  property-put MarkRdpSettingsSecure(pfRdpSecure:bool): HResult;
  property-get MarkRdpSettingsSecure(out pfRdpSecure:^bool): HResult;
  property-put PublisherCertificateChain(pVarCert:^variant): HResult;
  property-get PublisherCertificateChain(out pVarCert:^variant): HResult;
  property-put WarnAboutPrinterRedirection(pfWarn:bool): HResult;
  property-get WarnAboutPrinterRedirection(out pfWarn:^bool): HResult;
  property-put AllowCredentialSaving(pfAllowSave:bool): HResult;
  property-get AllowCredentialSaving(out pfAllowSave:^bool): HResult;
  property-put PromptForCredsOnClient(pfPromptForCredsOnClient:bool): HResult;
  property-get PromptForCredsOnClient(out pfPromptForCredsOnClient:^bool): HResult;
  property-put LaunchedViaClientShellInterface(pfLaunchedViaClientShellInterface:bool): HResult;
  property-get LaunchedViaClientShellInterface(out pfLaunchedViaClientShellInterface:^bool): HResult;
  property-put TrustedZoneSite(pfIsTrustedZone:bool): HResult;
  property-get TrustedZoneSite(out pfIsTrustedZone:^bool): HResult;
  property-put UseMultimon(pfUseMultimon:bool): HResult;
  property-get UseMultimon(out pfUseMultimon:^bool): HResult;
  property-get RemoteMonitorCount(out pcRemoteMonitors:^UI4): HResult;
  function GetRemoteMonitorsBoundingBox(out pLeft:^I4; out pTop:^I4; out pRight:^I4; out pBottom:^I4): HResult;
  property-get RemoteMonitorLayoutMatchesLocal(out pfRemoteMatchesLocal:^bool): HResult;
  property-put DisableConnectionBar(bool): HResult;
  property-put DisableRemoteAppCapsCheck(pfDisableRemoteAppCapsCheck:bool): HResult;
  property-get DisableRemoteAppCapsCheck(out pfDisableRemoteAppCapsCheck:^bool): HResult;
  property-put WarnAboutDirectXRedirection(pfWarn:bool): HResult;
  property-get WarnAboutDirectXRedirection(out pfWarn:^bool): HResult;
  property-put AllowPromptingForCredentials(pfAllow:bool): HResult;
  property-get AllowPromptingForCredentials(out pfAllow:^bool): HResult;
  property-put UseRedirectionServerName(pVal:bool): HResult;
  property-get UseRedirectionServerName(out pVal:^bool): HResult;

Dispatch IMsRdpClient7;
GUID={B2A5B5CE-3461-444A-91D4-ADD26D070638};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  property-get AdvancedSettings7: ^IMsRdpClientAdvancedSettings6;
  property-get TransportSettings2: ^IMsRdpClientTransportSettings2;
  property-get AdvancedSettings8: ^IMsRdpClientAdvancedSettings7;
  property-get TransportSettings3: ^IMsRdpClientTransportSettings3;
  function GetStatusText(statusCode:UINT): BSTR;
  property-get SecuredSettings3: ^IMsRdpClientSecuredSettings2;
  property-get RemoteProgram2: ^ITSRemoteProgram2;

Dispatch IMsRdpClientAdvancedSettings7;
GUID={26036036-4010-4578-8091-0DB9A1EDF9C3};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Compress(I4);
  property-get Compress: I4;
  property-put BitmapPeristence(I4);
  property-get BitmapPeristence: I4;
  property-put allowBackgroundInput(I4);
  property-get allowBackgroundInput: I4;
  property-put KeyBoardLayoutStr(BSTR);
  property-put PluginDlls(BSTR);
  property-put IconFile(BSTR);
  property-put IconIndex(I4);
  property-put ContainerHandledFullScreen(I4);
  property-get ContainerHandledFullScreen: I4;
  property-put DisableRdpdr(I4);
  property-get DisableRdpdr: I4;
  property-put SmoothScroll(I4);
  property-get SmoothScroll: I4;
  property-put AcceleratorPassthrough(I4);
  property-get AcceleratorPassthrough: I4;
  property-put ShadowBitmap(I4);
  property-get ShadowBitmap: I4;
  property-put TransportType(I4);
  property-get TransportType: I4;
  property-put SasSequence(I4);
  property-get SasSequence: I4;
  property-put EncryptionEnabled(I4);
  property-get EncryptionEnabled: I4;
  property-put DedicatedTerminal(I4);
  property-get DedicatedTerminal: I4;
  property-put RDPPort(I4);
  property-get RDPPort: I4;
  property-put EnableMouse(I4);
  property-get EnableMouse: I4;
  property-put DisableCtrlAltDel(I4);
  property-get DisableCtrlAltDel: I4;
  property-put EnableWindowsKey(I4);
  property-get EnableWindowsKey: I4;
  property-put DoubleClickDetect(I4);
  property-get DoubleClickDetect: I4;
  property-put MaximizeShell(I4);
  property-get MaximizeShell: I4;
  property-put HotKeyFullScreen(I4);
  property-get HotKeyFullScreen: I4;
  property-put HotKeyCtrlEsc(I4);
  property-get HotKeyCtrlEsc: I4;
  property-put HotKeyAltEsc(I4);
  property-get HotKeyAltEsc: I4;
  property-put HotKeyAltTab(I4);
  property-get HotKeyAltTab: I4;
  property-put HotKeyAltShiftTab(I4);
  property-get HotKeyAltShiftTab: I4;
  property-put HotKeyAltSpace(I4);
  property-get HotKeyAltSpace: I4;
  property-put HotKeyCtrlAltDel(I4);
  property-get HotKeyCtrlAltDel: I4;
  property-put orderDrawThreshold(I4);
  property-get orderDrawThreshold: I4;
  property-put BitmapCacheSize(I4);
  property-get BitmapCacheSize: I4;
  property-put BitmapVirtualCacheSize(I4);
  property-get BitmapVirtualCacheSize: I4;
  property-put ScaleBitmapCachesByBPP(I4);
  property-get ScaleBitmapCachesByBPP: I4;
  property-put NumBitmapCaches(I4);
  property-get NumBitmapCaches: I4;
  property-put CachePersistenceActive(I4);
  property-get CachePersistenceActive: I4;
  property-put PersistCacheDirectory(BSTR);
  property-put brushSupportLevel(I4);
  property-get brushSupportLevel: I4;
  property-put minInputSendInterval(I4);
  property-get minInputSendInterval: I4;
  property-put InputEventsAtOnce(I4);
  property-get InputEventsAtOnce: I4;
  property-put maxEventCount(I4);
  property-get maxEventCount: I4;
  property-put keepAliveInterval(I4);
  property-get keepAliveInterval: I4;
  property-put shutdownTimeout(I4);
  property-get shutdownTimeout: I4;
  property-put overallConnectionTimeout(I4);
  property-get overallConnectionTimeout: I4;
  property-put singleConnectionTimeout(I4);
  property-get singleConnectionTimeout: I4;
  property-put KeyboardType(I4);
  property-get KeyboardType: I4;
  property-put KeyboardSubType(I4);
  property-get KeyboardSubType: I4;
  property-put KeyboardFunctionKey(I4);
  property-get KeyboardFunctionKey: I4;
  property-put WinceFixedPalette(I4);
  property-get WinceFixedPalette: I4;
  property-put ConnectToServerConsole(bool);
  property-get ConnectToServerConsole: bool;
  property-put BitmapPersistence(I4);
  property-get BitmapPersistence: I4;
  property-put MinutesToIdleTimeout(I4);
  property-get MinutesToIdleTimeout: I4;
  property-put SmartSizing(bool);
  property-get SmartSizing: bool;
  property-put RdpdrLocalPrintingDocName(BSTR);
  property-get RdpdrLocalPrintingDocName: BSTR;
  property-put RdpdrClipCleanTempDirString(BSTR);
  property-get RdpdrClipCleanTempDirString: BSTR;
  property-put RdpdrClipPasteInfoString(BSTR);
  property-get RdpdrClipPasteInfoString: BSTR;
  property-put ClearTextPassword(BSTR);
  property-put DisplayConnectionBar(bool);
  property-get DisplayConnectionBar: bool;
  property-put PinConnectionBar(bool);
  property-get PinConnectionBar: bool;
  property-put GrabFocusOnConnect(bool);
  property-get GrabFocusOnConnect: bool;
  property-put LoadBalanceInfo(BSTR);
  property-get LoadBalanceInfo: BSTR;
  property-put RedirectDrives(bool);
  property-get RedirectDrives: bool;
  property-put RedirectPrinters(bool);
  property-get RedirectPrinters: bool;
  property-put RedirectPorts(bool);
  property-get RedirectPorts: bool;
  property-put RedirectSmartCards(bool);
  property-get RedirectSmartCards: bool;
  property-put BitmapVirtualCache16BppSize(I4);
  property-get BitmapVirtualCache16BppSize: I4;
  property-put BitmapVirtualCache24BppSize(I4);
  property-get BitmapVirtualCache24BppSize: I4;
  property-put PerformanceFlags(I4);
  property-get PerformanceFlags: I4;
  property-put ConnectWithEndpoint(^variant);
  property-put NotifyTSPublicKey(bool);
  property-get NotifyTSPublicKey: bool;
  property-get CanAutoReconnect: bool;
  property-put EnableAutoReconnect(bool);
  property-get EnableAutoReconnect: bool;
  property-put MaxReconnectAttempts(I4);
  property-get MaxReconnectAttempts: I4;
  property-put ConnectionBarShowMinimizeButton(bool);
  property-get ConnectionBarShowMinimizeButton: bool;
  property-put ConnectionBarShowRestoreButton(bool);
  property-get ConnectionBarShowRestoreButton: bool;
  property-put AuthenticationLevel(UINT);
  property-get AuthenticationLevel: UINT;
  property-put RedirectClipboard(bool);
  property-get RedirectClipboard: bool;
  property-put AudioRedirectionMode(UINT);
  property-get AudioRedirectionMode: UINT;
  property-put ConnectionBarShowPinButton(bool);
  property-get ConnectionBarShowPinButton: bool;
  property-put PublicMode(bool);
  property-get PublicMode: bool;
  property-put RedirectDevices(bool);
  property-get RedirectDevices: bool;
  property-put RedirectPOSDevices(bool);
  property-get RedirectPOSDevices: bool;
  property-put BitmapVirtualCache32BppSize(I4);
  property-get BitmapVirtualCache32BppSize: I4;
  property-put RelativeMouseMode(bool);
  property-get RelativeMouseMode: bool;
  property-get AuthenticationServiceClass: BSTR;
  property-put AuthenticationServiceClass(BSTR);
  property-get PCB: BSTR;
  property-put PCB(BSTR);
  property-put HotKeyFocusReleaseLeft(I4);
  property-get HotKeyFocusReleaseLeft: I4;
  property-put HotKeyFocusReleaseRight(I4);
  property-get HotKeyFocusReleaseRight: I4;
  property-put EnableCredSspSupport(bool);
  property-get EnableCredSspSupport: bool;
  property-get AuthenticationType: UINT;
  property-put ConnectToAdministerServer(bool);
  property-get ConnectToAdministerServer: bool;
  property-put AudioCaptureRedirectionMode(bool);
  property-get AudioCaptureRedirectionMode: bool;
  property-put VideoPlaybackMode(UINT);
  property-get VideoPlaybackMode: UINT;
  property-put EnableSuperPan(bool);
  property-get EnableSuperPan: bool;
  property-put SuperPanAccelerationFactor(UI4);
  property-get SuperPanAccelerationFactor: UI4;
  property-put NegotiateSecurityLayer(bool);
  property-get NegotiateSecurityLayer: bool;
  property-put AudioQualityMode(UINT);
  property-get AudioQualityMode: UINT;
  property-put RedirectDirectX(bool);
  property-get RedirectDirectX: bool;
  property-put NetworkConnectionType(UINT);
  property-get NetworkConnectionType: UINT;

Dispatch IMsRdpClientTransportSettings3;
GUID={3D5B21AC-748D-41DE-8F30-E15169586BD4};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put GatewayHostname(BSTR);
  property-get GatewayHostname: BSTR;
  property-put GatewayUsageMethod(UI4);
  property-get GatewayUsageMethod: UI4;
  property-put GatewayProfileUsageMethod(UI4);
  property-get GatewayProfileUsageMethod: UI4;
  property-put GatewayCredsSource(UI4);
  property-get GatewayCredsSource: UI4;
  property-put GatewayUserSelectedCredsSource(UI4);
  property-get GatewayUserSelectedCredsSource: UI4;
  property-get GatewayIsSupported: I4;
  property-get GatewayDefaultUsageMethod: UI4;
  property-put GatewayCredSharing(UI4);
  property-get GatewayCredSharing: UI4;
  property-put GatewayPreAuthRequirement(UI4);
  property-get GatewayPreAuthRequirement: UI4;
  property-put GatewayPreAuthServerAddr(BSTR);
  property-get GatewayPreAuthServerAddr: BSTR;
  property-put GatewaySupportUrl(BSTR);
  property-get GatewaySupportUrl: BSTR;
  property-put GatewayEncryptedOtpCookie(BSTR);
  property-get GatewayEncryptedOtpCookie: BSTR;
  property-put GatewayEncryptedOtpCookieSize(UI4);
  property-get GatewayEncryptedOtpCookieSize: UI4;
  property-put GatewayUsername(BSTR);
  property-get GatewayUsername: BSTR;
  property-put GatewayDomain(BSTR);
  property-get GatewayDomain: BSTR;
  property-put GatewayPassword(BSTR);
  property-put GatewayCredSourceCookie(UI4);
  property-get GatewayCredSourceCookie: UI4;
  property-put GatewayAuthCookieServerAddr(BSTR);
  property-get GatewayAuthCookieServerAddr: BSTR;
  property-put GatewayEncryptedAuthCookie(BSTR);
  property-get GatewayEncryptedAuthCookie: BSTR;
  property-put GatewayEncryptedAuthCookieSize(UI4);
  property-get GatewayEncryptedAuthCookieSize: UI4;
  property-put GatewayAuthLoginPage(BSTR);
  property-get GatewayAuthLoginPage: BSTR;

Dispatch IMsRdpClientSecuredSettings2;
GUID={25F2CE20-8B1D-4971-A7CD-549DAE201FC0};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put StartProgram(BSTR);
  property-get StartProgram: BSTR;
  property-put WorkDir(BSTR);
  property-get WorkDir: BSTR;
  property-put FullScreen(I4);
  property-get FullScreen: I4;
  property-put KeyboardHookMode(I4);
  property-get KeyboardHookMode: I4;
  property-put AudioRedirectionMode(I4);
  property-get AudioRedirectionMode: I4;
  property-get PCB: BSTR;
  property-put PCB(BSTR);

Dispatch ITSRemoteProgram2;
GUID={92C38A7D-241A-418C-9936-099872C9AF20};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put RemoteProgramMode(bool);
  property-get RemoteProgramMode: bool;
  function ServerStartProgram(bstrExecutablePath:BSTR; bstrFilePath:BSTR; bstrWorkingDirectory:BSTR; vbExpandEnvVarInWorkingDirectoryOnServer:bool; bstrArguments:BSTR; vbExpandEnvVarInArgumentsOnServer:bool);
  property-put RemoteApplicationName(BSTR);
  property-put RemoteApplicationProgram(BSTR);
  property-put RemoteApplicationArgs(BSTR);

Interface IMsRdpClientNonScriptable5;
GUID={4F6996D5-D7B1-412C-B0FF-063718566907};
  property-put UseMultimon(pfUseMultimon:bool): HResult;
  property-get UseMultimon(out pfUseMultimon:^bool): HResult;
  property-get RemoteMonitorCount(out pcRemoteMonitors:^UI4): HResult;
  function GetRemoteMonitorsBoundingBox(out pLeft:^I4; out pTop:^I4; out pRight:^I4; out pBottom:^I4): HResult;
  property-get RemoteMonitorLayoutMatchesLocal(out pfRemoteMatchesLocal:^bool): HResult;
  property-put DisableConnectionBar(bool): HResult;
  property-put DisableRemoteAppCapsCheck(pfDisableRemoteAppCapsCheck:bool): HResult;
  property-get DisableRemoteAppCapsCheck(out pfDisableRemoteAppCapsCheck:^bool): HResult;
  property-put WarnAboutDirectXRedirection(pfWarn:bool): HResult;
  property-get WarnAboutDirectXRedirection(out pfWarn:^bool): HResult;
  property-put AllowPromptingForCredentials(pfAllow:bool): HResult;
  property-get AllowPromptingForCredentials(out pfAllow:^bool): HResult;

Interface IMsRdpPreferredRedirectionInfo;
GUID={FDD029F9-9574-4DEF-8529-64B521CCCAA4};
  property-put UseRedirectionServerName(pVal:bool): HResult;
  property-get UseRedirectionServerName(out pVal:^bool): HResult;

Class MsRdpClient7; // Microsoft RDP Client Control (redistributable) - version 8
GUID={A9D7038D-B5ED-472E-9C47-94BEA90A5910};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  property-get AdvancedSettings7: ^IMsRdpClientAdvancedSettings6;
  property-get TransportSettings2: ^IMsRdpClientTransportSettings2;
  property-get AdvancedSettings8: ^IMsRdpClientAdvancedSettings7;
  property-get TransportSettings3: ^IMsRdpClientTransportSettings3;
  function GetStatusText(statusCode:UINT): BSTR;
  property-get SecuredSettings3: ^IMsRdpClientSecuredSettings2;
  property-get RemoteProgram2: ^ITSRemoteProgram2;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  property-get AdvancedSettings7: ^IMsRdpClientAdvancedSettings6;
  property-get TransportSettings2: ^IMsRdpClientTransportSettings2;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  property-get TransportSettings: ^IMsRdpClientTransportSettings;
  property-get AdvancedSettings6: ^IMsRdpClientAdvancedSettings5;
  function GetErrorDescription(disconnectReason:UINT; ExtendedDisconnectReason:UINT): BSTR;
  property-get RemoteProgram: ^ITSRemoteProgram;
  property-get MsRdpClientShell: ^IMsRdpClientShell;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  property-get AdvancedSettings5: ^IMsRdpClientAdvancedSettings4;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  property-get AdvancedSettings4: ^IMsRdpClientAdvancedSettings3;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  property-get AdvancedSettings3: ^IMsRdpClientAdvancedSettings2;
  property-put ConnectedStatusText(BSTR);
  property-get ConnectedStatusText: BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  property-put ColorDepth(I4);
  property-get ColorDepth: I4;
  property-get AdvancedSettings2: ^IMsRdpClientAdvancedSettings;
  property-get SecuredSettings2: ^IMsRdpClientSecuredSettings;
  property-get ExtendedDisconnectReason: ExtendedDisconnectReasonCode;
  property-put FullScreen(bool);
  property-get FullScreen: bool;
  function SetVirtualChannelOptions(chanName:BSTR; chanOptions:I4);
  function GetVirtualChannelOptions(chanName:BSTR): I4;
  function RequestClose: ControlCloseStatus;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Server(BSTR);
  property-get Server: BSTR;
  property-put Domain(BSTR);
  property-get Domain: BSTR;
  property-put UserName(BSTR);
  property-get UserName: BSTR;
  property-put DisconnectedText(BSTR);
  property-get DisconnectedText: BSTR;
  property-put ConnectingText(BSTR);
  property-get ConnectingText: BSTR;
  property-get Connected: I2;
  property-put DesktopWidth(I4);
  property-get DesktopWidth: I4;
  property-put DesktopHeight(I4);
  property-get DesktopHeight: I4;
  property-put StartConnected(I4);
  property-get StartConnected: I4;
  property-get HorizontalScrollBarVisible: I4;
  property-get VerticalScrollBarVisible: I4;
  property-put FullScreenTitle(BSTR);
  property-get CipherStrength: I4;
  property-get Version: BSTR;
  property-get SecuredSettingsEnabled: I4;
  property-get SecuredSettings: ^IMsTscSecuredSettings;
  property-get AdvancedSettings: ^IMsTscAdvancedSettings;
  property-get Debugger: ^IMsTscDebug;
  function Connect;
  function Disconnect;
  function CreateVirtualChannels(newVal:BSTR);
  function SendOnVirtualChannel(chanName:BSTR; ChanData:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function OnConnecting;
  function OnConnected;
  function OnLoginComplete;
  function OnDisconnected(discReason:I4);
  function OnEnterFullScreenMode;
  function OnLeaveFullScreenMode;
  function OnChannelReceivedData(chanName:BSTR; data:BSTR);
  function OnRequestGoFullScreen;
  function OnRequestLeaveFullScreen;
  function OnFatalError(errorCode:I4);
  function OnWarning(warningCode:I4);
  function OnRemoteDesktopSizeChange(width:I4; height:I4);
  function OnIdleTimeoutNotification;
  function OnRequestContainerMinimize;
  function OnConfirmClose(out pfAllowClose:^bool);
  function OnReceivedTSPublicKey(publicKey:BSTR; out pfContinueLogon:^bool);
  function OnAutoReconnecting(disconnectReason:I4; attemptCount:I4; out pArcContinueStatus:^AutoReconnectContinueState);
  function OnAuthenticationWarningDisplayed;
  function OnAuthenticationWarningDismissed;
  function OnRemoteProgramResult(bstrRemoteProgram:BSTR; lError:RemoteProgramResult; vbIsExecutable:bool);
  function OnRemoteProgramDisplayed(vbDisplayed:bool; uDisplayInformation:UI4);
  function OnLogonError(lError:I4);
  function OnFocusReleased(iDirection:INT);
  function OnUserNameAcquired(bstrUserName:BSTR);
  function OnMouseInputModeChanged(fMouseModeRelative:bool);
  function OnServiceMessageRecieved(serviceMessage:BSTR);
  property-put ClearTextPassword(BSTR): HResult;
  property-put PortablePassword(pPortablePass:BSTR): HResult;
  property-get PortablePassword(out pPortablePass:^BSTR): HResult;
  property-put PortableSalt(pPortableSalt:BSTR): HResult;
  property-get PortableSalt(out pPortableSalt:^BSTR): HResult;
  property-put BinaryPassword(pBinaryPassword:BSTR): HResult;
  property-get BinaryPassword(out pBinaryPassword:^BSTR): HResult;
  property-put BinarySalt(pSalt:BSTR): HResult;
  property-get BinarySalt(out pSalt:^BSTR): HResult;
  function ResetPassword: HResult;
  function NotifyRedirectDeviceChange(wParam:UINT_PTR; lParam:LONG_PTR): HResult;
  function SendKeys(numKeys:I4; pbArrayKeyUp:^bool; plKeyData:^I4): HResult;
  property-put UIParentWindowHandle(phwndUIParentWindowHandle:wireHWND): HResult;
  property-get UIParentWindowHandle(out phwndUIParentWindowHandle:^wireHWND): HResult;
  property-put ShowRedirectionWarningDialog(pfShowRdrDlg:bool): HResult;
  property-get ShowRedirectionWarningDialog(out pfShowRdrDlg:^bool): HResult;
  property-put PromptForCredentials(pfPrompt:bool): HResult;
  property-get PromptForCredentials(out pfPrompt:^bool): HResult;
  property-put NegotiateSecurityLayer(pfNegotiate:bool): HResult;
  property-get NegotiateSecurityLayer(out pfNegotiate:^bool): HResult;
  property-put EnableCredSspSupport(pfEnableSupport:bool): HResult;
  property-get EnableCredSspSupport(out pfEnableSupport:^bool): HResult;
  property-put RedirectDynamicDrives(pfRedirectDynamicDrives:bool): HResult;
  property-get RedirectDynamicDrives(out pfRedirectDynamicDrives:^bool): HResult;
  property-put RedirectDynamicDevices(pfRedirectDynamicDevices:bool): HResult;
  property-get RedirectDynamicDevices(out pfRedirectDynamicDevices:^bool): HResult;
  property-get DeviceCollection(out ppDeviceCollection:^^IMsRdpDeviceCollection): HResult;
  property-get DriveCollection(out ppDeviceCollection:^^IMsRdpDriveCollection): HResult;
  property-put WarnAboutSendingCredentials(pfWarn:bool): HResult;
  property-get WarnAboutSendingCredentials(out pfWarn:^bool): HResult;
  property-put WarnAboutClipboardRedirection(pfWarn:bool): HResult;
  property-get WarnAboutClipboardRedirection(out pfWarn:^bool): HResult;
  property-put ConnectionBarText(pConnectionBarText:BSTR): HResult;
  property-get ConnectionBarText(out pConnectionBarText:^BSTR): HResult;
  property-put RedirectionWarningType(pWrnType:RedirectionWarningType): HResult;
  property-get RedirectionWarningType(out pWrnType:^RedirectionWarningType): HResult;
  property-put MarkRdpSettingsSecure(pfRdpSecure:bool): HResult;
  property-get MarkRdpSettingsSecure(out pfRdpSecure:^bool): HResult;
  property-put PublisherCertificateChain(pVarCert:^variant): HResult;
  property-get PublisherCertificateChain(out pVarCert:^variant): HResult;
  property-put WarnAboutPrinterRedirection(pfWarn:bool): HResult;
  property-get WarnAboutPrinterRedirection(out pfWarn:^bool): HResult;
  property-put AllowCredentialSaving(pfAllowSave:bool): HResult;
  property-get AllowCredentialSaving(out pfAllowSave:^bool): HResult;
  property-put PromptForCredsOnClient(pfPromptForCredsOnClient:bool): HResult;
  property-get PromptForCredsOnClient(out pfPromptForCredsOnClient:^bool): HResult;
  property-put LaunchedViaClientShellInterface(pfLaunchedViaClientShellInterface:bool): HResult;
  property-get LaunchedViaClientShellInterface(out pfLaunchedViaClientShellInterface:^bool): HResult;
  property-put TrustedZoneSite(pfIsTrustedZone:bool): HResult;
  property-get TrustedZoneSite(out pfIsTrustedZone:^bool): HResult;
  property-put UseMultimon(pfUseMultimon:bool): HResult;
  property-get UseMultimon(out pfUseMultimon:^bool): HResult;
  property-get RemoteMonitorCount(out pcRemoteMonitors:^UI4): HResult;
  function GetRemoteMonitorsBoundingBox(out pLeft:^I4; out pTop:^I4; out pRight:^I4; out pBottom:^I4): HResult;
  property-get RemoteMonitorLayoutMatchesLocal(out pfRemoteMatchesLocal:^bool): HResult;
  property-put DisableConnectionBar(bool): HResult;
  property-put DisableRemoteAppCapsCheck(pfDisableRemoteAppCapsCheck:bool): HResult;
  property-get DisableRemoteAppCapsCheck(out pfDisableRemoteAppCapsCheck:^bool): HResult;
  property-put WarnAboutDirectXRedirection(pfWarn:bool): HResult;
  property-get WarnAboutDirectXRedirection(out pfWarn:^bool): HResult;
  property-put AllowPromptingForCredentials(pfAllow:bool): HResult;
  property-get AllowPromptingForCredentials(out pfAllow:^bool): HResult;
  property-put UseRedirectionServerName(pVal:bool): HResult;
  property-get UseRedirectionServerName(out pVal:^bool): HResult;
