ReactOS  0.4.15-dev-1377-ga59cecd
main.c File Reference
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <winreg.h>
#include <ole2.h>
#include <shellapi.h>
#include <activscp.h>
#include <initguid.h>
#include "wscript.h"
#include <wine/debug.h>
Include dependency graph for main.c:

Go to the source code of this file.

Macros

#define COBJMACROS
 
#define IActiveScriptParse_Release   IActiveScriptParse32_Release
 
#define IActiveScriptParse_InitNew   IActiveScriptParse32_InitNew
 
#define IActiveScriptParse_ParseScriptText   IActiveScriptParse32_ParseScriptText
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (wscript)
 
static HRESULT query_interface (REFIID, void **)
 
static HRESULT WINAPI ActiveScriptSite_QueryInterface (IActiveScriptSite *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI ActiveScriptSite_AddRef (IActiveScriptSite *iface)
 
static ULONG WINAPI ActiveScriptSite_Release (IActiveScriptSite *iface)
 
static HRESULT WINAPI ActiveScriptSite_GetLCID (IActiveScriptSite *iface, LCID *plcid)
 
static HRESULT WINAPI ActiveScriptSite_GetItemInfo (IActiveScriptSite *iface, LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppunkItem, ITypeInfo **ppti)
 
static HRESULT WINAPI ActiveScriptSite_GetDocVersionString (IActiveScriptSite *iface, BSTR *pbstrVersion)
 
static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate (IActiveScriptSite *iface, const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
 
static HRESULT WINAPI ActiveScriptSite_OnStateChange (IActiveScriptSite *iface, SCRIPTSTATE ssScriptState)
 
static HRESULT WINAPI ActiveScriptSite_OnScriptError (IActiveScriptSite *iface, IActiveScriptError *pscripterror)
 
static HRESULT WINAPI ActiveScriptSite_OnEnterScript (IActiveScriptSite *iface)
 
static HRESULT WINAPI ActiveScriptSite_OnLeaveScript (IActiveScriptSite *iface)
 
static HRESULT WINAPI ActiveScriptSiteWindow_QueryInterface (IActiveScriptSiteWindow *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI ActiveScriptSiteWindow_AddRef (IActiveScriptSiteWindow *iface)
 
static ULONG WINAPI ActiveScriptSiteWindow_Release (IActiveScriptSiteWindow *iface)
 
static HRESULT WINAPI ActiveScriptSiteWindow_GetWindow (IActiveScriptSiteWindow *iface, HWND *phwnd)
 
static HRESULT WINAPI ActiveScriptSiteWindow_EnableModeless (IActiveScriptSiteWindow *iface, BOOL fEnable)
 
static BOOL load_typelib (void)
 
static BOOL get_engine_clsid (const WCHAR *ext, CLSID *clsid)
 
static BOOL create_engine (CLSID *clsid, IActiveScript **script_ret, IActiveScriptParse **parser)
 
static BOOL init_engine (IActiveScript *script, IActiveScriptParse *parser)
 
static BSTR get_script_str (const WCHAR *filename)
 
static void run_script (const WCHAR *filename, IActiveScript *script, IActiveScriptParse *parser)
 
static BOOL set_host_properties (const WCHAR *prop)
 
int WINAPI wWinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cmdshow)
 

Variables

static const WCHAR wscriptW [] = {'W','S','c','r','i','p','t',0}
 
static const WCHAR wshW [] = {'W','S','H',0}
 
WCHAR scriptFullName [MAX_PATH]
 
ITypeInfohost_ti
 
ITypeInfoarguments_ti
 
static IActiveScriptSiteVtbl ActiveScriptSiteVtbl
 
static IActiveScriptSite script_site = { &ActiveScriptSiteVtbl }
 
static const IActiveScriptSiteWindowVtbl ActiveScriptSiteWindowVtbl
 
static IActiveScriptSiteWindow script_site_window = { &ActiveScriptSiteWindowVtbl }
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file main.c.

◆ IActiveScriptParse_InitNew

#define IActiveScriptParse_InitNew   IActiveScriptParse32_InitNew

Definition at line 47 of file main.c.

◆ IActiveScriptParse_ParseScriptText

#define IActiveScriptParse_ParseScriptText   IActiveScriptParse32_ParseScriptText

Definition at line 48 of file main.c.

◆ IActiveScriptParse_Release

#define IActiveScriptParse_Release   IActiveScriptParse32_Release

Definition at line 46 of file main.c.

Function Documentation

◆ ActiveScriptSite_AddRef()

static ULONG WINAPI ActiveScriptSite_AddRef ( IActiveScriptSite iface)
static

Definition at line 69 of file main.c.

70 {
71  return 2;
72 }

◆ ActiveScriptSite_GetDocVersionString()

static HRESULT WINAPI ActiveScriptSite_GetDocVersionString ( IActiveScriptSite iface,
BSTR pbstrVersion 
)
static

Definition at line 108 of file main.c.

110 {
111  WINE_FIXME("()\n");
112  return E_NOTIMPL;
113 }
#define E_NOTIMPL
Definition: ddrawi.h:99
#define WINE_FIXME
Definition: debug.h:365

◆ ActiveScriptSite_GetItemInfo()

static HRESULT WINAPI ActiveScriptSite_GetItemInfo ( IActiveScriptSite iface,
LPCOLESTR  pstrName,
DWORD  dwReturnMask,
IUnknown **  ppunkItem,
ITypeInfo **  ppti 
)
static

Definition at line 87 of file main.c.

89 {
90  WINE_TRACE("(%s %x %p %p)\n", wine_dbgstr_w(pstrName), dwReturnMask, ppunkItem, ppti);
91 
92  if(lstrcmpW(pstrName, wshW) && lstrcmpW(pstrName, wscriptW))
93  return E_FAIL;
94 
95  if(dwReturnMask & SCRIPTINFO_ITYPEINFO) {
96  ITypeInfo_AddRef(host_ti);
97  *ppti = host_ti;
98  }
99 
100  if(dwReturnMask & SCRIPTINFO_IUNKNOWN) {
101  IHost_AddRef(&host_obj);
102  *ppunkItem = (IUnknown*)&host_obj;
103  }
104 
105  return S_OK;
106 }
IHost host_obj
Definition: host.c:471
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
#define WINE_TRACE
Definition: debug.h:353
#define E_FAIL
Definition: ddrawi.h:102
static const WCHAR wscriptW[]
Definition: main.c:54
ITypeInfo * host_ti
Definition: main.c:58
static const WCHAR wshW[]
Definition: main.c:55
#define S_OK
Definition: intsafe.h:51

◆ ActiveScriptSite_GetLCID()

static HRESULT WINAPI ActiveScriptSite_GetLCID ( IActiveScriptSite iface,
LCID plcid 
)
static

Definition at line 79 of file main.c.

80 {
81  WINE_TRACE("()\n");
82 
83  *plcid = GetUserDefaultLCID();
84  return S_OK;
85 }
#define WINE_TRACE
Definition: debug.h:353
LCID WINAPI GetUserDefaultLCID(void)
Definition: lang.c:768
#define S_OK
Definition: intsafe.h:51

◆ ActiveScriptSite_OnEnterScript()

static HRESULT WINAPI ActiveScriptSite_OnEnterScript ( IActiveScriptSite iface)
static

Definition at line 136 of file main.c.

137 {
138  WINE_TRACE("()\n");
139  return S_OK;
140 }
#define WINE_TRACE
Definition: debug.h:353
#define S_OK
Definition: intsafe.h:51

◆ ActiveScriptSite_OnLeaveScript()

static HRESULT WINAPI ActiveScriptSite_OnLeaveScript ( IActiveScriptSite iface)
static

Definition at line 142 of file main.c.

143 {
144  WINE_TRACE("()\n");
145  return S_OK;
146 }
#define WINE_TRACE
Definition: debug.h:353
#define S_OK
Definition: intsafe.h:51

◆ ActiveScriptSite_OnScriptError()

static HRESULT WINAPI ActiveScriptSite_OnScriptError ( IActiveScriptSite iface,
IActiveScriptError pscripterror 
)
static

Definition at line 129 of file main.c.

131 {
132  WINE_FIXME("()\n");
133  return E_NOTIMPL;
134 }
#define E_NOTIMPL
Definition: ddrawi.h:99
#define WINE_FIXME
Definition: debug.h:365

◆ ActiveScriptSite_OnScriptTerminate()

static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate ( IActiveScriptSite iface,
const VARIANT pvarResult,
const EXCEPINFO *  pexcepinfo 
)
static

Definition at line 115 of file main.c.

117 {
118  WINE_FIXME("()\n");
119  return E_NOTIMPL;
120 }
#define E_NOTIMPL
Definition: ddrawi.h:99
#define WINE_FIXME
Definition: debug.h:365

◆ ActiveScriptSite_OnStateChange()

static HRESULT WINAPI ActiveScriptSite_OnStateChange ( IActiveScriptSite iface,
SCRIPTSTATE  ssScriptState 
)
static

Definition at line 122 of file main.c.

124 {
125  WINE_TRACE("(%x)\n", ssScriptState);
126  return S_OK;
127 }
#define WINE_TRACE
Definition: debug.h:353
#define S_OK
Definition: intsafe.h:51

◆ ActiveScriptSite_QueryInterface()

static HRESULT WINAPI ActiveScriptSite_QueryInterface ( IActiveScriptSite iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 63 of file main.c.

65 {
66  return query_interface(riid, ppv);
67 }
static HRESULT query_interface(REFIID, void **)
Definition: main.c:203
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39

◆ ActiveScriptSite_Release()

static ULONG WINAPI ActiveScriptSite_Release ( IActiveScriptSite iface)
static

Definition at line 74 of file main.c.

75 {
76  return 1;
77 }

◆ ActiveScriptSiteWindow_AddRef()

static ULONG WINAPI ActiveScriptSiteWindow_AddRef ( IActiveScriptSiteWindow iface)
static

Definition at line 169 of file main.c.

170 {
171  return 2;
172 }

◆ ActiveScriptSiteWindow_EnableModeless()

static HRESULT WINAPI ActiveScriptSiteWindow_EnableModeless ( IActiveScriptSiteWindow iface,
BOOL  fEnable 
)
static

Definition at line 187 of file main.c.

188 {
189  TRACE("(%x)\n", fEnable);
190  return S_OK;
191 }
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:51

◆ ActiveScriptSiteWindow_GetWindow()

static HRESULT WINAPI ActiveScriptSiteWindow_GetWindow ( IActiveScriptSiteWindow iface,
HWND phwnd 
)
static

Definition at line 179 of file main.c.

180 {
181  TRACE("(%p)\n", phwnd);
182 
183  *phwnd = NULL;
184  return S_OK;
185 }
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:51
#define NULL
Definition: types.h:112

◆ ActiveScriptSiteWindow_QueryInterface()

static HRESULT WINAPI ActiveScriptSiteWindow_QueryInterface ( IActiveScriptSiteWindow iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 164 of file main.c.

165 {
166  return query_interface(riid, ppv);
167 }
static HRESULT query_interface(REFIID, void **)
Definition: main.c:203
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39

◆ ActiveScriptSiteWindow_Release()

static ULONG WINAPI ActiveScriptSiteWindow_Release ( IActiveScriptSiteWindow iface)
static

Definition at line 174 of file main.c.

175 {
176  return 1;
177 }

◆ create_engine()

static BOOL create_engine ( CLSID clsid,
IActiveScript **  script_ret,
IActiveScriptParse **  parser 
)
static

Definition at line 283 of file main.c.

285 {
287  IUnknown *unk;
288  HRESULT hres;
289 
290  hres = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
291  &IID_IUnknown, (void**)&unk);
292  if(FAILED(hres))
293  return FALSE;
294 
295  hres = IUnknown_QueryInterface(unk, &IID_IActiveScript, (void**)&script);
296  IUnknown_Release(unk);
297  if(FAILED(hres))
298  return FALSE;
299 
300  hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParse, (void**)parser);
301  if(FAILED(hres)) {
302  IActiveScript_Release(script);
303  return FALSE;
304  }
305 
306  *script_ret = script;
307  return TRUE;
308 }
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
script
Definition: msipriv.h:374
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:79
const GUID IID_IUnknown
REFCLSID clsid
Definition: msctf.c:82
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
#define NULL
Definition: types.h:112
Definition: import.c:85

Referenced by wWinMain().

◆ get_engine_clsid()

static BOOL get_engine_clsid ( const WCHAR ext,
CLSID clsid 
)
static

Definition at line 243 of file main.c.

244 {
245  WCHAR fileid[64], progid[64];
246  DWORD res;
247  LONG size;
248  HKEY hkey;
249  HRESULT hres;
250 
251  static const WCHAR script_engineW[] =
252  {'\\','S','c','r','i','p','t','E','n','g','i','n','e',0};
253 
255  if(res != ERROR_SUCCESS)
256  return FALSE;
257 
258  size = ARRAY_SIZE(fileid);
259  res = RegQueryValueW(hkey, NULL, fileid, &size);
260  RegCloseKey(hkey);
261  if(res != ERROR_SUCCESS)
262  return FALSE;
263 
264  WINE_TRACE("fileid is %s\n", wine_dbgstr_w(fileid));
265 
266  lstrcatW(fileid, script_engineW);
267  res = RegOpenKeyW(HKEY_CLASSES_ROOT, fileid, &hkey);
268  if(res != ERROR_SUCCESS)
269  return FALSE;
270 
272  res = RegQueryValueW(hkey, NULL, progid, &size);
273  RegCloseKey(hkey);
274  if(res != ERROR_SUCCESS)
275  return FALSE;
276 
277  WINE_TRACE("ProgID is %s\n", wine_dbgstr_w(progid));
278 
280  return SUCCEEDED(hres);
281 }
#define ERROR_SUCCESS
Definition: deptool.c:10
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
#define WINE_TRACE
Definition: debug.h:353
HRESULT WINAPI DECLSPEC_HOTPATCH CLSIDFromProgID(LPCOLESTR progid, LPCLSID clsid)
Definition: compobj.c:2602
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
#define FALSE
Definition: types.h:117
long LONG
Definition: pedump.c:60
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3296
if SUCCEEDED(hr)
char ext[3]
Definition: mkdosfs.c:358
GLsizeiptr size
Definition: glext.h:5919
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:79
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
Definition: reg.c:4254
unsigned long DWORD
Definition: ntddk_ex.h:95
REFCLSID clsid
Definition: msctf.c:82
#define ARRAY_SIZE(a)
Definition: main.h:24
#define NULL
Definition: types.h:112
GLuint res
Definition: glext.h:9613
#define progid(str)
Definition: exdisp.idl:31
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274

Referenced by wWinMain().

◆ get_script_str()

static BSTR get_script_str ( const WCHAR filename)
static

Definition at line 337 of file main.c.

338 {
339  const char *file_map;
340  HANDLE file, map;
341  DWORD size, len;
342  BSTR ret;
343 
346  return NULL;
347 
350  CloseHandle(file);
352  return NULL;
353 
354  file_map = MapViewOfFile(map, FILE_MAP_READ, 0, 0, 0);
355  CloseHandle(map);
356  if(!file_map)
357  return NULL;
358 
359  len = MultiByteToWideChar(CP_ACP, 0, file_map, size, NULL, 0);
361  MultiByteToWideChar(CP_ACP, 0, file_map, size, ret, len);
362 
363  UnmapViewOfFile(file_map);
364  return ret;
365 }
#define CloseHandle
Definition: compat.h:598
#define MapViewOfFile
Definition: compat.h:604
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
#define CP_ACP
Definition: compat.h:109
#define INVALID_HANDLE_VALUE
Definition: compat.h:590
OLECHAR * BSTR
Definition: compat.h:2152
const char * filename
Definition: ioapi.h:135
#define FILE_MAP_READ
Definition: compat.h:635
#define OPEN_EXISTING
Definition: compat.h:634
GLsizeiptr size
Definition: glext.h:5919
#define CreateFileMappingW(a, b, c, d, e, f)
Definition: compat.h:603
const char file[]
Definition: icontest.c:11
#define FILE_ATTRIBUTE_READONLY
Definition: nt_native.h:702
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
Definition: fileinfo.c:331
Definition: _map.h:44
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define GENERIC_READ
Definition: compat.h:135
#define NULL
Definition: types.h:112
#define PAGE_READONLY
Definition: compat.h:138
#define MultiByteToWideChar
Definition: compat.h:110
#define CreateFileW
Definition: compat.h:600
#define UnmapViewOfFile
Definition: compat.h:605
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint GLenum GLenum GLenum GLint GLuint GLenum GLenum GLfloat GLenum GLfloat GLenum map
Definition: glfuncs.h:262
Definition: fci.c:126

Referenced by run_script().

◆ init_engine()

static BOOL init_engine ( IActiveScript script,
IActiveScriptParse *  parser 
)
static

Definition at line 310 of file main.c.

311 {
312  HRESULT hres;
313 
314  if(!load_typelib())
315  return FALSE;
316 
317  hres = IActiveScript_SetScriptSite(script, &script_site);
318  if(FAILED(hres))
319  return FALSE;
320 
322  if(FAILED(hres))
323  return FALSE;
324 
325  hres = IActiveScript_AddNamedItem(script, wscriptW, SCRIPTITEM_ISVISIBLE);
326  if(FAILED(hres))
327  return FALSE;
328 
329  hres = IActiveScript_AddNamedItem(script, wshW, SCRIPTITEM_ISVISIBLE);
330  if(FAILED(hres))
331  return FALSE;
332 
333  hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_INITIALIZED);
334  return SUCCEEDED(hres);
335 }
static IActiveScriptSite script_site
Definition: main.c:162
static BOOL load_typelib(void)
Definition: main.c:224
#define FALSE
Definition: types.h:117
if SUCCEEDED(hr)
script
Definition: msipriv.h:374
static const WCHAR wscriptW[]
Definition: main.c:54
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:79
static const WCHAR wshW[]
Definition: main.c:55
#define IActiveScriptParse_InitNew
Definition: main.c:47
Definition: import.c:85

Referenced by wWinMain().

◆ load_typelib()

static BOOL load_typelib ( void  )
static

Definition at line 224 of file main.c.

225 {
226  ITypeLib *typelib;
227  HRESULT hres;
228 
229  static const WCHAR wscript_exeW[] = {'w','s','c','r','i','p','t','.','e','x','e',0};
230 
231  hres = LoadTypeLib(wscript_exeW, &typelib);
232  if(FAILED(hres))
233  return FALSE;
234 
235  hres = ITypeLib_GetTypeInfoOfGuid(typelib, &IID_IHost, &host_ti);
236  if(SUCCEEDED(hres))
237  hres = ITypeLib_GetTypeInfoOfGuid(typelib, &IID_IArguments2, &arguments_ti);
238 
239  ITypeLib_Release(typelib);
240  return SUCCEEDED(hres);
241 }
static ITypeLib * typelib
Definition: apps.c:108
HRESULT WINAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib **pptLib)
Definition: typelib.c:458
ITypeInfo * arguments_ti
Definition: main.c:59
#define FALSE
Definition: types.h:117
if SUCCEEDED(hr)
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:79
ITypeInfo * host_ti
Definition: main.c:58

Referenced by init_engine().

◆ query_interface()

static HRESULT query_interface ( REFIID  riid,
void **  ppv 
)
static

Definition at line 203 of file main.c.

204 {
205  if(IsEqualGUID(riid, &IID_IUnknown)) {
206  TRACE("(IID_IUnknown %p)\n", ppv);
207  *ppv = &script_site;
208  }else if(IsEqualGUID(riid, &IID_IActiveScriptSite)) {
209  TRACE("(IID_IActiveScriptSite %p)\n", ppv);
210  *ppv = &script_site;
211  }else if(IsEqualGUID(riid, &IID_IActiveScriptSiteWindow)) {
212  TRACE("(IID_IActiveScriptSiteWindow %p)\n", ppv);
214  }else {
215  *ppv = NULL;
216  TRACE("(%s %p)\n", wine_dbgstr_guid(riid), ppv);
217  return E_NOINTERFACE;
218  }
219 
220  IUnknown_AddRef((IUnknown*)*ppv);
221  return S_OK;
222 }
static IActiveScriptSite script_site
Definition: main.c:162
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
const char * wine_dbgstr_guid(const GUID *guid)
#define TRACE(s)
Definition: solgame.cpp:4
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:51
static IActiveScriptSiteWindow script_site_window
Definition: main.c:201
#define NULL
Definition: types.h:112
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112

Referenced by ActiveScriptSite_QueryInterface(), and ActiveScriptSiteWindow_QueryInterface().

◆ run_script()

static void run_script ( const WCHAR filename,
IActiveScript script,
IActiveScriptParse *  parser 
)
static

Definition at line 367 of file main.c.

368 {
369  BSTR text;
370  HRESULT hres;
371 
373  if(!text) {
374  WINE_FIXME("Could not get script text\n");
375  return;
376  }
377 
379  SCRIPTTEXT_HOSTMANAGESSOURCE|SCRIPTITEM_ISVISIBLE, NULL, NULL);
381  if(FAILED(hres)) {
382  WINE_FIXME("ParseScriptText failed: %08x\n", hres);
383  return;
384  }
385 
386  hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_STARTED);
387  if(FAILED(hres))
388  WINE_FIXME("SetScriptState failed: %08x\n", hres);
389 }
const WCHAR * text
Definition: package.c:1827
OLECHAR * BSTR
Definition: compat.h:2152
const char * filename
Definition: ioapi.h:135
script
Definition: msipriv.h:374
static BSTR get_script_str(const WCHAR *filename)
Definition: main.c:337
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:79
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
#define NULL
Definition: types.h:112
Definition: import.c:85
#define IActiveScriptParse_ParseScriptText
Definition: main.c:48
#define WINE_FIXME
Definition: debug.h:365

Referenced by wWinMain().

◆ set_host_properties()

static BOOL set_host_properties ( const WCHAR prop)
static

Definition at line 391 of file main.c.

392 {
393  static const WCHAR nologoW[] = {'n','o','l','o','g','o',0};
394  static const WCHAR iactive[] = {'i',0};
395  static const WCHAR batch[] = {'b',0};
396 
397  if(*prop == '/') {
398  ++prop;
399  if(*prop == '/')
400  ++prop;
401  }
402  else
403  ++prop;
404 
405  if(wcsicmp(prop, iactive) == 0)
406  wshInteractive = VARIANT_TRUE;
407  else if(wcsicmp(prop, batch) == 0)
408  wshInteractive = VARIANT_FALSE;
409  else if(wcsicmp(prop, nologoW) == 0)
410  WINE_FIXME("ignored %s switch\n", debugstr_w(nologoW));
411  else
412  {
413  WINE_FIXME("unsupported switch %s\n", debugstr_w(prop));
414  return FALSE;
415  }
416  return TRUE;
417 }
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define debugstr_w
Definition: kernel32.h:32
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define wcsicmp
Definition: compat.h:15
VARIANT_BOOL wshInteractive
Definition: host.c:40
#define WINE_FIXME
Definition: debug.h:365

Referenced by wWinMain().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( wscript  )

◆ wWinMain()

int WINAPI wWinMain ( HINSTANCE  hInstance,
HINSTANCE  hPrevInstance,
LPWSTR  lpCmdLine,
int  nShowCmd 
)

This file has no copyright assigned and is placed in the Public Domain. This file is part of the w64 mingw-runtime package. No warranty is given; refer to the file DISCLAIMER.PD within this package.

Definition at line 419 of file main.c.

420 {
421  WCHAR *ext, *filepart, *filename = NULL;
422  IActiveScriptParse *parser;
424  WCHAR **argv;
425  CLSID clsid;
426  int argc, i;
427  DWORD res;
428 
429  WINE_TRACE("(%p %p %s %x)\n", hInst, hPrevInst, wine_dbgstr_w(cmdline), cmdshow);
430 
432  if(!argv)
433  return 1;
434 
435  for(i=1; i<argc; i++) {
436  if(*argv[i] == '/' || *argv[i] == '-') {
437  if(!set_host_properties(argv[i]))
438  return 1;
439  }else {
440  filename = argv[i];
441  argums = argv+i+1;
442  numOfArgs = argc-i-1;
443  break;
444  }
445  }
446 
447  if(!filename) {
448  WINE_FIXME("No file name specified\n");
449  return 1;
450  }
452  if(!res || res > ARRAY_SIZE(scriptFullName))
453  return 1;
454 
455  ext = wcsrchr(filepart, '.');
456  if(!ext || !get_engine_clsid(ext, &clsid)) {
457  WINE_FIXME("Could not find engine for %s\n", wine_dbgstr_w(ext));
458  return 1;
459  }
460 
462 
463  if(!create_engine(&clsid, &script, &parser)) {
464  WINE_FIXME("Could not create script engine\n");
465  CoUninitialize();
466  return 1;
467  }
468 
469  if(init_engine(script, parser)) {
471  IActiveScript_Close(script);
472  ITypeInfo_Release(host_ti);
473  }else {
474  WINE_FIXME("Script initialization failed\n");
475  }
476 
477  IActiveScript_Release(script);
479 
480  CoUninitialize();
481 
482  return 0;
483 }
static BOOL create_engine(CLSID *clsid, IActiveScript **script_ret, IActiveScriptParse **parser)
Definition: main.c:283
static int argc
Definition: ServiceArgs.c:12
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
static BOOL get_engine_clsid(const WCHAR *ext, CLSID *clsid)
Definition: main.c:243
#define WINE_TRACE
Definition: debug.h:353
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
Definition: path.c:1105
WCHAR ** argums
Definition: arguments.c:34
TCHAR * cmdline
Definition: stretchblt.cpp:32
#define argv
Definition: mplay32.c:18
const char * filename
Definition: ioapi.h:135
HINSTANCE hInst
Definition: main.c:29
WCHAR scriptFullName[MAX_PATH]
Definition: main.c:56
LPWSTR WINAPI GetCommandLineW(VOID)
Definition: proc.c:2015
static BOOL set_host_properties(const WCHAR *prop)
Definition: main.c:391
LPWSTR *WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int *numargs)
Definition: shell32_main.c:79
char ext[3]
Definition: mkdosfs.c:358
script
Definition: msipriv.h:374
static BOOL init_engine(IActiveScript *script, IActiveScriptParse *parser)
Definition: main.c:310
__wchar_t WCHAR
Definition: xmlstorage.h:180
int numOfArgs
Definition: arguments.c:35
unsigned long DWORD
Definition: ntddk_ex.h:95
ITypeInfo * host_ti
Definition: main.c:58
#define IActiveScriptParse_Release
Definition: main.c:46
REFCLSID clsid
Definition: msctf.c:82
#define wcsrchr
Definition: compat.h:16
static void run_script(const WCHAR *filename, IActiveScript *script, IActiveScriptParse *parser)
Definition: main.c:367
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
#define ARRAY_SIZE(a)
Definition: main.h:24
#define NULL
Definition: types.h:112
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
Definition: import.c:85
GLuint res
Definition: glext.h:9613
#define WINE_FIXME
Definition: debug.h:365

Variable Documentation

◆ ActiveScriptSiteVtbl

IActiveScriptSiteVtbl ActiveScriptSiteVtbl
static
Initial value:
= {
}
static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate(IActiveScriptSite *iface, const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
Definition: main.c:115
static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface, LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppunkItem, ITypeInfo **ppti)
Definition: main.c:87
static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
Definition: main.c:136
static HRESULT WINAPI ActiveScriptSite_OnLeaveScript(IActiveScriptSite *iface)
Definition: main.c:142
static HRESULT WINAPI ActiveScriptSite_GetDocVersionString(IActiveScriptSite *iface, BSTR *pbstrVersion)
Definition: main.c:108
static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *pscripterror)
Definition: main.c:129
static HRESULT WINAPI ActiveScriptSite_GetLCID(IActiveScriptSite *iface, LCID *plcid)
Definition: main.c:79
static ULONG WINAPI ActiveScriptSite_Release(IActiveScriptSite *iface)
Definition: main.c:74
static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **ppv)
Definition: main.c:63
static ULONG WINAPI ActiveScriptSite_AddRef(IActiveScriptSite *iface)
Definition: main.c:69
static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, SCRIPTSTATE ssScriptState)
Definition: main.c:122

Definition at line 148 of file main.c.

◆ ActiveScriptSiteWindowVtbl

const IActiveScriptSiteWindowVtbl ActiveScriptSiteWindowVtbl
static
Initial value:
= {
}
static HRESULT WINAPI ActiveScriptSiteWindow_GetWindow(IActiveScriptSiteWindow *iface, HWND *phwnd)
Definition: main.c:179
static HRESULT WINAPI ActiveScriptSiteWindow_EnableModeless(IActiveScriptSiteWindow *iface, BOOL fEnable)
Definition: main.c:187
static HRESULT WINAPI ActiveScriptSiteWindow_QueryInterface(IActiveScriptSiteWindow *iface, REFIID riid, void **ppv)
Definition: main.c:164
static ULONG WINAPI ActiveScriptSiteWindow_AddRef(IActiveScriptSiteWindow *iface)
Definition: main.c:169
static ULONG WINAPI ActiveScriptSiteWindow_Release(IActiveScriptSiteWindow *iface)
Definition: main.c:174

Definition at line 193 of file main.c.

◆ arguments_ti

ITypeInfo* arguments_ti

◆ host_ti

◆ script_site

IActiveScriptSite script_site = { &ActiveScriptSiteVtbl }
static

Definition at line 162 of file main.c.

Referenced by init_engine(), and query_interface().

◆ script_site_window

IActiveScriptSiteWindow script_site_window = { &ActiveScriptSiteWindowVtbl }
static

Definition at line 201 of file main.c.

Referenced by query_interface().

◆ scriptFullName

WCHAR scriptFullName[MAX_PATH]

Definition at line 56 of file main.c.

Referenced by Host_get_ScriptFullName(), Host_get_ScriptName(), and wWinMain().

◆ wscriptW

const WCHAR wscriptW[] = {'W','S','c','r','i','p','t',0}
static

Definition at line 54 of file main.c.

Referenced by ActiveScriptSite_GetItemInfo(), and init_engine().

◆ wshW

const WCHAR wshW[] = {'W','S','H',0}
static

Definition at line 55 of file main.c.

Referenced by ActiveScriptSite_GetItemInfo(), and init_engine().