#include <stdio.h>
#include <Windows.h>
#define DESKTOP_NAME L"MyDesktop"
int main()
{
HDESK hOld = INVALID_HANDLE_VALUE;
HDESK hNew = INVALID_HANDLE_VALUE;
STARTUPINFO si = { 0 };
PROCESS_INFORMATION pi = { 0 };
si.cb = sizeof(STARTUPINFO);
si.lpDesktop = DESKTOP_NAME;
hOld = GetThreadDesktop(GetCurrentThreadId());
if (INVALID_HANDLE_VALUE != hOld)
{
hNew = CreateDesktop(L"MyDesktop", NULL, NULL, NULL, GENERIC_ALL, NULL);
if (INVALID_HANDLE_VALUE != hNew)
{
HANDLE hExplorer = INVALID_HANDLE_VALUE;
SetThreadDesktop(hNew);
SwitchDesktop(hNew);
hExplorer = CreateProcess(L"C:\\Windows\\Notepad.exe", NULL, NULL, NULL, FALSE, 0,
NULL, NULL, &si, &pi);
Sleep(3000);
TerminateProcess(hExplorer);
SwitchDesktop(hOld);
CloseDesktop(hNew);
}
}
return 0;
}