使用CreateDesktop最多能创建多少个虚拟桌面?
部分代码:
CString tDeskName;
for(int i=1; i<100; ++i)
{
tDeskName.Format(_T("testvd_%d"), i);
HDESK tDesk = OpenDesktop(tDeskName, DF_ALLOWOTHERACCOUNTHOOK, TRUE, GENERIC_ALL);
if(NULL == tDesk)
{
SECURITY_ATTRIBUTES sAttribute = {sizeof(SECURITY_ATTRIBUTES), NULL, TRUE};
tDesk = CreateDesktop(tDeskName, NULL, NULL, DF_ALLOWOTHERACCOUNTHOOK, GENERIC_ALL, &sAttribute); if(NULL == tDesk)
{
LPVOID lpMsgBuf;
LPVOID lpDisplayBuf;
DWORD dw = GetLastError(); FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL ); lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, 1024);
StringCchPrintf((LPTSTR)lpDisplayBuf,
LocalSize(lpDisplayBuf),
TEXT("创建桌面%d失败: %s"), i+1, lpMsgBuf);
MessageBox((LPCTSTR)lpDisplayBuf, TEXT("error"), MB_ICONERROR | MB_TOPMOST | MB_TASKMODAL); LocalFree(lpMsgBuf);
LocalFree(lpDisplayBuf); break;
}
tDeskName.ReleaseBuffer();
}
CloseDesktop(tDesk);
}
部分代码:
CString tDeskName;
for(int i=1; i<100; ++i)
{
tDeskName.Format(_T("testvd_%d"), i);
HDESK tDesk = OpenDesktop(tDeskName, DF_ALLOWOTHERACCOUNTHOOK, TRUE, GENERIC_ALL);
if(NULL == tDesk)
{
SECURITY_ATTRIBUTES sAttribute = {sizeof(SECURITY_ATTRIBUTES), NULL, TRUE};
tDesk = CreateDesktop(tDeskName, NULL, NULL, DF_ALLOWOTHERACCOUNTHOOK, GENERIC_ALL, &sAttribute); if(NULL == tDesk)
{
LPVOID lpMsgBuf;
LPVOID lpDisplayBuf;
DWORD dw = GetLastError(); FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL ); lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, 1024);
StringCchPrintf((LPTSTR)lpDisplayBuf,
LocalSize(lpDisplayBuf),
TEXT("创建桌面%d失败: %s"), i+1, lpMsgBuf);
MessageBox((LPCTSTR)lpDisplayBuf, TEXT("error"), MB_ICONERROR | MB_TOPMOST | MB_TASKMODAL); LocalFree(lpMsgBuf);
LocalFree(lpDisplayBuf); break;
}
tDeskName.ReleaseBuffer();
}
CloseDesktop(tDesk);
}
不过可能是最好的办法了.
结贴.