ReactOS 0.4.17-dev-444-g71ee754
CShellDispatch.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: shell32
3 * LICENSE: LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+)
4 * PURPOSE: IShellDispatch implementation
5 * COPYRIGHT: Copyright 2015-2018 Mark Jansen (mark.jansen@reactos.org)
6 * Copyright 2018 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
7 * Copyright 2023 Whindmar Saksit (whindsaks@proton.me)
8 */
9
10#include "precomp.h"
11#include "prop.h"
12#include "winsvc.h"
13
15
16
17EXTERN_C DWORD WINAPI SHGetRestriction(LPCWSTR lpSubKey, LPCWSTR lpSubName, LPCWSTR lpValue);
18
20{
21 HWND hTrayWnd = FindWindowW(L"Shell_TrayWnd", NULL);
22 return hTrayWnd && PostMessageW(hTrayWnd, WM_COMMAND, cmd, 0) ? S_OK : S_FALSE;
23}
24
26{
27}
28
30{
31}
32
34{
35 return S_OK;
36}
37
38// *** IShellDispatch methods ***
40{
41 TRACE("(%p, %p)\n", this, ppid);
42
43 if (!ppid)
44 return E_INVALIDARG;
45
46 *ppid = this;
47 AddRef();
48
49 return S_OK;
50}
51
53{
54 TRACE("(%p, %p)\n", this, ppid);
55
56 if (ppid)
57 {
58 *ppid = static_cast<IDispatch*>(this);
59 AddRef();
60 }
61
62 return S_OK;
63}
64
66{
67 TRACE("(%p, %s, %p)\n", this, debugstr_variant(&vDir), ppsdf);
68 if (!ppsdf)
69 return E_POINTER;
70 *ppsdf = NULL;
71 HRESULT hr;
72
73 if (V_VT(&vDir) == VT_I2)
74 {
75 hr = VariantChangeType(&vDir, &vDir, 0, VT_I4);
77 return hr;
78 }
79
81 hr = VariantToIdlist(&vDir, &idlist);
82 if (!SUCCEEDED(hr))
83 return S_FALSE;
84
85 return ShellObjectCreatorInit<CFolder>(static_cast<LPITEMIDLIST>(idlist), IID_PPV_ARG(Folder, ppsdf));
86}
87
89{
91}
92
94{
95 TRACE("(%p, %lu, %ls, %lu, %s, %p)\n", this, Hwnd, Title, Options, debugstr_variant(&RootFolder), ppsdf);
96
97 *ppsdf = NULL;
98
99 BROWSEINFOW bi = { 0 };
100 bi.hwndOwner = reinterpret_cast<HWND>(LongToHandle(Hwnd));
101 bi.lpszTitle = Title;
103
105 if (!is_optional_argument(&RootFolder) && VariantToIdlist(&RootFolder, &idlist) == S_OK)
106 bi.pidlRoot = idlist;
107
109 selection.Attach(SHBrowseForFolderW(&bi));
110 if (!selection)
111 return S_FALSE;
112
113 return ShellObjectCreatorInit<CFolder>(static_cast<LPITEMIDLIST>(selection), IID_PPV_ARG(Folder, ppsdf));
114}
115
117{
118 TRACE("(%p, %p)\n", this, ppid);
119 return CoCreateInstance(CLSID_ShellWindows, NULL, CLSCTX_LOCAL_SERVER, IID_PPV_ARG(IDispatch, ppid));
120}
121
123{
125 sei.cbSize = sizeof(sei);
127 sei.hwnd = NULL;
128 sei.lpVerb = verb;
129 sei.lpFile = sei.lpParameters = sei.lpDirectory = NULL;
130 sei.nShow = SW_SHOW;
131 sei.lpIDList = const_cast<LPITEMIDLIST>(pidl);
132 if (ShellExecuteExW(&sei))
133 return S_OK;
136}
137
139{
141 HRESULT hr = VariantToIdlist(&vDir, &idlist);
142 if (hr == S_OK && SHELL_OpenFolder(idlist, verb) == S_OK)
143 {
144 return S_OK;
145 }
146 return S_FALSE;
147}
148
150{
151 TRACE("(%p, %s)\n", this, debugstr_variant(&vDir));
152 return OpenFolder(vDir);
153}
154
156{
157 TRACE("(%p, %s)\n", this, debugstr_variant(&vDir));
158 return OpenFolder(vDir, L"explore");
159}
160
162{
163 TRACE("(%p)\n", this);
165}
166
168{
169 TRACE("(%p)\n", this);
171}
172
174{
175 TRACE("(%p)\n", this);
177}
178
180{
181 TRACE("(%p)\n", this);
183}
184
186{
187 TRACE("(%p)\n", this);
189}
190
192{
193 TRACE("(%p)\n", this);
195}
196
198{
200 return S_OK;
201}
202
204{
205 TRACE("(%p)\n", this);
207}
208
210{
211 TRACE("(%p)\n", this);
213}
214
216{
217 TRACE("(%p)\n", this);
219}
220
222{
223 TRACE("(%p)\n", this);
225}
226
228{
229 TRACE("(%p)\n", this);
231}
232
234{
235 TRACE("(%p)\n", this);
237}
238
240{
241 TRACE("(%p)\n", this);
243}
244
246{
247 TRACE("(%p)\n", this);
249 // According to https://learn.microsoft.com/en-us/windows/win32/shell/ishelldispatch-refreshmenu
250 // only systems preceding Windows XP refreshes the contents of the Start menu when this is called.
252}
253
255{
256 TRACE("(%p, %ls)\n", this, szDir);
257 if (LOBYTE(GetVersion()) < 6)
259 else if (!szDir)
260 return E_INVALIDARG; // NT5 does not check, just silently fails
261 else
263 return S_OK;
264}
265
266// *** IShellDispatch2 methods ***
268{
269 TRACE("(%p, %ls, %ls, %p)\n", this, group, restriction, value);
270
271 if (!value)
272 return E_INVALIDARG;
273 *value = SHGetRestriction(NULL, group, restriction);
274 return S_OK;
275}
276
278{
279 CComVariant args_str, dir_str, op_str, show_int;
280 WCHAR *args = NULL, *dir = NULL, *op = NULL;
281 INT show = SW_SHOW;
283
284 TRACE("(%s, %s, %s, %s, %s)\n", debugstr_w(file), debugstr_variant(&v_args),
285 debugstr_variant(&v_dir), debugstr_variant(&v_op), debugstr_variant(&v_show));
286
287 args_str.ChangeType(VT_BSTR, &v_args);
288 if (V_VT(&args_str) == VT_BSTR)
289 args = V_BSTR(&args_str);
290
291 dir_str.ChangeType(VT_BSTR, &v_dir);
292 if (V_VT(&dir_str) == VT_BSTR)
293 dir = V_BSTR(&dir_str);
294
295 op_str.ChangeType(VT_BSTR, &v_op);
296 if (V_VT(&op_str) == VT_BSTR)
297 op = V_BSTR(&op_str);
298
299 show_int.ChangeType(VT_I4, &v_show);
300 if (V_VT(&show_int) == VT_I4)
301 show = V_I4(&show_int);
302
303 ret = ShellExecuteW(NULL, op, file, args, dir, show);
304
305 return (ULONG_PTR)ret > 32 ? S_OK : S_FALSE;
306}
307
309{
310 TRACE("(%p, %ls, %ls, %ls)\n", this, name, location, model);
311 return E_NOTIMPL;
312}
313
315{
316 TRACE("(%p, %ls, %p)\n", this, name, ret);
317
318 if (!lstrcmpiW(name, L"ProcessorArchitecture"))
319 {
322 V_VT(ret) = VT_I4;
324 return S_OK;
325 }
326 else if (!lstrcmpiW(name, L"ProcessorSpeed"))
327 {
328 DWORD cb = sizeof(DWORD);
329 V_VT(ret) = VT_EMPTY;
330 if (RegGetValueW(HKEY_LOCAL_MACHINE, L"Hardware\\Description\\System\\CentralProcessor\\0",
331 L"~Mhz", RRF_RT_REG_DWORD, NULL, &V_UI4(ret), &cb))
332 {
333 return S_FALSE;
334 }
335 V_VT(ret) = VT_I4;
336 return S_OK;
337 }
338 else if (!lstrcmpiW(name, L"PhysicalMemoryInstalled"))
339 {
340 MEMORYSTATUSEX mems;
341 mems.dwLength = sizeof(mems);
343 V_VT(ret) = VT_UI8;
344 V_UI8(ret) = mems.ullTotalPhys;
345 return S_OK;
346 }
347
348 UINT os = 0;
349 if (!lstrcmpiW(name, L"IsOS_Professional"))
350 os = OS_PROFESSIONAL;
351 else if (!lstrcmpiW(name, L"IsOS_Personal"))
352 os = OS_HOME;
353 else if (!lstrcmpiW(name, L"IsOS_DomainMember"))
354 os = OS_DOMAINMEMBER;
355 if (os)
356 {
357 V_VT(ret) = VT_BOOL;
358 V_BOOL(ret) = IsOS(os) ? VARIANT_TRUE : VARIANT_FALSE;
359 return S_OK;
360 }
361
362 return E_NOTIMPL;
363}
364
366{
367 hSvc = NULL;
368 SC_HANDLE hScm = OpenSCManagerW(NULL, NULL, SC_MANAGER_CONNECT);
369 if (!hScm)
371 HRESULT hr = S_OK;
372 hSvc = OpenServiceW(hScm, name, access);
373 if (!hSvc)
375 CloseServiceHandle(hScm);
376 return hr;
377}
378
380{
381 BOOL persist = V_VT(&persistent) == VT_BOOL && V_BOOL(&persistent);
382 DWORD access = persist ? SERVICE_CHANGE_CONFIG : 0;
383 switch (control)
384 {
385 case 0:
387 break;
390 break;
391 }
392 SC_HANDLE hSvc;
394 if (SUCCEEDED(hr))
395 {
397 DWORD error, already;
398 if (control)
399 {
401 success = ControlService(hSvc, control, &ss);
403 already = ERROR_SERVICE_NOT_ACTIVE;
404 }
405 else
406 {
407 success = StartService(hSvc, 0, NULL);
410 }
411 hr = success ? S_OK : error == already ? S_FALSE : HRESULT_FROM_WIN32(error);
412 if (SUCCEEDED(hr) && persist)
413 {
417 }
418 CloseServiceHandle(hSvc);
419 }
420 return hr;
421}
422
424{
425 TRACE("(%p, %ls, %s, %p)\n", this, service, wine_dbgstr_variant(&persistent), ret);
426
427 HRESULT hr = SHELL32_ControlService(service, 0, persistent);
428 V_VT(ret) = VT_BOOL;
429 V_BOOL(ret) = (hr == S_OK ? VARIANT_TRUE : VARIANT_FALSE);
430 return hr == S_OK ? S_OK : S_FALSE;
431}
432
434{
435 TRACE("(%p, %ls, %s, %p)\n", this, service, wine_dbgstr_variant(&persistent), ret);
436
438 V_VT(ret) = VT_BOOL;
439 V_BOOL(ret) = (hr == S_OK ? VARIANT_TRUE : VARIANT_FALSE);
440 return hr == S_OK ? S_OK : S_FALSE;
441}
442
444{
446 SC_HANDLE scm, service;
447 DWORD dummy;
448
449 TRACE("(%s, %p)\n", debugstr_w(name), running);
450
451 V_VT(running) = VT_BOOL;
452 V_BOOL(running) = VARIANT_FALSE;
453
455 if (!scm)
456 {
457 ERR("failed to connect to service manager\n");
458 return S_OK;
459 }
460
461 service = OpenServiceW(scm, name, SERVICE_QUERY_STATUS);
462 if (!service)
463 {
464 ERR("Failed to open service %s (%u)\n", debugstr_w(name), GetLastError());
466 return S_OK;
467 }
468
470 sizeof(SERVICE_STATUS_PROCESS), &dummy))
471 {
472 TRACE("failed to query service status (%u)\n", GetLastError());
473 CloseServiceHandle(service);
475 return S_OK;
476 }
477
478 if (status.dwCurrentState == SERVICE_RUNNING)
479 V_BOOL(running) = VARIANT_TRUE;
480
481 CloseServiceHandle(service);
483
484 return S_OK;
485}
486
488{
489 TRACE("(%p, %ls, %p)\n", this, service, ret);
490
491 SC_HANDLE hSvc;
493 if (SUCCEEDED(hr))
494 CloseServiceHandle(hSvc);
495 V_VT(ret) = VT_BOOL;
496 V_BOOL(ret) = (hr == S_OK ? VARIANT_TRUE : VARIANT_FALSE);
497 return S_OK;
498}
499
501{
502 TRACE("(%p, %ls, %s, %p)\n", this, clsid, wine_dbgstr_variant(&show), ret);
503 return E_NOTIMPL;
504}
505
506
507// *** IShellDispatch3 methods ***
509{
510 TRACE("(%p, %s, %ls)\n", this, wine_dbgstr_variant(&file), category);
511
513 HRESULT hr = VariantToIdlist(&file, &idlist);
514 if (hr == S_OK)
516 else
517 hr = S_FALSE;
518 return hr;
519}
520
521
522// *** IShellDispatch4 methods ***
523#define IDM_SECURITY 5001 // From base/shell/explorer/resource.h
525{
526 TRACE("(%p)\n", this);
528}
529
531{
532 TRACE("(%p)\n", this);
534}
535
537{
538 TRACE("(%p, %ls, %p)\n", this, policy, value);
539 return E_NOTIMPL;
540}
541
542#ifndef SSF_SERVERADMINUI
543#define SSF_SERVERADMINUI 4
544#endif
546{
547 TRACE("(%p, %lu, %p)\n", this, setting, result);
548
549 int flag = 0;
550 SHELLSTATE ss = { };
552 switch (setting)
553 {
554 case SSF_SHOWALLOBJECTS: flag = ss.fShowAllObjects; break;
555 case SSF_SHOWEXTENSIONS: flag = ss.fShowExtensions; break;
556 case SSF_SHOWSYSFILES: flag = ss.fShowSysFiles; break;
557 case SSF_DONTPRETTYPATH: flag = ss.fDontPrettyPath; break;
558 case SSF_NOCONFIRMRECYCLE: flag = ss.fNoConfirmRecycle; break;
559 case SSF_SHOWSUPERHIDDEN: flag = ss.fShowSuperHidden; break;
560 case SSF_SEPPROCESS: flag = ss.fSepProcess; break;
561 case SSF_STARTPANELON: flag = ss.fStartPanelOn; break;
563 default: *result = VARIANT_FALSE; return S_FALSE;
564 }
565 *result = flag ? VARIANT_TRUE : VARIANT_FALSE;
566 return S_OK;
567}
568
569
570// *** IObjectSafety methods ***
572{
573 TRACE("(%p, %s, %p, %p)\n", this, wine_dbgstr_guid(&riid), pdwSupportedOptions, pdwEnabledOptions);
574 return E_NOTIMPL;
575}
576
578{
579 TRACE("(%p, %s, %lu, %lu)\n", this, wine_dbgstr_guid(&riid), dwOptionSetMask, dwEnabledOptions);
580 return E_NOTIMPL;
581}
582
583
584// *** IObjectWithSite methods ***
586{
587 TRACE("(%p, %p)\n", this, pUnkSite);
588 return E_NOTIMPL;
589}
590
592{
593 TRACE("(%p, %s, %p)\n", this, wine_dbgstr_guid(&riid), ppvSite);
594 return E_NOTIMPL;
595}
596
598{
599 return ShellObjectCreatorInit<CShellDispatch>(riid, ppvOut);
600}
601
unsigned int dir
Definition: maze.c:112
WINBASEAPI _Check_return_ _Out_ AppPolicyProcessTerminationMethod * policy
Definition: appmodel.h:78
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
void shell(int argc, const char *argv[])
Definition: cmds.c:1231
#define ERR(fmt,...)
Definition: precomp.h:57
#define IDM_SECURITY
Definition: resource.h:73
#define LongToHandle(h)
Definition: basetsd.h:76
#define EXTERN_C
Definition: basetyps.h:12
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
EXTERN_C LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi)
Definition: brfolder.cpp:1460
HRESULT ChangeType(_In_ VARTYPE newType, _In_opt_ const LPVARIANT src=NULL)
Definition: atlcomcli.h:589
STDMETHOD() NameSpace(VARIANT vDir, Folder **ppsdf) override
HRESULT Initialize()
STDMETHOD() ControlPanelItem(BSTR szDir) override
STDMETHOD() ExplorerPolicy(BSTR policy, VARIANT *value) override
STDMETHOD() AddToRecent(VARIANT file, BSTR category) override
STDMETHOD() BrowseForFolder(LONG Hwnd, BSTR Title, LONG Options, VARIANT RootFolder, Folder **ppsdf) override
STDMETHOD() UndoMinimizeALL() override
STDMETHOD() GetSite(REFIID riid, PVOID *ppvSite) override
STDMETHOD() Explore(VARIANT vDir) override
STDMETHOD() TileHorizontally() override
STDMETHOD() Suspend() override
STDMETHOD() get_Application(IDispatch **ppid) override
STDMETHOD() SetTime() override
STDMETHOD() GetSetting(LONG setting, VARIANT_BOOL *result) override
STDMETHOD() IsServiceRunning(BSTR service, VARIANT *running) override
STDMETHOD() EjectPC() override
STDMETHOD() FindFiles() override
STDMETHOD() CascadeWindows() override
STDMETHOD() IsRestricted(BSTR group, BSTR restriction, LONG *value) override
STDMETHOD() ServiceStop(BSTR service, VARIANT persistent, VARIANT *ret) override
STDMETHOD() GetInterfaceSafetyOptions(REFIID riid, DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions) override
STDMETHOD() RefreshMenu() override
STDMETHOD() ShutdownWindows() override
STDMETHOD() ToggleDesktop() override
STDMETHOD() TileVertically() override
STDMETHOD() MinimizeAll() override
STDMETHOD() Open(VARIANT vDir) override
STDMETHOD() ShellExecute(BSTR file, VARIANT args, VARIANT dir, VARIANT op, VARIANT show) override
STDMETHOD() ShowBrowserBar(BSTR clsid, VARIANT show, VARIANT *ret) override
STDMETHOD() get_Parent(IDispatch **ppid) override
STDMETHOD() FindPrinter(BSTR name, BSTR location, BSTR model) override
STDMETHOD() SetSite(IUnknown *pUnkSite) override
STDMETHOD() WindowsSecurity() override
STDMETHOD() CanStartStopService(BSTR service, VARIANT *ret) override
STDMETHOD() FindComputer() override
STDMETHOD() Windows(IDispatch **ppid) override
STDMETHOD() FileRun() override
STDMETHOD() SetInterfaceSafetyOptions(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions) override
STDMETHOD() ServiceStart(BSTR service, VARIANT persistent, VARIANT *ret) override
STDMETHOD() Help() override
STDMETHOD() GetSystemInformation(BSTR name, VARIANT *ret) override
STDMETHOD() TrayProperties() override
int selection
Definition: ctm.c:92
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
HRESULT hr
Definition: delayimp.cpp:582
static CHAR Title[MAX_PATH]
Definition: dem.c:257
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
UINT op
Definition: effect.c:236
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
Definition: reg.c:1931
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
OLECHAR * BSTR
Definition: compat.h:2293
short VARIANT_BOOL
Definition: compat.h:2290
@ VT_UI8
Definition: compat.h:2315
@ VT_BSTR
Definition: compat.h:2303
@ VT_ERROR
Definition: compat.h:2305
@ VT_I4
Definition: compat.h:2298
@ VT_BOOL
Definition: compat.h:2306
@ VT_I2
Definition: compat.h:2297
@ VT_EMPTY
Definition: compat.h:2295
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
Definition: sysinfo.c:143
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4171
DWORD WINAPI GetVersion(void)
Definition: version.c:1458
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
BOOL WINAPI IsOS(DWORD feature)
Definition: main.c:2392
static HRESULT OpenServiceHelper(LPCWSTR name, DWORD access, SC_HANDLE &hSvc)
HRESULT WINAPI CShellDispatch_Constructor(REFIID riid, LPVOID *ppvOut)
EXTERN_C DWORD WINAPI SHGetRestriction(LPCWSTR lpSubKey, LPCWSTR lpSubName, LPCWSTR lpValue)
Definition: ordinal.c:2357
static HRESULT OpenFolder(VARIANT vDir, LPCWSTR verb=NULL)
static BOOL is_optional_argument(const VARIANT *arg)
static HRESULT SHELL_OpenFolder(LPCITEMIDLIST pidl, LPCWSTR verb=NULL)
static HRESULT PostTrayCommand(UINT cmd)
#define SSF_SERVERADMINUI
static HRESULT SHELL32_ControlService(BSTR name, DWORD control, VARIANT &persistent)
void WINAPI ExitWindowsDialog(HWND hWndOwner)
Definition: dialogs.cpp:1604
EXTERN_C BOOL WINAPI SHELL32_RunControlPanel(_In_ PCWSTR commandLine, _In_opt_ HWND parent)
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
static const char * debugstr_variant(const VARIANT *var)
Definition: dom.c:505
return ret
Definition: mutex.c:146
#define L(x)
Definition: resources.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLboolean GLuint group
Definition: glext.h:11120
GLuint GLint GLboolean GLint GLenum access
Definition: glext.h:7866
GLuint64EXT * result
Definition: glext.h:11304
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 flag
Definition: glfuncs.h:52
unsigned int UINT
Definition: sysinfo.c:13
BOOL NTAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer)
Definition: heapmem.c:1272
#define ss
Definition: i386-dis.c:441
REFIID riid
Definition: atlbase.h:39
ULONG AddRef()
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define C_ASSERT(e)
Definition: intsafe.h:73
#define LOBYTE(W)
Definition: jmemdos.c:487
const char * op_str
Definition: compile.c:90
#define debugstr_w
Definition: kernel32.h:32
#define HResultFromWin32
Definition: loader.cpp:14
#define error(str)
Definition: mkdosfs.c:1605
static SYSTEM_INFO si
Definition: virtual.c:39
const CLSID * clsid
Definition: msctf.cpp:50
#define DWORD
Definition: nt_native.h:44
#define V_ERROR(A)
Definition: oleauto.h:241
#define V_BOOL(A)
Definition: oleauto.h:224
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
#define V_I4(A)
Definition: oleauto.h:247
#define V_UI4(A)
Definition: oleauto.h:270
#define V_UI8(A)
Definition: oleauto.h:272
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
HRESULT VariantToIdlist(_In_ VARIANT *pV, _Out_ LPITEMIDLIST *ppidl)
Definition: prop.cpp:68
#define REFIID
Definition: guiddef.h:118
#define OS_SERVERADMINUI
Definition: shlwapi.h:260
#define OS_PROFESSIONAL
Definition: shlwapi.h:246
#define OS_DOMAINMEMBER
Definition: shlwapi.h:254
#define OS_HOME
Definition: shlwapi.h:245
#define SERVICE_START
Definition: winsvc.h:63
#define SERVICE_QUERY_STATUS
Definition: winsvc.h:61
@ SC_STATUS_PROCESS_INFO
Definition: winsvc.h:125
#define SC_MANAGER_CONNECT
Definition: winsvc.h:14
#define SERVICE_NO_CHANGE
Definition: winsvc.h:20
#define SERVICE_CHANGE_CONFIG
Definition: winsvc.h:60
#define StartService
Definition: winsvc.h:591
#define SERVICE_STOP
Definition: winsvc.h:64
#define SERVICE_RUNNING
Definition: winsvc.h:24
#define SERVICE_CONTROL_STOP
Definition: winsvc.h:42
SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess)
Definition: scm.c:2107
BOOL WINAPI ControlService(SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus)
Definition: scm.c:622
BOOL WINAPI QueryServiceStatusEx(SC_HANDLE hService, SC_STATUS_TYPE InfoLevel, LPBYTE lpBuffer, DWORD cbBufSize, LPDWORD pcbBytesNeeded)
Definition: scm.c:2926
SC_HANDLE WINAPI OpenServiceW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, DWORD dwDesiredAccess)
Definition: scm.c:2199
BOOL WINAPI ChangeServiceConfigW(SC_HANDLE hService, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, LPCWSTR lpPassword, LPCWSTR lpDisplayName)
Definition: scm.c:482
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
Definition: scm.c:580
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:171
#define SEE_MASK_IDLIST
Definition: shellapi.h:27
#define SEE_MASK_FLAG_DDEWAIT
Definition: shellapi.h:36
void WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv)
Definition: shellord.c:1015
VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet)
Definition: shellord.c:225
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2778
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
Definition: shlexec.cpp:2723
#define SSF_DONTPRETTYPATH
Definition: shlobj.h:1630
#define SSF_SEPPROCESS
Definition: shlobj.h:1638
#define SSF_NOCONFIRMRECYCLE
Definition: shlobj.h:1634
#define SSF_SHOWSYSFILES
Definition: shlobj.h:1625
#define SHARD_PIDL
Definition: shlobj.h:1190
#define SSF_SHOWEXTENSIONS
Definition: shlobj.h:1622
#define SSF_STARTPANELON
Definition: shlobj.h:1641
#define SSF_SHOWSUPERHIDDEN
Definition: shlobj.h:1637
#define SSF_SHOWALLOBJECTS
Definition: shlobj.h:1621
#define BIF_NEWDIALOGSTYLE
Definition: shlobj.h:1239
#define FCIDM_CABINET_REFRESH
Definition: shlobj_undoc.h:102
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
#define TRACE(s)
Definition: solgame.cpp:4
LPCWSTR lpDirectory
Definition: shellapi.h:340
LPCWSTR lpParameters
Definition: shellapi.h:339
WORD wProcessorArchitecture
Definition: winbase.h:894
Definition: match.c:390
Definition: ftp_var.h:139
Definition: dialog.c:52
Definition: fci.c:127
Definition: name.c:39
Definition: ps.c:97
PCIDLIST_ABSOLUTE pidlRoot
Definition: shlobj.h:1217
UINT ulFlags
Definition: shlobj.h:1220
HWND hwndOwner
Definition: shlobj.h:1216
LPCWSTR lpszTitle
Definition: shlobj.h:1219
const uint16_t * LPCWSTR
Definition: typedefs.h:57
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define TRAYCMD_REFRESH_MENU
Definition: undocshell.h:1021
#define TRAYCMD_DATE_AND_TIME
Definition: undocshell.h:1002
#define TRAYCMD_SEARCH_COMPUTERS
Definition: undocshell.h:1020
#define TRAYCMD_TASKBAR_PROPERTIES
Definition: undocshell.h:1005
#define TRAYCMD_SUSPEND
Definition: undocshell.h:1003
#define TRAYCMD_TILE_V
Definition: undocshell.h:1000
#define TRAYCMD_SEARCH_FILES
Definition: undocshell.h:1019
#define TRAYCMD_TILE_H
Definition: undocshell.h:999
#define TRAYCMD_EJECT
Definition: undocshell.h:1004
#define TRAYCMD_TOGGLE_DESKTOP
Definition: undocshell.h:1001
#define TRAYCMD_RUN_DIALOG
Definition: undocshell.h:996
#define TRAYCMD_CASCADE
Definition: undocshell.h:998
#define TRAYCMD_RESTORE_ALL
Definition: undocshell.h:1007
#define TRAYCMD_MINIMIZE_ALL
Definition: undocshell.h:1006
#define TRAYCMD_HELP_AND_SUPPORT
Definition: undocshell.h:1012
Definition: pdh_main.c:96
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
Definition: variant.c:962
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
Definition: wdfdevice.h:3540
#define success(from, fromstr, to, tostr)
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define WINAPI
Definition: msvc.h:6
#define S_FALSE
Definition: winerror.h:3451
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210
#define DISP_E_PARAMNOTFOUND
Definition: winerror.h:3616
#define ERROR_SERVICE_ALREADY_RUNNING
Definition: winerror.h:931
#define ERROR_SERVICE_NOT_ACTIVE
Definition: winerror.h:937
#define E_POINTER
Definition: winerror.h:3480
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define RRF_RT_REG_DWORD
Definition: winreg.h:61
#define SW_SHOWNORMAL
Definition: winuser.h:781
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_COMMAND
Definition: winuser.h:1768
#define SW_SHOW
Definition: winuser.h:786
HWND WINAPI FindWindowW(_In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
#define SERVICE_DEMAND_START
Definition: cmtypes.h:978
#define SERVICE_AUTO_START
Definition: cmtypes.h:977
#define IID_PPV_ARG(Itype, ppType)
unsigned char BYTE
Definition: xxhash.c:193