From a8a2a1e55b5ae4ba2b770d02cb6909d9d2ff4387 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Mon, 22 Oct 2012 09:40:44 +0000 Subject: ProfileManager and Restar plugin's services now restart Miranda to the same profile they where called from git-svn-id: http://svn.miranda-ng.org/main/trunk@2040 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Restart/src/restart.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'plugins/Restart/src') diff --git a/plugins/Restart/src/restart.cpp b/plugins/Restart/src/restart.cpp index 07c15b60e7..c4215794a2 100644 --- a/plugins/Restart/src/restart.cpp +++ b/plugins/Restart/src/restart.cpp @@ -6,11 +6,13 @@ #include #include #include +#include +#include #include "resource.h" HINSTANCE hInst; -HANDLE hIconHandle; int hLangpack; +HANDLE hIconHandle, hRestartMe; PLUGININFOEX pluginInfo={ sizeof(PLUGININFOEX), @@ -36,6 +38,21 @@ extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD miranda return &pluginInfo; } +static INT_PTR RestartMe(WPARAM wParam, LPARAM lParam) +{ + TCHAR mirandaPath[MAX_PATH], cmdLine[100]; + PROCESS_INFORMATION pi; + STARTUPINFO si = {0}; + si.cb = sizeof(si); + GetModuleFileName(NULL, mirandaPath, SIZEOF(mirandaPath)); + TCHAR *profilename = Utils_ReplaceVarsT(_T("%miranda_profilename%")); + mir_sntprintf(cmdLine, SIZEOF(cmdLine), _T("\"%s\" /restart:%d /profile=%s"), mirandaPath, GetCurrentProcessId(), profilename); + CallService("CloseAction", 0, 0); + CreateProcess(mirandaPath, cmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); + mir_free(profilename); + return 0; +} + extern "C" __declspec(dllexport) int Load(void) { mir_getLP( &pluginInfo ); @@ -53,12 +70,13 @@ extern "C" __declspec(dllexport) int Load(void) sid.iDefaultIndex = -IDI_RESTARTICON; hIconHandle = Skin_AddIcon(&sid); + hRestartMe = CreateServiceFunction("System/RestartMe", RestartMe); CLISTMENUITEM mi = { sizeof(mi) }; mi.position = -0x7FFFFFFF; mi.flags = CMIF_ICONFROMICOLIB | CMIF_TCHAR; mi.icolibItem = hIconHandle; mi.ptszName = _T("Restart"); - mi.pszService = MS_SYSTEM_RESTART; + mi.pszService = "System/RestartMe"; Menu_AddMainMenuItem(&mi); Menu_AddTrayMenuItem(&mi); return 0; -- cgit v1.2.3