Этот код предполагает создание второго рабочего стола и выполнение файла внутри него (создание процесса) без переключения на второй рабочий стол. Я знаю, что CreateDesktop
работает, потому что я переключился на это пару раз. Проблема в том, что файл должен создать .xml
файл в его месте, и он работает, когда я запускаю его отдельно, но он не работает (не создает файл XML) внутри второго рабочего стола (CreateProcess
работает, и я вижу, что процесс файла работает). Когда я переключаюсь на второй рабочий стол и запускаю файл вручную, он работает (генерирует XML).
Код:
wchar_t explorerPath[MAX_PATH];
const LPCWSTR testfilePath = L"C:\\testfile.exe";
const LPCWSTR secondDesktopName = L"SecondDesktop";
STARTUPINFOW startup_info = { 0 };
PROCESS_INFORMATION process_info = { nullptr };
// Expand the path of explorer.exe
ExpandEnvironmentStringsW(L"%windir%\\explorer.exe", explorerPath, MAX_PATH - 1);
OpenDesktopW(secondDesktopName, NULL, FALSE, GENERIC_ALL);
CreateDesktopW(secondDesktopName, nullptr, nullptr, 0, GENERIC_ALL, nullptr);
startup_info.cb = sizeof startup_info;
startup_info.lpDesktop = LPWSTR(secondDesktopName);
CreateProcessW(explorerPath, nullptr, nullptr, nullptr, FALSE, 0, nullptr, nullptr, &startup_info, &process_info);
CreateProcessW(testfilePath, nullptr, nullptr, nullptr, FALSE, 0, nullptr, nullptr, &startup_info, &process_info);
Вот мой вопрос: CreateDesktop
а также CreateProcess
и работает, и тестовый файл работает при отдельном запуске, но тестовый файл не работает внутри второго рабочего стола (кажется, это просто пустой процесс с тем же именем), В чем причина? Мой код правильный? Как вы запускаете файл на рабочем столе, созданный CreateDesktop
в с ++?
Testfile.exe это не графический интерфейс, это cli.
Задача ещё не решена.
Других решений пока нет …