mirror of
https://github.com/cmderdev/cmder.git
synced 2025-01-10 16:29:08 +08:00
make /register work with /c
This commit is contained in:
parent
b16aa7a29e
commit
787ac3773c
15
README.md
15
README.md
@ -41,12 +41,15 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
|
|||||||
## Cmder.exe Command Line Arguments
|
## Cmder.exe Command Line Arguments
|
||||||
|
|
||||||
|
|
||||||
| Argument | Description |
|
| Argument | Description |
|
||||||
| ------------------- | ----------------------------------------------------------------------- |
|
| ------------------- | ----------------------------------------------------------------------- |
|
||||||
| `/C [user_root_path]` | Individual user Cmder root folder. Example: `%userprofile%\cmder_config` |
|
| `/C [user_root_path]` | Individual user Cmder root folder. Example: `%userprofile%\cmder_config` |
|
||||||
| `/SINGLE` | Start Cmder in single mode. |
|
| `/M` | Use `conemu-%computername%.xml` for ConEmu settings storage instead of `user_conemu.xml` |
|
||||||
| `/START [start_path]` | Folder path to start in. |
|
| `/REGISTER [ALL, USER]` | Register a Windows Shell Menu shortcut. |
|
||||||
| `/TASK [task_name]` | Task to start after launch. |
|
| `/UNREGISTER [ALL, USER]` | Un-register a Windows Shell Menu shortcut. |
|
||||||
|
| `/SINGLE` | Start Cmder in single mode. |
|
||||||
|
| `/START [start_path]` | Folder path to start in. |
|
||||||
|
| `/TASK [task_name]` | Task to start after launch. |
|
||||||
|
|
||||||
## Context Menu Integration
|
## Context Menu Integration
|
||||||
|
|
||||||
|
@ -442,8 +442,10 @@ HKEY GetRootKey(std::wstring opt)
|
|||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName, std::wstring cfgRoot = L"")
|
||||||
{
|
{
|
||||||
|
wchar_t userConfigDirPath[MAX_PATH] = { 0 };
|
||||||
|
|
||||||
// First, get the paths we will use
|
// First, get the paths we will use
|
||||||
|
|
||||||
wchar_t exePath[MAX_PATH] = { 0 };
|
wchar_t exePath[MAX_PATH] = { 0 };
|
||||||
@ -452,7 +454,16 @@ void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
|||||||
GetModuleFileName(NULL, exePath, sizeof(exePath));
|
GetModuleFileName(NULL, exePath, sizeof(exePath));
|
||||||
|
|
||||||
wchar_t commandStr[MAX_PATH + 20] = { 0 };
|
wchar_t commandStr[MAX_PATH + 20] = { 0 };
|
||||||
swprintf_s(commandStr, L"\"%s\" \"%%V\"", exePath);
|
|
||||||
|
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||||
|
{
|
||||||
|
swprintf_s(commandStr, L"\"%s\" \"%%V\"", exePath);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
||||||
|
userConfigDirPath[cfgRoot.length()] = 0;
|
||||||
|
swprintf_s(commandStr, L"\"%s\" /c \"%s\" \"%%V\"", exePath, userConfigDirPath);
|
||||||
|
}
|
||||||
|
|
||||||
// Now that we have `commandStr`, it's OK to change `exePath`...
|
// Now that we have `commandStr`, it's OK to change `exePath`...
|
||||||
PathRemoveFileSpec(exePath);
|
PathRemoveFileSpec(exePath);
|
||||||
@ -635,8 +646,8 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
if (cmderOptions.registerApp == true)
|
if (cmderOptions.registerApp == true)
|
||||||
{
|
{
|
||||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot);
|
||||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot);
|
||||||
}
|
}
|
||||||
else if (cmderOptions.unRegisterApp == true)
|
else if (cmderOptions.unRegisterApp == true)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user