wscript.exe: Added support for IHost type info.
This commit is contained in:
parent
68a3f4eb3c
commit
5cc0d1ee80
@ -37,6 +37,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(wscript);
|
|||||||
static const WCHAR wscriptW[] = {'W','S','c','r','i','p','t',0};
|
static const WCHAR wscriptW[] = {'W','S','c','r','i','p','t',0};
|
||||||
static const WCHAR wshW[] = {'W','S','H',0};
|
static const WCHAR wshW[] = {'W','S','H',0};
|
||||||
|
|
||||||
|
ITypeInfo *host_ti;
|
||||||
|
|
||||||
static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface,
|
static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface,
|
||||||
REFIID riid, void **ppv)
|
REFIID riid, void **ppv)
|
||||||
{
|
{
|
||||||
@ -83,8 +85,8 @@ static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface,
|
|||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
if(dwReturnMask & SCRIPTINFO_ITYPEINFO) {
|
if(dwReturnMask & SCRIPTINFO_ITYPEINFO) {
|
||||||
WINE_FIXME("SCRIPTINFO_ITYPEINFO not supported\n");
|
ITypeInfo_AddRef(host_ti);
|
||||||
return E_NOTIMPL;
|
*ppti = host_ti;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dwReturnMask & SCRIPTINFO_IUNKNOWN) {
|
if(dwReturnMask & SCRIPTINFO_IUNKNOWN) {
|
||||||
@ -151,6 +153,23 @@ static IActiveScriptSiteVtbl ActiveScriptSiteVtbl = {
|
|||||||
|
|
||||||
IActiveScriptSite script_site = { &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)
|
static BOOL get_engine_clsid(const WCHAR *ext, CLSID *clsid)
|
||||||
{
|
{
|
||||||
WCHAR fileid[64], progid[64];
|
WCHAR fileid[64], progid[64];
|
||||||
@ -222,6 +241,9 @@ static HRESULT init_engine(IActiveScript *script, IActiveScriptParse *parser)
|
|||||||
{
|
{
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
|
if(!load_typelib())
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
hres = IActiveScript_SetScriptSite(script, &script_site);
|
hres = IActiveScript_SetScriptSite(script, &script_site);
|
||||||
if(FAILED(hres))
|
if(FAILED(hres))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -327,6 +349,7 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm
|
|||||||
if(init_engine(script, parser)) {
|
if(init_engine(script, parser)) {
|
||||||
run_script(cmdline, script, parser);
|
run_script(cmdline, script, parser);
|
||||||
IActiveScript_Close(script);
|
IActiveScript_Close(script);
|
||||||
|
ITypeInfo_Release(host_ti);
|
||||||
}else {
|
}else {
|
||||||
WINE_FIXME("Script initialization failed\n");
|
WINE_FIXME("Script initialization failed\n");
|
||||||
}
|
}
|
||||||
|
@ -19,3 +19,5 @@
|
|||||||
#include "ihost.h"
|
#include "ihost.h"
|
||||||
|
|
||||||
extern IHost host_obj;
|
extern IHost host_obj;
|
||||||
|
|
||||||
|
extern ITypeInfo *host_ti;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user