41#define IActiveScriptParse_Release IActiveScriptParse64_Release
42#define IActiveScriptParse_InitNew IActiveScriptParse64_InitNew
43#define IActiveScriptParse_ParseScriptText IActiveScriptParse64_ParseScriptText
47#define IActiveScriptParse_Release IActiveScriptParse32_Release
48#define IActiveScriptParse_InitNew IActiveScriptParse32_InitNew
49#define IActiveScriptParse_ParseScriptText IActiveScriptParse32_ParseScriptText
73static void SVect_Free(SIMPLEVECTOR *pV)
80static void* SVect_Add(SIMPLEVECTOR *pV)
89 p = (
char*)
p + (pV->count * pV->itemsize);
104#define SVect_Delete(pV, pItem) ( (pV), (pItem) )
106static void* SVect_Get(SIMPLEVECTOR *pV,
UINT i)
108 return pV->mem &&
i < pV->count ? (
char*)pV->mem + (
i * pV->itemsize) :
NULL;
116SIMPLEVECTOR g_global_items = {
sizeof(GLOBAL_ITEM) };
118static void free_globals(
void)
123 GLOBAL_ITEM *
p = (GLOBAL_ITEM*)SVect_Get(&g_global_items,
i);
126 IUnknown_Release(
p->punk);
129 SVect_Free(&g_global_items);
141 item = SVect_Add(&g_global_items);
149 IUnknown_AddRef(
punk);
152 SVect_Delete(&g_global_items,
item);
165 IUnknown_Release(
punk);
176 GLOBAL_ITEM *
p = (GLOBAL_ITEM*)SVect_Get(&g_global_items,
i);
183 if (
Mask & SCRIPTINFO_IUNKNOWN)
188 IUnknown_AddRef(
p->punk);
232 HRESULT hr = get_globalitem_info(pstrName, dwReturnMask, ppunkItem, ppti, &handled);
241 if(dwReturnMask & SCRIPTINFO_ITYPEINFO) {
246 if(dwReturnMask & SCRIPTINFO_IUNKNOWN) {
262 const VARIANT *pvarResult,
const EXCEPINFO *pexcepinfo)
358 #ifndef CSCRIPT_BUILD
359 #define APPNAME L"WScript"
361 #define APPNAME L"CScript"
366 case IDS_USAGE:
str =
L"Usage: " APPNAME L" scriptname.extension [option...] [arguments...]\n";
break;
370 case IDS_TIMEOUT_EXCEEDED:
str =
L"Script execution time was exceeded on script ""%1"".\n\nScript execution was terminated.\n";
break;
439 const char * (
CDECL *wine_get_version)(
void);
464 hres = IActiveScriptError_GetExceptionInfo(pscripterror, &
excepinfo);
468 IActiveScriptError_GetSourcePosition(pscripterror,
NULL, &
line, &character);
530 TRACE(
"(%p)\n", phwnd);
538 TRACE(
"(%x)\n", fEnable);
558 TRACE(
"(IID_IActiveScriptSite %p)\n",
ppv);
561 TRACE(
"(IID_IActiveScriptSiteWindow %p)\n",
ppv);
628 IActiveScriptParse **
parser)
639 hres = IUnknown_QueryInterface(unk, &IID_IActiveScript, (
void**)&
script);
640 IUnknown_Release(unk);
644 hres = IActiveScript_QueryInterface(
script, &IID_IActiveScriptParse, (
void**)
parser);
646 IActiveScript_Release(
script);
669 hres = IActiveScript_AddNamedItem(
script,
L"WScript", SCRIPTITEM_ISVISIBLE);
673 hres = IActiveScript_AddNamedItem(
script,
L"WSH", SCRIPTITEM_ISVISIBLE);
683 const char *file_map;
709 if(
size >= 2 && (
BYTE)file_map[0] == 0xFF && (
BYTE)file_map[1] == 0xFE)
732 SCRIPTTEXT_HOSTMANAGESSOURCE|SCRIPTITEM_ISVISIBLE,
NULL,
NULL);
734 if(
hres != SCRIPT_E_REPORTED)
741 if(
hres != SCRIPT_E_REPORTED)
758 if (bsname &&
SUCCEEDED(
hr = IXMLDOMNode_get_attributes(pnode, &
pmap)))
760 if (
SUCCEEDED(
hr = IXMLDOMNamedNodeMap_getNamedItem(
pmap, bsname, &pnode)))
765 hr = IXMLDOMNode_get_text(pnode, pout);
768 IXMLDOMNode_Release(pnode);
771 IXMLDOMNamedNodeMap_Release(
pmap);
783 if (bsname &&
SUCCEEDED(
hr = IXMLDOMElement_getElementsByTagName(pelem, bsname, &pnl)))
785 hr = IXMLDOMNodeList_get_item(pnl,
index, ppout);
788 IUnknown_Release(pnl);
801 hr = IUnknown_QueryInterface(pnode, &IID_IXMLDOMElement, (
void**)ppout);
802 IUnknown_Release(pnode);
810 if (
SUCCEEDED(xmldomnode_getattributevalue(
obj,
L"id", &bsid)))
814 hr = xmldomnode_getattributevalue(
obj,
L"clsid", &bsclsid);
818 if (
SUCCEEDED(
hr = xmldomnode_getattributevalue(
obj,
L"progid", &bsclsid)))
826 hr = add_globalitem_from_clsid(
script, bsid, &
clsid, SCRIPTITEM_ISVISIBLE);
839 if (
SUCCEEDED(xmldomelem_getelembytag(jobtag,
L"script", 0, &scripttag)))
842 IActiveScriptParse *
parser;
844 if (
FAILED(xmldomnode_getattributevalue(scripttag,
L"language", &
lang)))
863 IUnknown_Release(
obj);
874 SCRIPTTEXT_HOSTMANAGESSOURCE|SCRIPTITEM_ISVISIBLE,
879 IActiveScript_Close(
script);
889 IUnknown_Release(scripttag);
922 &IID_IXMLDOMDocument, (
void**)&pdoc);
931 if (!bsurl || (
hr = IXMLDOMDocument_load(pdoc,
v, &succ)) > 0 || (
SUCCEEDED(
hr) && !succ))
938 if (
SUCCEEDED(
hr = IXMLDOMElement_get_tagName(pdocelm, &tagName)))
944 if (
SUCCEEDED(
hr = xmldomelem_getelembytagasdomelem(pdocelm,
L"job", 0, &
p)))
946 IUnknown_Release(pdocelm);
959 hr = run_wsfjob(pdocelm);
961 IUnknown_Release(pdocelm);
964 IUnknown_Release(pdoc);
987 else if(
wcsicmp(prop,
L"nologo") == 0)
989 else if(
wcsicmp(prop,
L"logo") == 0)
1001 g_force_engine = &prop[2];
1007 else if(
wcsnicmp(prop,
L"job:", 4) == 0)
1009 else if(
wcsnicmp(prop,
L"t:", 2) == 0) {
1012 if(
end == prop + 2 || *
end ||
t < 0)
1024 IActiveScriptParse *
parser;
1060 int j = 0, first_arg =
i;
1073 WINE_FIXME(
"Settings dialog not implemented\n");
1113 while(
len > 0 && (syserr[
len - 1] ==
'\r' || syserr[
len - 1] ==
'\n' || syserr[
len - 1] ==
' '))
1126 if(g_force_engine) {
1139 WINE_FIXME(
"Could not create script engine\n");
1149 IActiveScript_Close(
script);
1152 WINE_FIXME(
"Script initialization failed\n");
1156 IActiveScript_Release(
script);
@ SCRIPTSTATE_INITIALIZED
enum tagSCRIPTSTATE SCRIPTSTATE
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static ULONG WINAPI ActiveScriptSite_Release(IActiveScriptSite *iface)
static ULONG WINAPI ActiveScriptSiteWindow_Release(IActiveScriptSiteWindow *iface)
static HRESULT WINAPI ActiveScriptSite_OnLeaveScript(IActiveScriptSite *iface)
static BSTR get_script_str(const WCHAR *filename)
static void print_string(const WCHAR *string)
static HRESULT query_interface(REFIID, void **)
static void output_formatstring(const WCHAR *fmt, va_list va_args)
static DWORD WINAPI timeout_thread_proc(void *arg)
static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, SCRIPTSTATE ssScriptState)
static HANDLE timeout_thread
WCHAR scriptFullName[MAX_PATH]
static const IActiveScriptSiteWindowVtbl ActiveScriptSiteWindowVtbl
static void write_to_handle(HANDLE handle, const WCHAR *string)
static void output_writeconsole(const WCHAR *str, DWORD wlen)
static HRESULT WINAPI ActiveScriptSite_GetDocVersionString(IActiveScriptSite *iface, BSTR *pbstrVersion)
static BOOL get_engine_clsid(const WCHAR *ext, CLSID *clsid)
#define IActiveScriptParse_InitNew
#define IActiveScriptParse_ParseScriptText
#define IActiveScriptParse_Release
static BOOL init_engine(IActiveScript *script, IActiveScriptParse *parser)
static BOOL load_typelib(void)
static void WINAPIV print_resource(unsigned int id,...)
void schedule_timeout(LONG seconds)
static HRESULT WINAPI ActiveScriptSiteWindow_GetWindow(IActiveScriptSiteWindow *iface, HWND *phwnd)
static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **ppv)
static BOOL create_engine(CLSID *clsid, IActiveScript **script_ret, IActiveScriptParse **parser)
static void print_banner(void)
static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
static HRESULT WINAPI ActiveScriptSiteWindow_EnableModeless(IActiveScriptSiteWindow *iface, BOOL fEnable)
static ULONG WINAPI ActiveScriptSite_AddRef(IActiveScriptSite *iface)
static HANDLE timeout_cancel_event
static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate(IActiveScriptSite *iface, const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
static HRESULT WINAPI ActiveScriptSiteWindow_QueryInterface(IActiveScriptSiteWindow *iface, REFIID riid, void **ppv)
int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cmdshow)
static IActiveScriptSiteWindow script_site_window
static void print_error(const WCHAR *string)
static IActiveScriptSiteVtbl ActiveScriptSiteVtbl
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_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *pscripterror)
static IActiveScriptSite script_site
static ULONG WINAPI ActiveScriptSiteWindow_AddRef(IActiveScriptSiteWindow *iface)
static BOOL set_host_properties(const WCHAR *prop)
#define IDS_FILE_NOT_FOUND
#define IDS_NO_SCRIPT_FILE
#define IDS_SCRIPT_LOAD_ERROR
#define IDS_TIMEOUT_EXCEEDED
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
#define RegCloseKey(hKey)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
HRESULT WINAPI DECLSPEC_HOTPATCH CLSIDFromProgID(LPCOLESTR progid, CLSID *clsid)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileMappingW(a, b, c, d, e, f)
#define ERROR_NO_MORE_ITEMS
#define WideCharToMultiByte
#define MultiByteToWideChar
static const WCHAR *const ext[]
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleW(IN HANDLE hConsoleOutput, IN CONST VOID *lpBuffer, IN DWORD nNumberOfCharsToWrite, OUT LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
BOOL WINAPI WriteFile(_In_ HANDLE hFile, _In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
VOID WINAPI ExitProcess(IN UINT uExitCode)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
LCID WINAPI GetUserDefaultLCID(void)
UINT WINAPI GetOEMCP(void)
HRESULT WINAPI UrlCreateFromPathW(const WCHAR *path, WCHAR *url, DWORD *url_len, DWORD reserved)
LPWSTR WINAPI GetCommandLineW(void)
_ACRTIMP __msvcrt_long __cdecl wcstol(const wchar_t *, wchar_t **, int)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
HRESULT WINAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib **pptLib)
WCHAR **WINAPI CommandLineToArgvW(const WCHAR *cmdline, int *numargs)
GLuint GLuint GLsizei count
GLenum GLuint GLenum GLsizei const GLchar * buf
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
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 j
HLOCAL NTAPI LocalReAlloc(HLOCAL hMem, SIZE_T dwBytes, UINT uFlags)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
VARIANT_BOOL wshInteractive
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define ERROR_FILE_NOT_FOUND
static EXCEPINFO excepinfo
#define FILE_ATTRIBUTE_READONLY
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
#define IsEqualGUID(rguid1, rguid2)
static __inline const char * wine_dbgstr_guid(const GUID *id)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
static const WCHAR lang[]
#define STD_OUTPUT_HANDLE
DWORD WINAPI GetLastError(void)
#define FORMAT_MESSAGE_FROM_STRING
#define FORMAT_MESSAGE_IGNORE_INSERTS
#define FORMAT_MESSAGE_FROM_SYSTEM
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define ERROR_NO_WORK_DONE
#define ERROR_PATH_NOT_FOUND
#define HKEY_CLASSES_ROOT
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)