Здраствуйте. В проектах на билдере некоректно работает функция
SetThreadDesktop (error 170). Если проект компилировать как консольный — все ок, но у меня сервис (интерактивный, спод система) также не работает в обычном приложении. Окон никаких я не ставлю да и хуков тоде
Код
bool MakeInteractive()
{
HWINSTA hOldWin = GetProcessWindowStation();
HWINSTA hWinSta0 = OpenWindowStation("WinSta0", FALSE, MAXIMUM_ALLOWED);
HDESK hThreadDesktop = GetThreadDesktop(GetCurrentThreadId());
if (!hWinSta0)
{
return false;
}
SetProcessWindowStation(hWinSta0);
CloseWindowStation(hWinSta0);
HDESK hDefault = OpenDesktop("Default", DF_ALLOWOTHERACCOUNTHOOK, TRUE, DESKTOP_HOOKCONTROL|DESKTOP_CREATEWINDOW );
/*test*/HDESK hInputDesk = OpenInputDesktop(DF_ALLOWOTHERACCOUNTHOOK, FALSE, DESKTOP_CREATEWINDOW);
if (!hDefault)
{
PutsInMyFile("MakeInteractive:\n");
return false;
}
if ( !SetThreadDesktop( hDefault ) )
{
CloseDesktop(hDefault);
CloseDesktop(hInputDesk);
if (IsTest)
{
DWORD er = GetLastError(); //ïîëó÷èòü êîä îøèáêè
char erStr[1024];
sprintf(erStr,"Error SetThreadDesktop :-( %d \n", (int)er);
PutsInMyFile(erStr);
};
return false;
}
CloseDesktop(hDefault);
CloseDesktop(hInputDesk);
return true;
}
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR comandLineOption , int)
{
MakeInteractive();
}