У меня есть замена оболочки, которая должна перезапустить Explorer.В настоящее время я использую:
CreateProcess(nil, zAppName, { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
false, { handle inheritance flag }
CREATE_NEW_CONSOLE or { creation flags }
NORMAL_PRIORITY_CLASS, nil, { pointer to new environment block }
nil, { pointer to current directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo) { pointer to PROCESS_INF }
, который прекрасно работает в Windows XP / Vista и т. Д., Но в Windows 7 вместо перезапуска Проводника он просто открывает окно Проводника.
В ответ наСоответствующий вопрос для .Net , который написал Робольт:
Я заметил, что никто не обращался к вопросу запуска explorer.exe в качестве оболочки, а не просто к открытию окна проводника.Мне потребовалось время, чтобы понять это, оказалось, что это было что-то простое ":
string explorer = string.Format("{0}\\{1}", Environment.GetEnvironmentVariable("WINDIR"), "explorer.exe");
Process process = new Process();
process.StartInfo.FileName = explorer;
process.StartInfo.UseShellExecute = true;
process.Start();
Вы должны установить StartInfo.UseshellExecute как true, чтобы перезапустить его как оболочку.
Но я не могу понять, как это сделать в Delphi. Кто-нибудь сталкивался с решением этой проблемы?