29DEFINE_GUID(
GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
31#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c)
40 hr = IUnknown_QueryInterface(iface, iid, (
void **)&unk);
43 IUnknown_Release(unk);
46#define test_provideclassinfo(a, b) _test_provideclassinfo((IDispatch*)a, b, __LINE__)
55 ok_(__FILE__,
line) (
hr ==
S_OK,
"Failed to get IProvideClassInfo, %#lx.\n",
hr);
57 hr = IProvideClassInfo_GetClassInfo(
classinfo, &ti);
60 hr = ITypeInfo_GetTypeAttr(ti, &
attr);
67 ITypeInfo_ReleaseTypeAttr(ti,
attr);
68 ITypeInfo_Release(ti);
71#define CHECK_BSTR_LENGTH(str) check_bstr_length(str, __LINE__)
81 static const WCHAR cmdexeW[] =
L"\\cmd.exe";
90 IFolderCollection *folders;
107 hr = IDispatch_QueryInterface(disp, &IID_IWshShell3, (
void**)&
shell);
111 hr = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (
void**)&dispex);
113 IDispatch_Release(disp);
115 hr = IUnknown_QueryInterface(
shell, &IID_IWshShell3, (
void**)&sh3);
121 hr = IWshShell3_QueryInterface(sh3, &IID_IWshShell, (
void**)&unk);
123 IUnknown_Release(unk);
125 hr = IWshShell3_QueryInterface(sh3, &IID_IWshShell2, (
void**)&unk);
127 IUnknown_Release(unk);
129 hr = IWshShell3_get_SpecialFolders(sh3, &coll);
133 hr = IWshCollection_QueryInterface(coll, &IID_IFolderCollection, (
void**)&folders);
136 hr = IWshCollection_QueryInterface(coll, &
IID_IDispatch, (
void**)&disp);
139 hr = IDispatch_GetTypeInfo(disp, 0, 0, &ti);
142 hr = ITypeInfo_GetTypeAttr(ti, &tattr);
144 ok(
IsEqualIID(&tattr->guid, &IID_IWshCollection),
"got wrong type guid\n");
145 ITypeInfo_ReleaseTypeAttr(ti, tattr);
152 dp.rgdispidNamedArgs =
NULL;
160 hr = IWshCollection_Item(coll, &
arg, &
res);
169 hr = IWshShell3_CreateShortcut(sh3,
str, &shortcut);
172 hr = IDispatch_QueryInterface(shortcut, &IID_IWshShortcut, (
void**)&shcut);
176 hr = IWshShortcut_get_Arguments(shcut,
NULL);
179 hr = IWshShortcut_get_IconLocation(shcut,
NULL);
182 IWshShortcut_Release(shcut);
183 IDispatch_Release(shortcut);
186 hr = IWshShell3_ExpandEnvironmentStrings(sh3,
NULL,
NULL);
190 hr = IWshShell3_ExpandEnvironmentStrings(sh3,
str,
NULL);
196 hr = IWshShell3_get_Environment(sh3, &
arg, &
env);
232 IWshEnvironment_Release(
env);
320 hr = IWshShell3_get_CurrentDirectory(sh3,
NULL);
323 hr = IWshShell3_get_CurrentDirectory(sh3, &
str);
325 ok(
str &&
str[0] != 0,
"got empty string\n");
329 hr = IWshShell3_put_CurrentDirectory(sh3,
NULL);
334 hr = IWshShell3_put_CurrentDirectory(sh3,
str);
339 hr = IWshShell3_put_CurrentDirectory(sh3,
str);
347 hr = IWshShell3_Exec(sh3,
NULL, &shexec);
351 hr = IWshShell3_Exec(sh3,
str, &shexec);
356 hr = IWshShell3_Exec(sh3,
str, &shexec);
361 hr = IWshShell3_Exec(sh3,
str, &shexec);
365 IWshCollection_Release(coll);
366 IDispatch_Release(disp);
367 IWshShell3_Release(sh3);
368 IUnknown_Release(
shell);
392 static const WCHAR keypathW[] =
L"HKEY_CURRENT_USER\\Software\\Wine\\Test\\";
393 static const WCHAR regszW[] =
L"regsz";
407 &IID_IWshShell3, (
void**)&sh3);
433 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
436 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
439 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
442 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
446 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
450 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
498 ok(dim == 1,
"got %u\n", dim);
502 ok(bound == 0,
"Unexpected value %lu.\n", bound);
506 ok(bound == 3,
"Unexpected value %lu.\n", bound);
532 ok(dim == 1,
"got %u\n", dim);
536 ok(bound == 0,
"Unexpected value %lu.\n", bound);
540 ok(bound == 1,
"Unexpected value %lu.\n", bound);
567 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
600 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
604 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
613 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
617 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
626 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
630 ok(!
ret,
"Unexpected retval %ld.\n",
ret);
642 IWshShell3_Release(sh3);
654 &IID_IWshShell, (
void **)&
sh);
689 IWshShell_Release(
sh);
710 hr = IDispatch_QueryInterface(disp, &IID_IWshNetwork2, (
void**)&nw2);
713 hr = IWshNetwork2_get_UserName(nw2,
NULL);
717 hr = IWshNetwork2_get_UserName(nw2, &
str);
719 ok(
str &&
str[0] != 0,
"got empty string\n");
722 ok(
len > 0,
"Unexpected len %ld.\n",
len);
730 hr = IWshNetwork2_get_ComputerName(nw2,
NULL);
734 hr = IWshNetwork2_get_ComputerName(nw2, &
str);
736 ok(
str &&
str[0] != 0,
"Got empty string.\n");
740 ok(
len > 0,
"Unexpected length %ld.\n",
len);
749 hr = IWshNetwork2_get_UserDomain(nw2,
NULL);
751 hr = IWshNetwork2_get_UserDomain(nw2, &
str);
753 ok(!!
str,
"Unexpected pointer.\n");
756 IWshNetwork2_Release(nw2);
757 IDispatch_Release(disp);
771 win_skip(
"Could not create WshShell object: %#lx.\n",
hr);
774 IUnknown_Release(unk);
void shell(int argc, const char *argv[])
#define RegCloseKey(hKey)
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
static LPCWSTR LPCWSTR LPCWSTR env
LONG WINAPI RegCreateKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE *lpData, DWORD cbData)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LONG WINAPI RegDeleteValueA(HKEY hKey, LPCSTR lpValueName)
LONG WINAPI RegEnumKeyA(HKEY hKey, DWORD dwIndex, LPSTR lpName, DWORD cbName)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
BOOL WINAPI GetUserNameW(LPWSTR lpszName, LPDWORD lpSize)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
#define ERROR_NO_MORE_ITEMS
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI RemoveDirectoryW(IN LPCWSTR lpPathName)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
DWORD WINAPI GetTempPathW(IN DWORD count, OUT LPWSTR path)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
HRESULT WINAPI SafeArrayGetElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData)
UINT WINAPI SafeArrayGetDim(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound)
HRESULT WINAPI SafeArrayGetVartype(SAFEARRAY *psa, VARTYPE *pvt)
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg2
GLenum GLuint GLenum GLsizei const GLchar * buf
static const WCHAR emptyW[]
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define ERROR_FILE_NOT_FOUND
const IID IID_IObjectWithSite
static const WCHAR pathW[]
static const WCHAR path2[]
#define KEY_ENUMERATE_SUB_KEYS
BSTR WINAPI SysAllocString(LPCOLESTR str)
UINT WINAPI SysStringLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
#define DISPATCH_PROPERTYGET
const GUID IID_IProvideClassInfo
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
#define delete_key(r, p, s)
static __inline const char * wine_dbgstr_guid(const GUID *id)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
#define INVALID_FILE_ATTRIBUTES
DWORD WINAPI GetLastError(void)
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define DISP_E_PARAMNOTFOUND
#define ERROR_PATH_NOT_FOUND
#define DISP_E_MEMBERNOTFOUND
#define DISP_E_TYPEMISMATCH
#define HKEY_CURRENT_USER
#define test_provideclassinfo(a, b)
static void test_registry(void)
static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported)
static void test_wshnetwork(void)
static void test_popup(void)
static void check_bstr_length(BSTR str, int line)
#define CHECK_BSTR_LENGTH(str)
static void test_wshshell(void)
static void _test_provideclassinfo(IDispatch *disp, const GUID *guid, int line)
#define check_interface(a, b, c)