diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index fcdeb60..893e33c 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -79,7 +79,7 @@ optpair GetOption() return pair; } -void StartCmder(std::wstring path) +void StartCmder(std::wstring path, bool is_single_mode) { #if USE_TASKBAR_API wchar_t appId[MAX_PATH] = { 0 }; @@ -102,7 +102,14 @@ void StartCmder(std::wstring path) PathCombine(cfgPath, exeDir, L"config\\ConEmu.xml"); PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe"); - swprintf_s(args, L"/Icon \"%s\" /Title Cmder /LoadCfgFile \"%s\"", icoPath, cfgPath); + if (is_single_mode) + { + swprintf_s(args, L"/single /Icon \"%s\" /Title Cmder /LoadCfgFile \"%s\"", icoPath, cfgPath); + } + else + { + swprintf_s(args, L"/Icon \"%s\" /Title Cmder /LoadCfgFile \"%s\"", icoPath, cfgPath); + } SetEnvironmentVariable(L"CMDER_ROOT", exeDir); SetEnvironmentVariable(L"CMDER_START", path.c_str()); @@ -229,7 +236,11 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, if (streqi(opt.first.c_str(), L"/START")) { - StartCmder(opt.second); + StartCmder(opt.second, false); + } + else if (streqi(opt.first.c_str(), L"/SINGLE")) + { + StartCmder(opt.second, true); } else if (streqi(opt.first.c_str(), L"/REGISTER")) { @@ -243,7 +254,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, } else { - MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n /START \n /REGISTER [USER/ALL]\n /UNREGISTER [USER/ALL]", MB_TITLE, MB_OK); + MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n /START \n /SINGLE \n /REGISTER [USER/ALL]\n /UNREGISTER [USER/ALL]", MB_TITLE, MB_OK); return 1; }