Changeset 2250
- Timestamp:
- 10/23/2010 2:47:40 AM (3 years ago)
- File:
-
- 1 edited
-
trunk/eraser/Eraser.Shell/CtxMenu.cpp (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/eraser/Eraser.Shell/CtxMenu.cpp
r2247 r2250 955 955 956 956 //Compile the final set of parameters we are going to pass to Eraser. 957 std::wstring finalParameters(L"shell /quiet "); 957 std::wostringstream finalParameters; 958 finalParameters << L"shell /quiet "; 958 959 959 960 //Set the action selected by the user. … … 961 962 { 962 963 case ACTION_ERASE: 963 finalParameters +=L"/action=EraseNow ";964 finalParameters << L"/action=EraseNow "; 964 965 break; 965 966 case ACTION_ERASE_ON_RESTART: 966 finalParameters +=L"/action=EraseOnRestart ";967 finalParameters << L"/action=EraseOnRestart "; 967 968 break; 968 969 case ACTION_ERASE_UNUSED_SPACE: 969 finalParameters +=L"/action=EraseUnusedSpace ";970 finalParameters << L"/action=EraseUnusedSpace "; 970 971 break; 971 972 case ACTION_SECURE_MOVE: 972 973 case ACTION_SECURE_PASTE: 973 finalParameters +=L"/action=SecureMove ";974 finalParameters << L"/action=SecureMove "; 974 975 break; 975 976 default: … … 978 979 979 980 //Pass Explorer's HWND to the child process, in the event that it is required. 980 std::wostringstream stream; 981 stream << L" /parent=" << (size_t)parent; 982 finalParameters += stream.str(); 981 finalParameters << L" /parent=" << (size_t)parent << L' '; 983 982 984 983 //Then append the rest of the arguments, depending on the length. … … 1001 1000 stream << parameters; 1002 1001 1003 finalParameters += L"\"@"; 1004 finalParameters += buffer; 1005 finalParameters += '"'; 1002 finalParameters << L"\"@" << buffer << L'"'; 1006 1003 } 1007 1004 else 1008 1005 { 1009 1006 //Short command line, pass directly to the program 1010 finalParameters +=parameters;1007 finalParameters << parameters; 1011 1008 } 1012 1009 } … … 1017 1014 { 1018 1015 int result = reinterpret_cast<int>(ShellExecute(parent, L"runas", 1019 eraserPath.c_str(), finalParameters. c_str(), NULL, show));1016 eraserPath.c_str(), finalParameters.str().c_str(), NULL, show)); 1020 1017 if (result <= 32) 1021 1018 switch (result) … … 1059 1056 PROCESS_INFORMATION processInfo; 1060 1057 ZeroMemory(&processInfo, sizeof(processInfo)); 1061 std::vector<wchar_t> buffer(eraserPath.length() + finalParameters. length() + 4);1058 std::vector<wchar_t> buffer(eraserPath.length() + finalParameters.str().length() + 4); 1062 1059 wcscpy_s(&buffer.front(), buffer.size(), (L"\"" + eraserPath + L"\" " + 1063 finalParameters ).c_str());1060 finalParameters.str()).c_str()); 1064 1061 1065 1062 if (!CreateProcess(NULL, &buffer.front(), NULL, NULL, true, CREATE_NO_WINDOW,
Note: See TracChangeset
for help on using the changeset viewer.
