ReactOS 0.4.17-dev-357-ga8f14ff
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 "winsvc.h"
12
14
15
16EXTERN_C DWORD WINAPI SHGetRestriction(LPCWSTR lpSubKey, LPCWSTR lpSubName, LPCWSTR lpValue);
17
19{
20 HWND hTrayWnd = FindWindowW(L"Shell_TrayWnd", NULL);
21 return hTrayWnd && PostMessageW(hTrayWnd, WM_COMMAND, cmd, 0) ? S_OK : S_FALSE;
22}
23
25{
26}
27
29{
30}
31
33{
34 return S_OK;
35}
36
37// *** IShellDispatch methods ***
39{
40 TRACE("(%p, %p)\n", this, ppid);
41
42 if (!ppid)
43 return E_INVALIDARG;
44
45 *ppid = this;
46 AddRef();
47
48 return S_OK;
49}
50
52{
53 TRACE("(%p, %p)\n", this, ppid);
54
55 if (ppid)
56 {
57 *ppid = static_cast<IDispatch*>(this);
58 AddRef();
59 }
60
61 return S_OK;
62}
63
65{
67 if(V_VT(var) == VT_I4)
68 {
70 }
71 else if(V_VT(var) == VT_BSTR)
72 {
74 }
75 return hr;
76}
77
79{
80 TRACE("(%p, %s, %p)\n", this, debugstr_variant(&vDir), ppsdf);
81 if (!ppsdf)
82 return E_POINTER;
83 *ppsdf = NULL;
84 HRESULT hr;
85
86 if (V_VT(&vDir) == VT_I2)
87 {
88 hr = VariantChangeType(&vDir, &vDir, 0, VT_I4);
90 return hr;
91 }
92
94 hr = VariantToIdlist(&vDir, &idlist);
95 if (!SUCCEEDED(hr))
96 return S_FALSE;
97
98 return ShellObjectCreatorInit<CFolder>(static_cast<LPITEMIDLIST>(idlist), IID_PPV_ARG(Folder, ppsdf));
99}
100
102{
104}
105
107{
108 TRACE("(%p, %lu, %ls, %lu, %s, %p)\n", this, Hwnd, Title, Options, debugstr_variant(&RootFolder), ppsdf);
109
110 *ppsdf = NULL;
111
112 BROWSEINFOW bi = { 0 };
113 bi.hwndOwner = reinterpret_cast<HWND>(LongToHandle(Hwnd));
114 bi.lpszTitle = Title;
116
118 if (!is_optional_argument(&RootFolder) && VariantToIdlist(&RootFolder, &idlist) == S_OK)
119 bi.pidlRoot = idlist;
120
122 selection.Attach(SHBrowseForFolderW(&bi));
123 if (!selection)
124 return S_FALSE;
125
126 return ShellObjectCreatorInit<CFolder>(static_cast<LPITEMIDLIST>(selection), IID_PPV_ARG(Folder, ppsdf));
127}
128
130{
131 TRACE("(%p, %p)\n", this, ppid);
132 return CoCreateInstance(CLSID_ShellWindows, NULL, CLSCTX_LOCAL_SERVER, IID_PPV_ARG(IDispatch, ppid));
133}
134
136{
138 sei.cbSize = sizeof(sei);
140 sei.hwnd = NULL;
141 sei.lpVerb = verb;
142 sei.lpFile = sei.lpParameters = sei.lpDirectory = NULL;
143 sei.nShow = SW_SHOW;
144 sei.lpIDList = const_cast<LPITEMIDLIST>(pidl);
145 if (ShellExecuteExW(&sei))
146 return S_OK;
149}
150
152{
154 HRESULT hr = VariantToIdlist(&vDir, &idlist);
155 if (hr == S_OK && SHELL_OpenFolder(idlist, verb) == S_OK)
156 {
157 return S_OK;
158 }
159 return S_FALSE;
160}
161
163{
164 TRACE("(%p, %s)\n", this, debugstr_variant(&vDir));
165 return OpenFolder(vDir);
166}
167
169{
170 TRACE("(%p, %s)\n", this, debugstr_variant(&vDir));
171 return OpenFolder(vDir, L"explore");
172}
173
175{
176 TRACE("(%p)\n", this);
178}
179
181{
182 TRACE("(%p)\n", this);
184}
185
187{
188 TRACE("(%p)\n", this);
190}
191
193{
194 TRACE("(%p)\n", this);
196}
197
199{
200 TRACE("(%p)\n", this);
202}
203
205{
206 TRACE("(%p)\n", this);
208}
209
211{
213 return S_OK;
214}
215
217{
218 TRACE("(%p)\n", this);
220}
221
223{
224 TRACE("(%p)\n", this);
226}
227
229{
230 TRACE("(%p)\n", this);
232}
233
235{
236 TRACE("(%p)\n", this);
238}
239
241{
242 TRACE("(%p)\n", this);
244}
245
247{
248 TRACE("(%p)\n", this);
250}
251
253{
254 TRACE("(%p)\n", this);
256}
257
259{
260 TRACE("(%p)\n", this);
262 // According to https://learn.microsoft.com/en-us/windows/win32/shell/ishelldispatch-refreshmenu
263 // only systems preceding Windows XP refreshes the contents of the Start menu when this is called.
265}
266
268{
269 TRACE("(%p, %ls)\n", this, szDir);
270 if (LOBYTE(GetVersion()) < 6)
272 else if (!szDir)
273 return E_INVALIDARG; // NT5 does not check, just silently fails
274 else
276 return S_OK;
277}
278
279// *** IShellDispatch2 methods ***
281{
282 TRACE("(%p, %ls, %ls, %p)\n", this, group, restriction, value);
283
284 if (!value)
285 return E_INVALIDARG;
286 *value = SHGetRestriction(NULL, group, restriction);
287 return S_OK;
288}
289
291{
292 CComVariant args_str, dir_str, op_str, show_int;
293 WCHAR *args = NULL, *dir = NULL, *op = NULL;
294 INT show = SW_SHOW;
296
297 TRACE("(%s, %s, %s, %s, %s)\n", debugstr_w(file), debugstr_variant(&v_args),
298 debugstr_variant(&v_dir), debugstr_variant(&v_op), debugstr_variant(&v_show));
299
300 args_str.ChangeType(VT_BSTR, &v_args);
301 if (V_VT(&args_str) == VT_BSTR)
302 args = V_BSTR(&args_str);
303
304 dir_str.ChangeType(VT_BSTR, &v_dir);
305 if (V_VT(&dir_str) == VT_BSTR)
306 dir = V_BSTR(&dir_str);
307
308 op_str.ChangeType(VT_BSTR, &v_op);
309 if (V_VT(&op_str) == VT_BSTR)
310 op = V_BSTR(&op_str);
311
312 show_int.ChangeType(VT_I4, &v_show);
313 if (V_VT(&show_int) == VT_I4)
314 show = V_I4(&show_int);
315
316 ret = ShellExecuteW(NULL, op, file, args, dir, show);
317
318 return (ULONG_PTR)ret > 32 ? S_OK : S_FALSE;
319}
320
322{
323 TRACE("(%p, %ls, %ls, %ls)\n", this, name, location, model);
324 return E_NOTIMPL;
325}
326
328{
329 TRACE("(%p, %ls, %p)\n", this, name, ret);
330
331 if (!lstrcmpiW(name, L"ProcessorArchitecture"))
332 {
335 V_VT(ret) = VT_I4;
337 return S_OK;
338 }
339
340 UINT os = 0;
341 if (!lstrcmpiW(name, L"IsOS_Professional"))
342 os = OS_PROFESSIONAL;
343 else if (!lstrcmpiW(name, L"IsOS_Personal"))
344 os = OS_HOME;
345 else if (!lstrcmpiW(name, L"IsOS_DomainMember"))
346 os = OS_DOMAINMEMBER;
347 if (os)
348 {
349 V_VT(ret) = VT_BOOL;
350 V_BOOL(ret) = IsOS(os) ? VARIANT_TRUE : VARIANT_FALSE;
351 return S_OK;
352 }
353
354 return E_NOTIMPL;
355}
356
358{
359 hSvc = NULL;
360 SC_HANDLE hScm = OpenSCManagerW(NULL, NULL, SC_MANAGER_CONNECT);
361 if (!hScm)
363 HRESULT hr = S_OK;
364 hSvc = OpenServiceW(hScm, name, access);
365 if (!hSvc)
367 CloseServiceHandle(hScm);
368 return hr;
369}
370
372{
373 BOOL persist = V_VT(&persistent) == VT_BOOL && V_BOOL(&persistent);
374 DWORD access = persist ? SERVICE_CHANGE_CONFIG : 0;
375 switch (control)
376 {
377 case 0:
379 break;
382 break;
383 }
384 SC_HANDLE hSvc;
386 if (SUCCEEDED(hr))
387 {
389 DWORD error, already;
390 if (control)
391 {
393 success = ControlService(hSvc, control, &ss);
395 already = ERROR_SERVICE_NOT_ACTIVE;
396 }
397 else
398 {
399 success = StartService(hSvc, 0, NULL);
402 }
403 hr = success ? S_OK : error == already ? S_FALSE : HRESULT_FROM_WIN32(error);
404 if (SUCCEEDED(hr) && persist)
405 {
409 }
410 CloseServiceHandle(hSvc);
411 }
412 return hr;
413}
414
416{
417 TRACE("(%p, %ls, %s, %p)\n", this, service, wine_dbgstr_variant(&persistent), ret);
418
419 HRESULT hr = SHELL32_ControlService(service, 0, persistent);
420 V_VT(ret) = VT_BOOL;
421 V_BOOL(ret) = (hr == S_OK ? VARIANT_TRUE : VARIANT_FALSE);
422 return hr == S_OK ? S_OK : S_FALSE;
423}
424
426{
427 TRACE("(%p, %ls, %s, %p)\n", this, service, wine_dbgstr_variant(&persistent), ret);
428
430 V_VT(ret) = VT_BOOL;
431 V_BOOL(ret) = (hr == S_OK ? VARIANT_TRUE : VARIANT_FALSE);
432 return hr == S_OK ? S_OK : S_FALSE;
433}
434
436{
438 SC_HANDLE scm, service;
439 DWORD dummy;
440
441 TRACE("(%s, %p)\n", debugstr_w(name), running);
442
443 V_VT(running) = VT_BOOL;
444 V_BOOL(running) = VARIANT_FALSE;
445
447 if (!scm)
448 {
449 ERR("failed to connect to service manager\n");
450 return S_OK;
451 }
452
453 service = OpenServiceW(scm, name, SERVICE_QUERY_STATUS);
454 if (!service)
455 {
456 ERR("Failed to open service %s (%u)\n", debugstr_w(name), GetLastError());
458 return S_OK;
459 }
460
462 sizeof(SERVICE_STATUS_PROCESS), &dummy))
463 {
464 TRACE("failed to query service status (%u)\n", GetLastError());
465 CloseServiceHandle(service);
467 return S_OK;
468 }
469
470 if (status.dwCurrentState == SERVICE_RUNNING)
471 V_BOOL(running) = VARIANT_TRUE;
472
473 CloseServiceHandle(service);
475
476 return S_OK;
477}
478
480{
481 TRACE("(%p, %ls, %p)\n", this, service, ret);
482
483 SC_HANDLE hSvc;
485 if (SUCCEEDED(hr))
486 CloseServiceHandle(hSvc);
487 V_VT(ret) = VT_BOOL;
488 V_BOOL(ret) = (hr == S_OK ? VARIANT_TRUE : VARIANT_FALSE);
489 return S_OK;
490}
491
493{
494 TRACE("(%p, %ls, %s, %p)\n", this, clsid, wine_dbgstr_variant(&show), ret);
495 return E_NOTIMPL;
496}
497
498
499// *** IShellDispatch3 methods ***
501{
502 TRACE("(%p, %s, %ls)\n", this, wine_dbgstr_variant(&file), category);
503
505 HRESULT hr = VariantToIdlist(&file, &idlist);
506 if (hr == S_OK)
508 else
509 hr = S_FALSE;
510 return hr;
511}
512
513
514// *** IShellDispatch4 methods ***
515#define IDM_SECURITY 5001 // From base/shell/explorer/resource.h
517{
518 TRACE("(%p)\n", this);
520}
521
523{
524 TRACE("(%p)\n", this);
526}
527
529{
530 TRACE("(%p, %ls, %p)\n", this, policy, value);
531 return E_NOTIMPL;
532}
533
534#ifndef SSF_SERVERADMINUI
535#define SSF_SERVERADMINUI 4
536#endif
538{
539 TRACE("(%p, %lu, %p)\n", this, setting, result);
540
541 int flag = -1;
542 SHELLSTATE ss = { };
544 switch (setting)
545 {
546 case SSF_SHOWALLOBJECTS: flag = ss.fShowAllObjects; break;
547 case SSF_SHOWEXTENSIONS: flag = ss.fShowExtensions; break;
548 case SSF_SHOWSYSFILES: flag = ss.fShowSysFiles; break;
549 case SSF_DONTPRETTYPATH: flag = ss.fDontPrettyPath; break;
550 case SSF_NOCONFIRMRECYCLE: flag = ss.fNoConfirmRecycle; break;
551 case SSF_SHOWSUPERHIDDEN: flag = ss.fShowSuperHidden; break;
552 case SSF_SEPPROCESS: flag = ss.fSepProcess; break;
553 case SSF_STARTPANELON: flag = ss.fStartPanelOn; break;
555 }
556 if (flag >= 0)
557 {
558 *result = flag ? VARIANT_TRUE : VARIANT_FALSE;
559 return S_OK;
560 }
561
562 return S_FALSE;
563}
564
565
566// *** IObjectSafety methods ***
568{
569 TRACE("(%p, %s, %p, %p)\n", this, wine_dbgstr_guid(&riid), pdwSupportedOptions, pdwEnabledOptions);
570 return E_NOTIMPL;
571}
572
574{
575 TRACE("(%p, %s, %lu, %lu)\n", this, wine_dbgstr_guid(&riid), dwOptionSetMask, dwEnabledOptions);
576 return E_NOTIMPL;
577}
578
579
580// *** IObjectWithSite methods ***
582{
583 TRACE("(%p, %p)\n", this, pUnkSite);
584 return E_NOTIMPL;
585}
586
588{
589 TRACE("(%p, %s, %p)\n", this, wine_dbgstr_guid(&riid), ppvSite);
590 return E_NOTIMPL;
591}
592
594{
595 return ShellObjectCreatorInit<CShellDispatch>(riid, ppvOut);
596}
597
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
HRESULT VariantToIdlist(VARIANT *var, LPITEMIDLIST *idlist)
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)
unsigned int dir
Definition: maze.c:112
WINBASEAPI _Check_return_ _Out_ AppPolicyProcessTerminationMethod * policy
Definition: appmodel.h:73
#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
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
UINT op
Definition: effect.c:236
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
static const WCHAR Title[]
Definition: oid.c:1259
OLECHAR * BSTR
Definition: compat.h:2293
short VARIANT_BOOL
Definition: compat.h:2290
@ 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
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
BOOL WINAPI IsOS(DWORD feature)
Definition: main.c:2392
void WINAPI ExitWindowsDialog(HWND hWndOwner)
Definition: dialogs.cpp:1604
EXTERN_C BOOL WINAPI SHELL32_RunControlPanel(_In_ PCWSTR commandLine, _In_opt_ HWND parent)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:3384
#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
#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
const char * var
Definition: shader.c:5666
static SYSTEM_INFO si
Definition: virtual.c:39
const CLSID * clsid
Definition: msctf.cpp:50
unsigned int UINT
Definition: ndis.h:50
#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
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
HRESULT WINAPI SHILCreateFromPathW(LPCWSTR path, LPITEMIDLIST *ppidl, DWORD *attributes)
Definition: pidl.c:404
#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:1621
#define SSF_SEPPROCESS
Definition: shlobj.h:1629
#define SSF_NOCONFIRMRECYCLE
Definition: shlobj.h:1625
#define SSF_SHOWSYSFILES
Definition: shlobj.h:1616
#define SHARD_PIDL
Definition: shlobj.h:1181
#define SSF_SHOWEXTENSIONS
Definition: shlobj.h:1613
#define SSF_STARTPANELON
Definition: shlobj.h:1632
#define SSF_SHOWSUPERHIDDEN
Definition: shlobj.h:1628
#define SSF_SHOWALLOBJECTS
Definition: shlobj.h:1612
#define BIF_NEWDIALOGSTYLE
Definition: shlobj.h:1230
#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:1208
UINT ulFlags
Definition: shlobj.h:1211
HWND hwndOwner
Definition: shlobj.h:1207
LPCWSTR lpszTitle
Definition: shlobj.h:1210
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 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