Discussion:
Desktops
(too old to reply)
Alberto Spelta
2003-12-22 15:00:37 UTC
Permalink
Hello,
does someone knows how close/destroy a desktop created using
CreateDesktop() API ???
Thanks
Alberto Spelta
CheckAbdoul
2003-12-22 15:59:26 UTC
Permalink
How about ::CloseDesktop() ?
--
Cheers
Check Abdoul [VC++ MVP]
-----------------------------------
Post by Alberto Spelta
Hello,
does someone knows how close/destroy a desktop created using
CreateDesktop() API ???
Thanks
Alberto Spelta
Alberto Spelta
2003-12-23 09:28:14 UTC
Permalink
Hi,
I have understood that CloseDesktop function closes an open handle to a
desktop object, do not destroy/close the desktop.
It's wrong ??
can u post an example please ?

Thank u
Alberto Spelta
Post by CheckAbdoul
How about ::CloseDesktop() ?
--
Cheers
Check Abdoul [VC++ MVP]
-----------------------------------
Post by Alberto Spelta
Hello,
does someone knows how close/destroy a desktop created using
CreateDesktop() API ???
Thanks
Alberto Spelta
Alberto Spelta
2003-12-23 09:51:10 UTC
Permalink
Hi,
if i kill the desktop's default shell ("prog manager", explorer.exe)
then the desktop was destroyed.

here is an example, you show a msgbox end then the main process exit end the
desktop will close.

HDESK hdeskOriginalThread = GetThreadDesktop(GetCurrentThreadId());
HDESK hdeskOriginalInput =
OpenInputDesktop(0,FALSE,DESKTOP_SWITCHDESKTOP);
HDESK hdeskNewDesktop = CreateDesktop(TEXT("MyDesktop"), NULL, NULL, 0,
GENERIC_ALL, NULL);
SetThreadDesktop(hdeskNewDesktop);
SwitchDesktop(hdeskNewDesktop);
MessageBox(NULL, TEXT("This message is appearing on a new desktop!"),
TEXT("Desktop Demo"),MB_OK);
SwitchDesktop(hdeskOriginalInput);
SetThreadDesktop(hdeskOriginalThread);
CloseDesktop(hdeskNewDesktop);

if you try this the desktop don't close because explorer.exe, the main
window shell, still running

HDESK hdeskNewDesktop = CreateDesktop(TEXT("MyDesktop"), NULL, NULL, 0,
GENERIC_ALL, NULL);
PROCESS_INFORMATION pi = {0};
STARTUPINFO si = {0};
si.cb = sizeof(si);
si.lpTitle = TEXT("title");
si.lpDesktop = TEXT("MyDesktop"); // here's the important line!
CreateProcess(NULL, TEXT("explorer.exe"), NULL, NULL, TRUE,
NORMAL_PRIORITY_CLASS, NULL, NULL, &si,&pi)
SwitchDesktop(hdeskNewDesktop);

thanks
Alberto

ps. sorry for my english

Loading...