Module: wine Branch: master Commit: 5cc0d1ee80c56c9645cb291414c9ede4951d0cd6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5cc0d1ee80c56c9645cb291414...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Jul 30 14:01:55 2010 +0200
wscript.exe: Added support for IHost type info.
---
programs/wscript/main.c | 27 +++++++++++++++++++++++++-- programs/wscript/wscript.h | 2 ++ 2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/programs/wscript/main.c b/programs/wscript/main.c index d5631a2..612bb54 100644 --- a/programs/wscript/main.c +++ b/programs/wscript/main.c @@ -37,6 +37,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(wscript); static const WCHAR wscriptW[] = {'W','S','c','r','i','p','t',0}; static const WCHAR wshW[] = {'W','S','H',0};
+ITypeInfo *host_ti; + static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **ppv) { @@ -83,8 +85,8 @@ static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface, return E_FAIL;
if(dwReturnMask & SCRIPTINFO_ITYPEINFO) { - WINE_FIXME("SCRIPTINFO_ITYPEINFO not supported\n"); - return E_NOTIMPL; + ITypeInfo_AddRef(host_ti); + *ppti = host_ti; }
if(dwReturnMask & SCRIPTINFO_IUNKNOWN) { @@ -151,6 +153,23 @@ static IActiveScriptSiteVtbl ActiveScriptSiteVtbl = {
IActiveScriptSite script_site = { &ActiveScriptSiteVtbl };
+static BOOL load_typelib(void) +{ + ITypeLib *typelib; + HRESULT hres; + + static const WCHAR wscript_exeW[] = {'w','s','c','r','i','p','t','.','e','x','e',0}; + + hres = LoadTypeLib(wscript_exeW, &typelib); + if(FAILED(hres)) + return FALSE; + + hres = ITypeLib_GetTypeInfoOfGuid(typelib, &IID_IHost, &host_ti); + + ITypeLib_Release(typelib); + return SUCCEEDED(hres); +} + static BOOL get_engine_clsid(const WCHAR *ext, CLSID *clsid) { WCHAR fileid[64], progid[64]; @@ -222,6 +241,9 @@ static HRESULT init_engine(IActiveScript *script, IActiveScriptParse *parser) { HRESULT hres;
+ if(!load_typelib()) + return FALSE; + hres = IActiveScript_SetScriptSite(script, &script_site); if(FAILED(hres)) return FALSE; @@ -327,6 +349,7 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm if(init_engine(script, parser)) { run_script(cmdline, script, parser); IActiveScript_Close(script); + ITypeInfo_Release(host_ti); }else { WINE_FIXME("Script initialization failed\n"); } diff --git a/programs/wscript/wscript.h b/programs/wscript/wscript.h index cd29ed4..a5c642d 100644 --- a/programs/wscript/wscript.h +++ b/programs/wscript/wscript.h @@ -19,3 +19,5 @@ #include "ihost.h"
extern IHost host_obj; + +extern ITypeInfo *host_ti;