ReactOS 0.4.17-dev-243-g1369312
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 206 of file main.c.

207{
208 return 2;
209}

◆ ActiveScriptSite_GetDocVersionString()

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

Definition at line 254 of file main.c.

256{
257 WINE_FIXME("()\n");
258 return E_NOTIMPL;
259}
#define E_NOTIMPL
Definition: ddrawi.h:99
#define WINE_FIXME
Definition: debug.h:340

◆ ActiveScriptSite_GetItemInfo()

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

Definition at line 224 of file main.c.

226{
227 WINE_TRACE("(%s %x %p %p)\n", wine_dbgstr_w(pstrName), dwReturnMask, ppunkItem, ppti);
228
229#ifdef __REACTOS__
230 {
231 BOOL handled = FALSE;
232 HRESULT hr = get_globalitem_info(pstrName, dwReturnMask, ppunkItem, ppti, &handled);
233 if (handled)
234 return hr;
235 }
236#endif
237
238 if(lstrcmpW(pstrName, wshW) && lstrcmpW(pstrName, wscriptW))
239 return E_FAIL;
240
241 if(dwReturnMask & SCRIPTINFO_ITYPEINFO) {
242 ITypeInfo_AddRef(host_ti);
243 *ppti = host_ti;
244 }
245
246 if(dwReturnMask & SCRIPTINFO_IUNKNOWN) {
247 IHost_AddRef(&host_obj);
248 *ppunkItem = (IUnknown*)&host_obj;
249 }
250
251 return S_OK;
252}
static const WCHAR wshW[]
Definition: main.c:55
static const WCHAR wscriptW[]
Definition: main.c:54
ITypeInfo * host_ti
Definition: main.c:58
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
#define FALSE
Definition: types.h:117
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4152
unsigned int BOOL
Definition: ntddk_ex.h:94
IHost host_obj
Definition: host.c:479
#define S_OK
Definition: intsafe.h:52
#define wine_dbgstr_w
Definition: kernel32.h:34
#define WINE_TRACE
Definition: debug.h:328

◆ ActiveScriptSite_GetLCID()

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

Definition at line 216 of file main.c.

217{
218 WINE_TRACE("()\n");
219
220 *plcid = GetUserDefaultLCID();
221 return S_OK;
222}
LCID WINAPI GetUserDefaultLCID(void)
Definition: locale.c:1216

◆ ActiveScriptSite_OnEnterScript()

static HRESULT WINAPI ActiveScriptSite_OnEnterScript ( IActiveScriptSite iface)
static

Definition at line 282 of file main.c.

283{
284 WINE_TRACE("()\n");
285 return S_OK;
286}

◆ ActiveScriptSite_OnLeaveScript()

static HRESULT WINAPI ActiveScriptSite_OnLeaveScript ( IActiveScriptSite iface)
static

Definition at line 288 of file main.c.

289{
290 WINE_TRACE("()\n");
291 return S_OK;
292}

◆ ActiveScriptSite_OnScriptError()

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

Definition at line 275 of file main.c.

277{
278 WINE_FIXME("()\n");
279 return E_NOTIMPL;
280}

◆ ActiveScriptSite_OnScriptTerminate()

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

Definition at line 261 of file main.c.

263{
264 WINE_FIXME("()\n");
265 return E_NOTIMPL;
266}

◆ ActiveScriptSite_OnStateChange()

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

Definition at line 268 of file main.c.

270{
271 WINE_TRACE("(%x)\n", ssScriptState);
272 return S_OK;
273}

◆ ActiveScriptSite_QueryInterface()

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

Definition at line 200 of file main.c.

202{
203 return query_interface(riid, ppv);
204}
static HRESULT query_interface(REFIID, void **)
Definition: main.c:349
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39

◆ ActiveScriptSite_Release()

static ULONG WINAPI ActiveScriptSite_Release ( IActiveScriptSite iface)
static

Definition at line 211 of file main.c.

212{
213 return 1;
214}

◆ ActiveScriptSiteWindow_AddRef()

static ULONG WINAPI ActiveScriptSiteWindow_AddRef ( IActiveScriptSiteWindow iface)
static

Definition at line 315 of file main.c.

316{
317 return 2;
318}

◆ ActiveScriptSiteWindow_EnableModeless()

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

Definition at line 333 of file main.c.

334{
335 TRACE("(%x)\n", fEnable);
336 return S_OK;
337}
#define TRACE(s)
Definition: solgame.cpp:4

◆ ActiveScriptSiteWindow_GetWindow()

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

Definition at line 325 of file main.c.

326{
327 TRACE("(%p)\n", phwnd);
328
329 *phwnd = NULL;
330 return S_OK;
331}
#define NULL
Definition: types.h:112

◆ ActiveScriptSiteWindow_QueryInterface()

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

Definition at line 310 of file main.c.

311{
312 return query_interface(riid, ppv);
313}

◆ ActiveScriptSiteWindow_Release()

static ULONG WINAPI ActiveScriptSiteWindow_Release ( IActiveScriptSiteWindow iface)
static

Definition at line 320 of file main.c.

321{
322 return 1;
323}

◆ create_engine()

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

Definition at line 429 of file main.c.

431{
433 IUnknown *unk;
435
436 hres = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
437 &IID_IUnknown, (void**)&unk);
438 if(FAILED(hres))
439 return FALSE;
440
441 hres = IUnknown_QueryInterface(unk, &IID_IActiveScript, (void**)&script);
442 IUnknown_Release(unk);
443 if(FAILED(hres))
444 return FALSE;
445
446 hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParse, (void**)parser);
447 if(FAILED(hres)) {
448 IActiveScript_Release(script);
449 return FALSE;
450 }
451
452 *script_ret = script;
453 return TRUE;
454}
const GUID IID_IUnknown
#define TRUE
Definition: types.h:120
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hres
Definition: protocol.c:465
const CLSID * clsid
Definition: msctf.cpp:50
script
Definition: msipriv.h:383
Definition: import.c:81

Referenced by wWinMain().

◆ get_engine_clsid()

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

Definition at line 389 of file main.c.

390{
391 WCHAR fileid[64], progid[64];
392 DWORD res;
393 LONG size;
394 HKEY hkey;
396
397 static const WCHAR script_engineW[] =
398 {'\\','S','c','r','i','p','t','E','n','g','i','n','e',0};
399
401 if(res != ERROR_SUCCESS)
402 return FALSE;
403
404 size = ARRAY_SIZE(fileid);
405 res = RegQueryValueW(hkey, NULL, fileid, &size);
406 RegCloseKey(hkey);
407 if(res != ERROR_SUCCESS)
408 return FALSE;
409
410 WINE_TRACE("fileid is %s\n", wine_dbgstr_w(fileid));
411
412 lstrcatW(fileid, script_engineW);
413 res = RegOpenKeyW(HKEY_CLASSES_ROOT, fileid, &hkey);
414 if(res != ERROR_SUCCESS)
415 return FALSE;
416
418 res = RegQueryValueW(hkey, NULL, progid, &size);
419 RegCloseKey(hkey);
420 if(res != ERROR_SUCCESS)
421 return FALSE;
422
423 WINE_TRACE("ProgID is %s\n", wine_dbgstr_w(progid));
424
426 return SUCCEEDED(hres);
427}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3268
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
Definition: reg.c:4241
HRESULT WINAPI DECLSPEC_HOTPATCH CLSIDFromProgID(LPCOLESTR progid, CLSID *clsid)
Definition: combase.c:1437
static const WCHAR *const ext[]
Definition: module.c:53
#define progid(str)
Definition: exdisp.idl:31
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint res
Definition: glext.h:9613
GLsizeiptr size
Definition: glext.h:5919
#define SUCCEEDED(hr)
Definition: intsafe.h:50
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10

Referenced by wWinMain().

◆ get_script_str()

static BSTR get_script_str ( const WCHAR filename)
static

Definition at line 483 of file main.c.

484{
485 const char *file_map;
486 HANDLE file, map;
487 DWORD size, len;
488 BSTR ret;
489
492 return NULL;
493
498 return NULL;
499
500 file_map = MapViewOfFile(map, FILE_MAP_READ, 0, 0, 0);
502 if(!file_map)
503 return NULL;
504
505#ifdef __REACTOS__
506 if(size >= 2 && (BYTE)file_map[0] == 0xFF && (BYTE)file_map[1] == 0xFE) // UTF-16LE
507 {
509 if (ret)
510 CopyMemory(ret, file_map + 2, size - 2);
511 UnmapViewOfFile(file_map);
512 return ret;
513 }
514#endif
515
516 len = MultiByteToWideChar(CP_ACP, 0, file_map, size, NULL, 0);
518 MultiByteToWideChar(CP_ACP, 0, file_map, size, ret, len);
519
520 UnmapViewOfFile(file_map);
521 return ret;
522}
Definition: _map.h:48
#define CloseHandle
Definition: compat.h:739
#define PAGE_READONLY
Definition: compat.h:138
#define UnmapViewOfFile
Definition: compat.h:746
#define CP_ACP
Definition: compat.h:109
#define OPEN_EXISTING
Definition: compat.h:775
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define CreateFileMappingW(a, b, c, d, e, f)
Definition: compat.h:744
OLECHAR * BSTR
Definition: compat.h:2293
#define GENERIC_READ
Definition: compat.h:135
#define CreateFileW
Definition: compat.h:741
#define FILE_MAP_READ
Definition: compat.h:776
#define MapViewOfFile
Definition: compat.h:745
#define MultiByteToWideChar
Definition: compat.h:110
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
Definition: fileinfo.c:331
return ret
Definition: mutex.c:146
GLenum GLsizei len
Definition: glext.h:6722
const char * filename
Definition: ioapi.h:137
#define CopyMemory
Definition: minwinbase.h:29
#define FILE_ATTRIBUTE_READONLY
Definition: nt_native.h:702
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
Definition: fci.c:127
unsigned char BYTE
Definition: xxhash.c:193

Referenced by run_script().

◆ init_engine()

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

Definition at line 456 of file main.c.

457{
459
460 if(!load_typelib())
461 return FALSE;
462
463 hres = IActiveScript_SetScriptSite(script, &script_site);
464 if(FAILED(hres))
465 return FALSE;
466
468 if(FAILED(hres))
469 return FALSE;
470
471 hres = IActiveScript_AddNamedItem(script, wscriptW, SCRIPTITEM_ISVISIBLE);
472 if(FAILED(hres))
473 return FALSE;
474
475 hres = IActiveScript_AddNamedItem(script, wshW, SCRIPTITEM_ISVISIBLE);
476 if(FAILED(hres))
477 return FALSE;
478
479 hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_INITIALIZED);
480 return SUCCEEDED(hres);
481}
@ SCRIPTSTATE_INITIALIZED
Definition: activscp.idl:62
#define IActiveScriptParse_InitNew
Definition: main.c:47
static BOOL load_typelib(void)
Definition: main.c:370

Referenced by wWinMain().

◆ load_typelib()

static BOOL load_typelib ( void  )
static

Definition at line 370 of file main.c.

371{
374
375 static const WCHAR wscript_exeW[] = {'w','s','c','r','i','p','t','.','e','x','e',0};
376
377 hres = LoadTypeLib(wscript_exeW, &typelib);
378 if(FAILED(hres))
379 return FALSE;
380
381 hres = ITypeLib_GetTypeInfoOfGuid(typelib, &IID_IHost, &host_ti);
382 if(SUCCEEDED(hres))
383 hres = ITypeLib_GetTypeInfoOfGuid(typelib, &IID_IArguments2, &arguments_ti);
384
385 ITypeLib_Release(typelib);
386 return SUCCEEDED(hres);
387}
ITypeInfo * arguments_ti
Definition: main.c:59
HRESULT WINAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib **pptLib)
Definition: typelib.c:458

Referenced by init_engine(), and ITERATE_RegisterTypeLibraries().

◆ query_interface()

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

Definition at line 349 of file main.c.

350{
352 TRACE("(IID_IUnknown %p)\n", ppv);
353 *ppv = &script_site;
354 }else if(IsEqualGUID(riid, &IID_IActiveScriptSite)) {
355 TRACE("(IID_IActiveScriptSite %p)\n", ppv);
356 *ppv = &script_site;
357 }else if(IsEqualGUID(riid, &IID_IActiveScriptSiteWindow)) {
358 TRACE("(IID_IActiveScriptSiteWindow %p)\n", ppv);
360 }else {
361 *ppv = NULL;
362 TRACE("(%s %p)\n", wine_dbgstr_guid(riid), ppv);
363 return E_NOINTERFACE;
364 }
365
366 IUnknown_AddRef((IUnknown*)*ppv);
367 return S_OK;
368}
static IActiveScriptSiteWindow script_site_window
Definition: main.c:347
static IActiveScriptSite script_site
Definition: main.c:308
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:171
#define E_NOINTERFACE
Definition: winerror.h:3479

Referenced by ActiveScriptSite_QueryInterface(), and ActiveScriptSiteWindow_QueryInterface().

◆ run_script()

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

Definition at line 524 of file main.c.

525{
526 BSTR text;
528
530 if(!text) {
531 WINE_FIXME("Could not get script text\n");
532 return;
533 }
534
536 SCRIPTTEXT_HOSTMANAGESSOURCE|SCRIPTITEM_ISVISIBLE, NULL, NULL);
538 if(FAILED(hres)) {
539 WINE_FIXME("ParseScriptText failed: %08x\n", hres);
540 return;
541 }
542
543 hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_STARTED);
544 if(FAILED(hres))
545 WINE_FIXME("SetScriptState failed: %08x\n", hres);
546}
@ SCRIPTSTATE_STARTED
Definition: activscp.idl:58
static BSTR get_script_str(const WCHAR *filename)
Definition: main.c:483
#define IActiveScriptParse_ParseScriptText
Definition: main.c:48
const WCHAR * text
Definition: package.c:1794
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271

Referenced by InternetGetProxyInfo(), and wWinMain().

◆ set_host_properties()

static BOOL set_host_properties ( const WCHAR prop)
static

Definition at line 773 of file main.c.

774{
775 static const WCHAR nologoW[] = {'n','o','l','o','g','o',0};
776 static const WCHAR iactive[] = {'i',0};
777 static const WCHAR batch[] = {'b',0};
778
779 if(*prop == '/') {
780 ++prop;
781 if(*prop == '/')
782 ++prop;
783 }
784 else
785 ++prop;
786
787 if(wcsicmp(prop, iactive) == 0)
788 wshInteractive = VARIANT_TRUE;
789 else if(wcsicmp(prop, batch) == 0)
790 wshInteractive = VARIANT_FALSE;
791 else if(wcsicmp(prop, nologoW) == 0)
792 WINE_FIXME("ignored %s switch\n", debugstr_w(nologoW));
793#ifdef __REACTOS__
794 else if((prop[0] | 32) == 'e' && prop[1] == ':')
795 g_force_engine = &prop[2];
796#endif
797 else
798 {
799 WINE_FIXME("unsupported switch %s\n", debugstr_w(prop));
800 return FALSE;
801 }
802 return TRUE;
803}
#define wcsicmp
Definition: compat.h:15
VARIANT_BOOL wshInteractive
Definition: host.c:40
#define debugstr_w
Definition: kernel32.h:32

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 805 of file main.c.

806{
807 WCHAR *ext, *filepart, *filename = NULL;
808 IActiveScriptParse *parser;
810 WCHAR **argv;
811 CLSID clsid;
812 int argc, i;
813 DWORD res;
814
815 WINE_TRACE("(%p %p %s %x)\n", hInst, hPrevInst, wine_dbgstr_w(cmdline), cmdshow);
816
818 if(!argv)
819 return 1;
820
821 for(i=1; i<argc; i++) {
822 if(*argv[i] == '/' || *argv[i] == '-') {
824 return 1;
825 }else {
826 filename = argv[i];
827 argums = argv+i+1;
828 numOfArgs = argc-i-1;
829 break;
830 }
831 }
832
833 if(!filename) {
834 WINE_FIXME("No file name specified\n");
835 return 1;
836 }
839 return 1;
840
841 ext = wcsrchr(filepart, '.');
842#ifdef __REACTOS__
843 if (ext && !lstrcmpiW(ext, L".wsf")) {
844 return run_wsf(scriptFullName);
845 }
846
847 if(g_force_engine) {
848 CLSIDFromProgID(g_force_engine, &clsid);
849 }
850 else
851#endif
852 if(!ext || !get_engine_clsid(ext, &clsid)) {
853 WINE_FIXME("Could not find engine for %s\n", wine_dbgstr_w(ext));
854 return 1;
855 }
856
858
859 if(!create_engine(&clsid, &script, &parser)) {
860 WINE_FIXME("Could not create script engine\n");
862 return 1;
863 }
864
867 IActiveScript_Close(script);
868 ITypeInfo_Release(host_ti);
869 }else {
870 WINE_FIXME("Script initialization failed\n");
871 }
872
873 IActiveScript_Release(script);
875
876#ifdef __REACTOS__
877 free_globals();
878#endif
879
881
882 return 0;
883}
int numOfArgs
Definition: arguments.c:35
WCHAR ** argums
Definition: arguments.c:34
WCHAR scriptFullName[MAX_PATH]
Definition: main.c:56
static void run_script(const WCHAR *filename, IActiveScript *script, IActiveScriptParse *parser)
Definition: main.c:524
static BOOL get_engine_clsid(const WCHAR *ext, CLSID *clsid)
Definition: main.c:389
#define IActiveScriptParse_Release
Definition: main.c:46
static BOOL init_engine(IActiveScript *script, IActiveScriptParse *parser)
Definition: main.c:456
static BOOL create_engine(CLSID *clsid, IActiveScript **script_ret, IActiveScriptParse **parser)
Definition: main.c:429
static BOOL set_host_properties(const WCHAR *prop)
Definition: main.c:773
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: combase.c:2842
#define wcsrchr
Definition: compat.h:16
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
Definition: path.c:1106
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4171
LPWSTR WINAPI GetCommandLineW(void)
Definition: process.c:1338
MonoAssembly int argc
Definition: metahost.c:107
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:531
#define L(x)
Definition: resources.c:13
HINSTANCE hInst
Definition: dxdiag.c:13
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
#define argv
Definition: mplay32.c:18
LPWSTR *WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int *numargs)
Definition: shell32_main.c:79
TCHAR * cmdline
Definition: stretchblt.cpp:32

Variable Documentation

◆ ActiveScriptSiteVtbl

IActiveScriptSiteVtbl ActiveScriptSiteVtbl
static
Initial value:
= {
}
static ULONG WINAPI ActiveScriptSite_Release(IActiveScriptSite *iface)
Definition: main.c:211
static HRESULT WINAPI ActiveScriptSite_OnLeaveScript(IActiveScriptSite *iface)
Definition: main.c:288
static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, SCRIPTSTATE ssScriptState)
Definition: main.c:268
static HRESULT WINAPI ActiveScriptSite_GetDocVersionString(IActiveScriptSite *iface, BSTR *pbstrVersion)
Definition: main.c:254
static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **ppv)
Definition: main.c:200
static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
Definition: main.c:282
static ULONG WINAPI ActiveScriptSite_AddRef(IActiveScriptSite *iface)
Definition: main.c:206
static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate(IActiveScriptSite *iface, const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
Definition: main.c:261
static HRESULT WINAPI ActiveScriptSite_GetLCID(IActiveScriptSite *iface, LCID *plcid)
Definition: main.c:216
static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface, LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppunkItem, ITypeInfo **ppti)
Definition: main.c:224
static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *pscripterror)
Definition: main.c:275

Definition at line 294 of file main.c.

◆ ActiveScriptSiteWindowVtbl

const IActiveScriptSiteWindowVtbl ActiveScriptSiteWindowVtbl
static
Initial value:
= {
}
static ULONG WINAPI ActiveScriptSiteWindow_Release(IActiveScriptSiteWindow *iface)
Definition: main.c:320
static HRESULT WINAPI ActiveScriptSiteWindow_GetWindow(IActiveScriptSiteWindow *iface, HWND *phwnd)
Definition: main.c:325
static HRESULT WINAPI ActiveScriptSiteWindow_EnableModeless(IActiveScriptSiteWindow *iface, BOOL fEnable)
Definition: main.c:333
static HRESULT WINAPI ActiveScriptSiteWindow_QueryInterface(IActiveScriptSiteWindow *iface, REFIID riid, void **ppv)
Definition: main.c:310
static ULONG WINAPI ActiveScriptSiteWindow_AddRef(IActiveScriptSiteWindow *iface)
Definition: main.c:315

Definition at line 339 of file main.c.

◆ arguments_ti

ITypeInfo* arguments_ti

◆ host_ti

◆ script_site

Definition at line 308 of file main.c.

Referenced by query_interface().

◆ script_site_window

IActiveScriptSiteWindow script_site_window = { &ActiveScriptSiteWindowVtbl }
static

Definition at line 347 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().