From bf0e3a58517147d8711a1a757fe4dcd2d40a068c Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Fri, 30 Dec 2011 13:40:13 +0300 Subject: [PATCH] wshom.ocx: Fix IWshShell3 definition. --- dlls/wshom.ocx/shell.c | 72 ++++++++++++++- dlls/wshom.ocx/wshom.idl | 192 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 245 insertions(+), 19 deletions(-) diff --git a/dlls/wshom.ocx/shell.c b/dlls/wshom.ocx/shell.c index 68f14b8b2af..857a48d4cfe 100644 --- a/dlls/wshom.ocx/shell.c +++ b/dlls/wshom.ocx/shell.c @@ -61,7 +61,6 @@ static ULONG WINAPI WshShell3_Release(IWshShell3 *iface) static HRESULT WINAPI WshShell3_GetTypeInfoCount(IWshShell3 *iface, UINT *pctinfo) { TRACE("(%p)\n", pctinfo); - *pctinfo = 1; return S_OK; } @@ -112,19 +111,73 @@ static HRESULT WINAPI WshShell3_Invoke(IWshShell3 *iface, DISPID dispIdMember, R static HRESULT WINAPI WshShell3_get_SpecialFolders(IWshShell3 *iface, IWshCollection **out_Folders) { - FIXME("(%p)\n", out_Folders); + FIXME("(%p): stub\n", out_Folders); return E_NOTIMPL; } static HRESULT WINAPI WshShell3_get_Environment(IWshShell3 *iface, VARIANT *Type, IWshEnvironment **out_Env) { - FIXME("(%p %p)\n", Type, out_Env); + FIXME("(%p %p): stub\n", Type, out_Env); return E_NOTIMPL; } static HRESULT WINAPI WshShell3_Run(IWshShell3 *iface, BSTR Command, VARIANT *WindowStyle, VARIANT *WaitOnReturn, int *out_ExitCode) { - FIXME("(%p %p %p)\n", WindowStyle, WaitOnReturn, out_ExitCode); + FIXME("(%p %p %p): stub\n", WindowStyle, WaitOnReturn, out_ExitCode); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_Popup(IWshShell3 *iface, BSTR Text, VARIANT* SecondsToWait, VARIANT *Title, VARIANT *Type, int *button) +{ + FIXME("(%s %p %p %p %p): stub\n", debugstr_w(Text), SecondsToWait, Title, Type, button); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_CreateShortcut(IWshShell3 *iface, BSTR PathLink, IDispatch** out_Shortcut) +{ + FIXME("(%s %p): stub\n", debugstr_w(PathLink), out_Shortcut); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_ExpandEnvironmentStrings(IWshShell3 *iface, BSTR Src, BSTR* out_Dst) +{ + FIXME("(%s %p): stub\n", debugstr_w(Src), out_Dst); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_RegRead(IWshShell3 *iface, BSTR Name, VARIANT* out_Value) +{ + FIXME("(%s %p): stub\n", debugstr_w(Name), out_Value); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_RegWrite(IWshShell3 *iface, BSTR Name, VARIANT *Value, VARIANT *Type) +{ + FIXME("(%s %p %p): stub\n", debugstr_w(Name), Value, Type); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_RegDelete(IWshShell3 *iface, BSTR Name) +{ + FIXME("(%s): stub\n", debugstr_w(Name)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_LogEvent(IWshShell3 *iface, VARIANT *Type, BSTR Message, BSTR Target, VARIANT_BOOL *out_Success) +{ + FIXME("(%p %s %s %p): stub\n", Type, debugstr_w(Message), debugstr_w(Target), out_Success); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_AppActivate(IWshShell3 *iface, VARIANT *App, VARIANT *Wait, VARIANT_BOOL *out_Success) +{ + FIXME("(%p %p %p): stub\n", App, Wait, out_Success); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_SendKeys(IWshShell3 *iface, BSTR Keys, VARIANT *Wait) +{ + FIXME("(%s %p): stub\n", debugstr_w(Keys), Wait); return E_NOTIMPL; } @@ -138,7 +191,16 @@ static const IWshShell3Vtbl WshShell3Vtbl = { WshShell3_Invoke, WshShell3_get_SpecialFolders, WshShell3_get_Environment, - WshShell3_Run + WshShell3_Run, + WshShell3_Popup, + WshShell3_CreateShortcut, + WshShell3_ExpandEnvironmentStrings, + WshShell3_RegRead, + WshShell3_RegWrite, + WshShell3_RegDelete, + WshShell3_LogEvent, + WshShell3_AppActivate, + WshShell3_SendKeys }; static IWshShell3 WshShell3 = { &WshShell3Vtbl }; diff --git a/dlls/wshom.ocx/wshom.idl b/dlls/wshom.ocx/wshom.idl index a7dcb3ac95b..8d0b8e1ec52 100644 --- a/dlls/wshom.ocx/wshom.idl +++ b/dlls/wshom.ocx/wshom.idl @@ -17,6 +17,7 @@ */ import "oaidl.idl"; +cpp_quote("#undef ExpandEnvironmentStrings") [ helpstring("Windows Script Host Object Model"), @@ -27,6 +28,61 @@ library IWshRuntimeLibrary { importlib("stdole2.tlb"); + typedef enum { + WshRunning = 0, + WshFinished, + WshFailed + } WshExecStatus; + + [ + uuid(53bad8c1-e718-11cf-893d-00a0c9054228), + odl, + hidden, + dual, + nonextensible, + oleautomation + ] + interface ITextStream : IDispatch { + [id(0x2710), propget] + HRESULT Line([out, retval] long* Line); + + [id(0xfffffdef), propget] + HRESULT Column([out, retval] long* Column); + + [id(0x2712), propget] + HRESULT AtEndOfStream([out, retval] VARIANT_BOOL* EOS); + + [id(0x2713), propget] + HRESULT AtEndOfLine([out, retval] VARIANT_BOOL* EOL); + + [id(0x2714)] + HRESULT Read([in] long Characters, [out, retval] BSTR* Text); + + [id(0x2715)] + HRESULT ReadLine([out, retval] BSTR* Text); + + [id(0x2716)] + HRESULT ReadAll([out, retval] BSTR* Text); + + [id(0x2717)] + HRESULT Write([in] BSTR Text); + + [id(0x2718)] + HRESULT WriteLine([in, optional, defaultvalue("")] BSTR Text); + + [id(0x2719)] + HRESULT WriteBlankLines([in] long Lines); + + [id(0x271a)] + HRESULT Skip([in] long Characters); + + [id(0x271b)] + HRESULT SkipLine(); + + [id(0x271c)] + HRESULT Close(); + }; + [ uuid(f935dc27-1cf0-11d0-adb9-00c04fd58a0b), odl, @@ -79,28 +135,136 @@ library IWshRuntimeLibrary HRESULT Remove([in] BSTR Name); } + [ + uuid(08fed190-be19-11d3-a28b-00104bd35090), + odl, + dual, + oleautomation + ] + interface IWshExec : IDispatch { + [id(0x0001), propget] + HRESULT Status([out, retval] WshExecStatus* Status); + + [id(0x0003), propget] + HRESULT StdIn([out, retval] ITextStream** stream); + + [id(0x0004), propget] + HRESULT StdOut([out, retval] ITextStream** stream); + + [id(0x0005), propget] + HRESULT StdErr([out, retval] ITextStream** stream); + + [id(0x0006), propget] + HRESULT ProcessID([out, retval] long* pid); + + [id(0x0007), propget] + HRESULT ExitCode([out, retval] long* ExitCode); + + [id(0x0008)] + HRESULT Terminate(); + }; + + [ + uuid(f935dc21-1cf0-11d0-adb9-00c04fd58a0b), + odl, + dual, + oleautomation, + hidden + ] + interface IWshShell : IDispatch { + [id(0x0064), propget] + HRESULT SpecialFolders([out, retval] IWshCollection** out_Folders); + + [id(0x00c8), propget] + HRESULT Environment( + [in, optional] VARIANT* Type, + [out, retval] IWshEnvironment** out_Env); + + [id(0x03e8)] + HRESULT Run( + [in] BSTR Command, + [in, optional] VARIANT* WindowStyle, + [in, optional] VARIANT* WaitOnReturn, + [out, retval] int* out_ExitCode); + + [id(0x03e9)] + HRESULT Popup( + [in] BSTR Text, + [in, optional] VARIANT* SecondsToWait, + [in, optional] VARIANT* Title, + [in, optional] VARIANT* Type, + [out, retval] int* out_Button); + + [id(0x03ea)] + HRESULT CreateShortcut( + [in] BSTR PathLink, + [out, retval] IDispatch** out_Shortcut); + + [id(0x03ee)] + HRESULT ExpandEnvironmentStrings( + [in] BSTR Src, + [out, retval] BSTR* out_Dst); + + [id(0x07d0)] + HRESULT RegRead( + [in] BSTR Name, + [out, retval] VARIANT* out_Value); + + [id(0x07d1)] + HRESULT RegWrite( + [in] BSTR Name, + [in] VARIANT* Value, + [in, optional] VARIANT* Type); + + [id(0x07d2)] + HRESULT RegDelete([in] BSTR Name); + }; + + [ + uuid(24be5a30-edfe-11d2-b933-00104b365c9f), + odl, + dual, + oleautomation, + hidden + ] + interface IWshShell2 : IWshShell { + [id(0x0bb8)] + HRESULT LogEvent( + [in] VARIANT* Type, + [in] BSTR Message, + [in, optional, defaultvalue("")] BSTR Target, + [out, retval] VARIANT_BOOL* out_Success); + + [id(0x0bc2)] + HRESULT AppActivate( + [in] VARIANT* App, + [in, optional] VARIANT* Wait, + [out, retval] VARIANT_BOOL* out_Success); + + [id(0x0bc3)] + HRESULT SendKeys( + [in] BSTR Keys, + [in, optional] VARIANT* Wait); + }; + [ uuid(41904400-be18-11d3-a28b-00104bd35090), odl, dual, oleautomation ] - interface IWshShell3 : IDispatch { - [id(0x0064), propget] - HRESULT SpecialFolders([out, retval] IWshCollection **out_Folders); + interface IWshShell3 : IWshShell2 { + [id(0x0bc4)] + HRESULT Exec( + [in] BSTR Command, + [out, retval] IWshExec** out_Exec); - [id(0x00c8), propget] - HRESULT Environment( - [in, optional] VARIANT *Type, - [out, retval] IWshEnvironment **out_Env); + [id(0x0bc5), propget] + HRESULT CurrentDirectory([out, retval] BSTR* out_Directory); - [id(0x03e8)] - HRESULT Run( - [in] BSTR Command, - [in, optional] VARIANT *WindowStyle, - [in, optional] VARIANT *WaitOnReturn, - [out, retval] int *out_ExitCode); - } + [id(0x0bc5), propput] + HRESULT CurrentDirectory([in] BSTR out_Directory); + }; [ uuid(24be5a31-edfe-11d2-b933-00104b365c9f),