Author: akhaldi
Date: Mon Nov 3 14:36:57 2014
New Revision: 65224
URL:
http://svn.reactos.org/svn/reactos?rev=65224&view=rev
Log:
[SHELL32]
* Move control.cpp to the wine folder.
* Rename control.cpp to control.c.
* Partially sync control.c with Wine 1.7.27.
CORE-8540
Added:
branches/shell-experiments/dll/win32/shell32/wine/control.c
- copied, changed from r65215,
branches/shell-experiments/dll/win32/shell32/control.cpp
Removed:
branches/shell-experiments/dll/win32/shell32/control.cpp
Modified:
branches/shell-experiments/dll/win32/shell32/CMakeLists.txt
branches/shell-experiments/dll/win32/shell32/cpanel.h
Modified: branches/shell-experiments/dll/win32/shell32/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/branches/shell-experiments/dll/win32/she…
==============================================================================
--- branches/shell-experiments/dll/win32/shell32/CMakeLists.txt [iso-8859-1] (original)
+++ branches/shell-experiments/dll/win32/shell32/CMakeLists.txt [iso-8859-1] Mon Nov 3
14:36:57 2014
@@ -22,7 +22,6 @@
changenotify.cpp
classes.cpp
clipboard.cpp
- control.cpp
CMenuBand.cpp
CMenuDeskBar.cpp
dataobject.cpp
@@ -73,6 +72,7 @@
add_library(shell32 SHARED
${SOURCE}
+ wine/control.c
wine/shell32_main.c
wine/shellole.c
wine/shellpath.c
Removed: branches/shell-experiments/dll/win32/shell32/control.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/shell-experiments/dll/win32/she…
==============================================================================
--- branches/shell-experiments/dll/win32/shell32/control.cpp [iso-8859-1] (original)
+++ branches/shell-experiments/dll/win32/shell32/control.cpp (removed)
@@ -1,549 +0,0 @@
-/* Control Panel management
- *
- * Copyright 2001 Eric Pouech
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "precomp.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(shlctrl);
-
-CPlApplet* Control_UnloadApplet(CPlApplet* applet)
-{
- unsigned i;
- CPlApplet* next;
-
- for (i = 0; i < applet->count; i++)
- {
- if (!applet->info[i].dwSize)
- continue;
- applet->proc(applet->hWnd, CPL_STOP, i, applet->info[i].lData);
- }
- if (applet->proc)
- applet->proc(applet->hWnd, CPL_EXIT, 0L, 0L);
-
- FreeLibrary(applet->hModule);
- next = applet->next;
- HeapFree(GetProcessHeap(), 0, applet);
- return next;
-}
-
-CPlApplet* Control_LoadApplet(HWND hWnd, LPCWSTR cmd, CPanel* panel)
-{
- CPlApplet* applet;
- unsigned i;
- CPLINFO info;
- NEWCPLINFOW newinfo;
-
- if (!(applet = (CPlApplet *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(*applet))))
- return applet;
-
- applet->hWnd = hWnd;
-
- if (!(applet->hModule = LoadLibraryW(cmd)))
- {
- WARN("Cannot load control panel applet %s\n", debugstr_w(cmd));
- goto theError;
- }
- if (!(applet->proc = (APPLET_PROC)GetProcAddress(applet->hModule,
"CPlApplet")))
- {
- WARN("Not a valid control panel applet %s\n", debugstr_w(cmd));
- goto theError;
- }
- if (!applet->proc(hWnd, CPL_INIT, 0L, 0L))
- {
- WARN("Init of applet has failed\n");
- goto theError;
- }
- if ((applet->count = applet->proc(hWnd, CPL_GETCOUNT, 0L, 0L)) == 0)
- {
- WARN("No subprogram in applet\n");
- goto theError;
- }
-
- applet = (CPlApplet *)HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, applet,
- sizeof(*applet) + (applet->count - 1) * sizeof(NEWCPLINFOW));
-
- for (i = 0; i < applet->count; i++)
- {
- ZeroMemory(&newinfo, sizeof(newinfo));
- newinfo.dwSize = sizeof(NEWCPLINFOW);
- applet->info[i].dwSize = sizeof(NEWCPLINFOW);
- /* proc is supposed to return a null value upon success for
- * CPL_INQUIRE and CPL_NEWINQUIRE
- * However, real drivers don't seem to behave like this
- * So, use introspection rather than return value
- */
- applet->proc(hWnd, CPL_NEWINQUIRE, i, (LPARAM)&newinfo);
- if (newinfo.hIcon == 0)
- {
- applet->proc(hWnd, CPL_INQUIRE, i, (LPARAM)&info);
- if (info.idIcon == 0 || info.idName == 0)
- {
- WARN("Couldn't get info from sp %u\n", i);
- applet->info[i].dwSize = 0;
- }
- else
- {
- /* convert the old data into the new structure */
- applet->info[i].dwFlags = 0;
- applet->info[i].dwHelpContext = 0;
- applet->info[i].lData = info.lData;
- applet->info[i].hIcon = LoadIconW(applet->hModule,
- MAKEINTRESOURCEW(info.idIcon));
- LoadStringW(applet->hModule, info.idName,
- applet->info[i].szName, sizeof(applet->info[i].szName) /
sizeof(WCHAR));
- LoadStringW(applet->hModule, info.idInfo,
- applet->info[i].szInfo, sizeof(applet->info[i].szInfo) /
sizeof(WCHAR));
- applet->info[i].szHelpFile[0] = '\0';
- }
- }
- else
- {
- CopyMemory(&applet->info[i], &newinfo, newinfo.dwSize);
- if (newinfo.dwSize != sizeof(NEWCPLINFOW))
- {
- applet->info[i].dwSize = sizeof(NEWCPLINFOW);
- lstrcpyW(applet->info[i].szName, newinfo.szName);
- lstrcpyW(applet->info[i].szInfo, newinfo.szInfo);
- lstrcpyW(applet->info[i].szHelpFile, newinfo.szHelpFile);
- }
- }
- }
-
- applet->next = panel->first;
- panel->first = applet;
-
- return applet;
-
- theError:
- Control_UnloadApplet(applet);
- return NULL;
-}
-
-static void Control_WndProc_Create(HWND hWnd, const CREATESTRUCTW* cs)
-{
- CPanel* panel = (CPanel*)cs->lpCreateParams;
-
- SetWindowLongPtrW(hWnd, 0, (LONG_PTR)panel);
- panel->status = 0;
- panel->hWnd = hWnd;
-}
-
-#define XICON 32
-#define XSTEP 128
-#define YICON 32
-#define YSTEP 64
-
-static BOOL Control_Localize(const CPanel* panel, int cx, int cy,
- CPlApplet** papplet, unsigned* psp)
-{
- unsigned int i;
- int x = (XSTEP-XICON)/2, y = 0;
- CPlApplet* applet;
- RECT rc;
-
- GetClientRect(panel->hWnd, &rc);
- for (applet = panel->first; applet; applet = applet->next)
- {
- for (i = 0; i < applet->count; i++)
- {
- if (!applet->info[i].dwSize)
- continue;
- if (x + XSTEP >= rc.right - rc.left)
- {
- x = (XSTEP-XICON)/2;
- y += YSTEP;
- }
- if (cx >= x && cx < x + XICON && cy >= y &&
cy < y + YSTEP)
- {
- *papplet = applet;
- *psp = i;
- return TRUE;
- }
- x += XSTEP;
- }
- }
- return FALSE;
-}
-
-static LRESULT Control_WndProc_Paint(const CPanel* panel, WPARAM wParam)
-{
- HDC hdc;
- PAINTSTRUCT ps;
- RECT rc, txtRect;
- unsigned int i;
- int x = 0, y = 0;
- CPlApplet* applet;
- HGDIOBJ hOldFont;
-
- hdc = (wParam) ? (HDC)wParam : BeginPaint(panel->hWnd, &ps);
- hOldFont = SelectObject(hdc, GetStockObject(ANSI_VAR_FONT));
- GetClientRect(panel->hWnd, &rc);
-
- for (applet = panel->first; applet; applet = applet->next)
- {
- for (i = 0; i < applet->count; i++)
- {
- if (x + XSTEP >= rc.right - rc.left)
- {
- x = 0;
- y += YSTEP;
- }
- if (!applet->info[i].dwSize)
- continue;
- DrawIcon(hdc, x + (XSTEP-XICON)/2, y, applet->info[i].hIcon);
- txtRect.left = x;
- txtRect.right = x + XSTEP;
- txtRect.top = y + YICON;
- txtRect.bottom = y + YSTEP;
- DrawTextW(hdc, applet->info[i].szName, -1, &txtRect,
- DT_CENTER | DT_VCENTER);
- x += XSTEP;
- }
- }
-
- SelectObject(hdc, hOldFont);
- if (!wParam)
- EndPaint(panel->hWnd, &ps);
-
- return 0;
-}
-
-static LRESULT Control_WndProc_LButton(CPanel* panel, LPARAM lParam, BOOL up)
-{
- unsigned i;
- CPlApplet* applet;
-
- if (Control_Localize(panel, (short)LOWORD(lParam), (short)HIWORD(lParam),
&applet, &i))
- {
- if (up)
- {
- if (panel->clkApplet == applet && panel->clkSP == i)
- {
- applet->proc(applet->hWnd, CPL_DBLCLK, i,
applet->info[i].lData);
- }
- }
- else
- {
- panel->clkApplet = applet;
- panel->clkSP = i;
- }
- }
- return 0;
-}
-
-static LRESULT WINAPI Control_WndProc(HWND hWnd, UINT wMsg,
- WPARAM lParam1, LPARAM lParam2)
-{
- CPanel* panel = (CPanel*)GetWindowLongPtrW(hWnd, 0);
-
- if (panel || wMsg == WM_CREATE)
- {
- switch (wMsg)
- {
- case WM_CREATE:
- Control_WndProc_Create(hWnd, (CREATESTRUCTW*)lParam2);
- return 0;
- case WM_DESTROY:
- {
- CPlApplet *applet = panel->first;
- while (applet)
- applet = Control_UnloadApplet(applet);
-
- PostQuitMessage(0);
- break;
- }
- case WM_PAINT:
- return Control_WndProc_Paint(panel, lParam1);
- case WM_LBUTTONUP:
- return Control_WndProc_LButton(panel, lParam2, TRUE);
- case WM_LBUTTONDOWN:
- return Control_WndProc_LButton(panel, lParam2, FALSE);
- /* EPP case WM_COMMAND: */
- /* EPP return Control_WndProc_Command(mwi, lParam1, lParam2); */
- }
- }
-
- return DefWindowProcW(hWnd, wMsg, lParam1, lParam2);
-}
-
-static void Control_DoInterface(CPanel* panel, HWND hWnd, HINSTANCE hInst)
-{
- WNDCLASSW wc;
- MSG msg;
- const WCHAR* appName = L"ReactOS Control Panel";
- wc.style = CS_HREDRAW|CS_VREDRAW;
- wc.lpfnWndProc = Control_WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = sizeof(CPlApplet*);
- wc.hInstance = hInst;
- wc.hIcon = 0;
- wc.hCursor = 0;
- wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = L"Shell_Control_WndClass";
-
- if (!RegisterClassW(&wc)) return;
-
- CreateWindowExW(0, wc.lpszClassName, appName,
- WS_OVERLAPPEDWINDOW | WS_VISIBLE,
- CW_USEDEFAULT, CW_USEDEFAULT,
- CW_USEDEFAULT, CW_USEDEFAULT,
- hWnd, NULL, hInst, panel);
-
- if (!panel->hWnd)
- return;
-
- if (!panel->first)
- {
- /* FIXME appName & message should be localized */
- MessageBoxW(panel->hWnd, L"Cannot load any applets", appName,
MB_OK);
- return;
- }
-
- while (GetMessageW(&msg, panel->hWnd, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessageW(&msg);
- }
-}
-
-static void Control_DoWindow(CPanel *panel, HWND hWnd, HINSTANCE hInst)
-{
- HANDLE hFind;
- WIN32_FIND_DATAW wfd;
- WCHAR wszPath[MAX_PATH];
- WCHAR *Ptr = wszPath;
-
- Ptr += GetSystemDirectoryW(wszPath, MAX_PATH);
- *Ptr++ = '\\';
- wcscpy(Ptr, L"*.cpl");
-
- hFind = FindFirstFileW(wszPath, &wfd);
- if (hFind != INVALID_HANDLE_VALUE)
- {
- do
- {
- wcscpy(Ptr, wfd.cFileName);
- Control_LoadApplet(hWnd, wszPath, panel);
- } while (FindNextFileW(hFind, &wfd));
- FindClose(hFind);
- }
-
- Control_DoInterface(panel, hWnd, hInst);
-}
-
-static void Control_DoLaunch(CPanel *pPanel, HWND hWnd, LPCWSTR pwszCmd)
-{
- /* Make a pwszCmd copy so we can modify it */
- LPWSTR pwszCmdCopy = _wcsdup(pwszCmd);
- if (!pwszCmdCopy)
- return;
-
- LPWSTR pwszPath = pwszCmdCopy, pwszArg = NULL, pwszArg2 = NULL;
-
- /* Path can be quoted */
- if (pwszPath[0] == L'"')
- {
- ++pwszPath;
- pwszArg = wcschr(pwszPath, L'"');
- if (pwszArg)
- *(pwszArg++) = '\0';
- }
- else
- pwszArg = pwszCmdCopy;
-
- /* First argument starts after space or ','. Note: we ignore characters
between '"' and ',' or ' '. */
- if (pwszArg)
- pwszArg = wcspbrk(pwszArg, L" ,");
- if (pwszArg)
- {
- /* NULL terminate path and find first character of arg */
- *(pwszArg++) = L'\0';
- if (pwszArg[0] == L'"')
- {
- ++pwszArg;
- pwszArg2 = wcschr(pwszArg, L'"');
- if (pwszArg2)
- *(pwszArg2++) = L'\0';
- } else
- pwszArg2 = pwszArg;
-
- /* Second argument always starts with ','. Note: we ignore characters
between '"' and ','. */
- if (pwszArg2)
- pwszArg2 = wcschr(pwszArg2, L',');
- }
-
- TRACE("Launch %ls, arg %ls, arg2 %ls\n", pwszPath, pwszArg, pwszArg2);
-
- /* Create a mutex to disallow running multiple instances */
- HANDLE hMutex = CreateMutexW(NULL, TRUE, PathFindFileNameW(pwszPath));
- if (!hMutex || GetLastError() == ERROR_ALREADY_EXISTS)
- {
- TRACE("Next instance disallowed\n");
- if (hMutex)
- CloseHandle(hMutex);
- return;
- }
-
- /* Load applet cpl */
- TRACE("Load applet %ls\n", pwszPath);
- Control_LoadApplet(hWnd, pwszPath, pPanel);
- if (pPanel->first)
- {
- /* First pPanel applet is the new one */
- CPlApplet *pApplet = pPanel->first;
- assert(pApplet && pApplet->next == NULL);
- TRACE("pApplet->count %d\n", pApplet->count);
-
- /* Note: if there is only one applet, first argument is ignored */
- INT i = 0;
- if (pApplet->count > 1 && pwszArg && pwszArg[0])
- {
- /* If arg begins with '@', number specifies applet index */
- if (pwszArg[0] == L'@')
- i = _wtoi(pwszArg + 1);
- else
- {
- /* Otherwise it's applet name */
- for (i = 0; i < (INT)pApplet->count; ++i)
- if (!wcscmp(pwszArg, pApplet->info[i].szName))
- break;
- }
- }
-
- if (i >= 0 && i < (INT)pApplet->count &&
pApplet->info[i].dwSize)
- {
- /* Start the applet */
- TRACE("Starting applet %d\n", i);
- if (!pApplet->proc(pApplet->hWnd, CPL_STARTWPARMSW, i,
(LPARAM)pwszArg))
- pApplet->proc(pApplet->hWnd, CPL_DBLCLK, i,
pApplet->info[i].lData);
- } else
- ERR("Applet not found: %ls\n", pwszArg ? pwszArg :
L"NULL");
-
- Control_UnloadApplet(pApplet);
- }
- else
- ERR("Failed to load applet %ls\n", pwszPath);
-
- ReleaseMutex(hMutex);
- CloseHandle(hMutex);
- free(pwszCmdCopy);
-}
-
-/*************************************************************************
- * Control_RunDLLW [SHELL32.@]
- *
- */
-EXTERN_C void WINAPI Control_RunDLLW(HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD
nCmdShow)
-{
- CPanel Panel;
-
- TRACE("(%p, %p, %s, 0x%08x)\n",
- hWnd, hInst, debugstr_w(cmd), nCmdShow);
-
- memset(&Panel, 0, sizeof(Panel));
-
- if (!cmd || !*cmd)
- {
- TRACE("[shell32, Control_RunDLLW] Calling Control_DoWindow\n");
- Control_DoWindow(&Panel, hWnd, hInst);
- }
- else
- {
- TRACE("[shell32, Control_RunDLLW] Calling Control_DoLaunch\n");
- Control_DoLaunch(&Panel, hWnd, cmd);
- }
-}
-
-/*************************************************************************
- * Control_RunDLLA [SHELL32.@]
- *
- */
-EXTERN_C void WINAPI Control_RunDLLA(HWND hWnd, HINSTANCE hInst, LPCSTR cmd, DWORD
nCmdShow)
-{
- DWORD len = MultiByteToWideChar(CP_ACP, 0, cmd, -1, NULL, 0 );
- LPWSTR wszCmd = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
-
- if (wszCmd && MultiByteToWideChar(CP_ACP, 0, cmd, -1, wszCmd, len ))
- {
- Control_RunDLLW(hWnd, hInst, wszCmd, nCmdShow);
- }
-
- HeapFree(GetProcessHeap(), 0, wszCmd);
-}
-
-/*************************************************************************
- * Control_FillCache_RunDLLW [SHELL32.@]
- *
- */
-EXTERN_C HRESULT WINAPI Control_FillCache_RunDLLW(HWND hWnd, HANDLE hModule, DWORD w,
DWORD x)
-{
- FIXME("%p %p 0x%08x 0x%08x stub\n", hWnd, hModule, w, x);
- return 0;
-}
-
-/*************************************************************************
- * Control_FillCache_RunDLLA [SHELL32.@]
- *
- */
-EXTERN_C HRESULT WINAPI Control_FillCache_RunDLLA(HWND hWnd, HANDLE hModule, DWORD w,
DWORD x)
-{
- return Control_FillCache_RunDLLW(hWnd, hModule, w, x);
-}
-
-
-/*************************************************************************
- * RunDLL_CallEntry16 [SHELL32.122]
- * the name is probably wrong
- */
-EXTERN_C void WINAPI RunDLL_CallEntry16( DWORD proc, HWND hwnd, HINSTANCE inst,
- LPCSTR cmdline, INT cmdshow )
-{
-#if !defined(__CYGWIN__) && !defined (__MINGW32__) && !defined(_MSC_VER)
- WORD args[5];
- SEGPTR cmdline_seg;
-
- TRACE( "proc %x hwnd %p inst %p cmdline %s cmdshow %d\n",
- proc, hwnd, inst, debugstr_a(cmdline), cmdshow );
-
- cmdline_seg = MapLS( cmdline );
- args[4] = HWND_16(hwnd);
- args[3] = MapHModuleLS(inst);
- args[2] = SELECTOROF(cmdline_seg);
- args[1] = OFFSETOF(cmdline_seg);
- args[0] = cmdshow;
- WOWCallback16Ex( proc, WCB16_PASCAL, sizeof(args), args, NULL );
- UnMapLS( cmdline_seg );
-#else
- FIXME( "proc %lx hwnd %p inst %p cmdline %s cmdshow %d\n",
- proc, hwnd, inst, debugstr_a(cmdline), cmdshow );
-#endif
-}
-
-/*************************************************************************
- * CallCPLEntry16 [SHELL32.166]
- *
- * called by desk.cpl on "Advanced" with:
- * hMod("DeskCp16.Dll"), pFunc("CplApplet"), 0, 1, 0xc, 0
- *
- */
-LRESULT WINAPI CallCPLEntry16(HINSTANCE hMod, FARPROC pFunc, HWND dw3, UINT dw4, LPARAM
dw5, LPARAM dw6)
-{
- FIXME("(%p, %p, %08x, %08x, %08x, %08x): stub.\n", hMod, pFunc, dw3, dw4,
dw5, dw6);
- return 0x0deadbee;
-}
Modified: branches/shell-experiments/dll/win32/shell32/cpanel.h
URL:
http://svn.reactos.org/svn/reactos/branches/shell-experiments/dll/win32/she…
==============================================================================
--- branches/shell-experiments/dll/win32/shell32/cpanel.h [iso-8859-1] (original)
+++ branches/shell-experiments/dll/win32/shell32/cpanel.h [iso-8859-1] Mon Nov 3 14:36:57
2014
@@ -43,7 +43,7 @@
} CPanel;
-CPlApplet *Control_LoadApplet(HWND hWnd, LPCWSTR cmd, CPanel* panel);
-CPlApplet *Control_UnloadApplet(CPlApplet* applet);
+EXTERN_C CPlApplet *Control_LoadApplet(HWND hWnd, LPCWSTR cmd, CPanel* panel);
+EXTERN_C CPlApplet *Control_UnloadApplet(CPlApplet* applet);
#endif /* __WINE_SHELL_CPANEL_H */
Copied: branches/shell-experiments/dll/win32/shell32/wine/control.c (from r65215,
branches/shell-experiments/dll/win32/shell32/control.cpp)
URL:
http://svn.reactos.org/svn/reactos/branches/shell-experiments/dll/win32/she…
==============================================================================
--- branches/shell-experiments/dll/win32/shell32/control.cpp [iso-8859-1] (original)
+++ branches/shell-experiments/dll/win32/shell32/wine/control.c [iso-8859-1] Mon Nov 3
14:36:57 2014
@@ -1,6 +1,7 @@
/* Control Panel management
*
* Copyright 2001 Eric Pouech
+ * Copyright 2008 Owen Rudge
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -17,7 +18,18 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+#include <assert.h>
+
+#define WIN32_NO_STATUS
+#define _INC_WINDOWS
+
+#include <windef.h>
+#include <winbase.h>
+#define NO_SHLWAPI_REG
+#include <shlwapi.h>
+#include <wine/debug.h>
+
+#include "cpanel.h"
WINE_DEFAULT_DEBUG_CHANNEL(shlctrl);
@@ -349,12 +361,14 @@
static void Control_DoLaunch(CPanel *pPanel, HWND hWnd, LPCWSTR pwszCmd)
{
+ HANDLE hMutex;
+
/* Make a pwszCmd copy so we can modify it */
LPWSTR pwszCmdCopy = _wcsdup(pwszCmd);
+
+ LPWSTR pwszPath = pwszCmdCopy, pwszArg = NULL, pwszArg2 = NULL;
if (!pwszCmdCopy)
return;
-
- LPWSTR pwszPath = pwszCmdCopy, pwszArg = NULL, pwszArg2 = NULL;
/* Path can be quoted */
if (pwszPath[0] == L'"')
@@ -391,7 +405,7 @@
TRACE("Launch %ls, arg %ls, arg2 %ls\n", pwszPath, pwszArg, pwszArg2);
/* Create a mutex to disallow running multiple instances */
- HANDLE hMutex = CreateMutexW(NULL, TRUE, PathFindFileNameW(pwszPath));
+ hMutex = CreateMutexW(NULL, TRUE, PathFindFileNameW(pwszPath));
if (!hMutex || GetLastError() == ERROR_ALREADY_EXISTS)
{
TRACE("Next instance disallowed\n");
@@ -405,13 +419,13 @@
Control_LoadApplet(hWnd, pwszPath, pPanel);
if (pPanel->first)
{
+ INT i = 0;
/* First pPanel applet is the new one */
CPlApplet *pApplet = pPanel->first;
assert(pApplet && pApplet->next == NULL);
TRACE("pApplet->count %d\n", pApplet->count);
/* Note: if there is only one applet, first argument is ignored */
- INT i = 0;
if (pApplet->count > 1 && pwszArg && pwszArg[0])
{
/* If arg begins with '@', number specifies applet index */
@@ -454,7 +468,7 @@
CPanel Panel;
TRACE("(%p, %p, %s, 0x%08x)\n",
- hWnd, hInst, debugstr_w(cmd), nCmdShow);
+ hWnd, hInst, debugstr_w(cmd), nCmdShow);
memset(&Panel, 0, sizeof(Panel));
@@ -471,37 +485,35 @@
}
/*************************************************************************
- * Control_RunDLLA [SHELL32.@]
- *
- */
-EXTERN_C void WINAPI Control_RunDLLA(HWND hWnd, HINSTANCE hInst, LPCSTR cmd, DWORD
nCmdShow)
+ * Control_RunDLLA [SHELL32.@]
+ *
+ */
+void WINAPI Control_RunDLLA(HWND hWnd, HINSTANCE hInst, LPCSTR cmd, DWORD nCmdShow)
{
DWORD len = MultiByteToWideChar(CP_ACP, 0, cmd, -1, NULL, 0 );
- LPWSTR wszCmd = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
-
+ LPWSTR wszCmd = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
if (wszCmd && MultiByteToWideChar(CP_ACP, 0, cmd, -1, wszCmd, len ))
{
Control_RunDLLW(hWnd, hInst, wszCmd, nCmdShow);
}
-
HeapFree(GetProcessHeap(), 0, wszCmd);
}
/*************************************************************************
- * Control_FillCache_RunDLLW [SHELL32.@]
- *
- */
-EXTERN_C HRESULT WINAPI Control_FillCache_RunDLLW(HWND hWnd, HANDLE hModule, DWORD w,
DWORD x)
+ * Control_FillCache_RunDLLW [SHELL32.@]
+ *
+ */
+HRESULT WINAPI Control_FillCache_RunDLLW(HWND hWnd, HANDLE hModule, DWORD w, DWORD x)
{
FIXME("%p %p 0x%08x 0x%08x stub\n", hWnd, hModule, w, x);
- return 0;
+ return S_OK;
}
/*************************************************************************
- * Control_FillCache_RunDLLA [SHELL32.@]
- *
- */
-EXTERN_C HRESULT WINAPI Control_FillCache_RunDLLA(HWND hWnd, HANDLE hModule, DWORD w,
DWORD x)
+ * Control_FillCache_RunDLLA [SHELL32.@]
+ *
+ */
+HRESULT WINAPI Control_FillCache_RunDLLA(HWND hWnd, HANDLE hModule, DWORD w, DWORD x)
{
return Control_FillCache_RunDLLW(hWnd, hModule, w, x);
}