Здравствуйте, Adm, Вы писали:
Adm>Спасибо. Получается выводить окно на видимый десктоп из Thread. Хотелось бы вывести на Winlogon диалог, который откомпилирован как exe. При создании формы наблюдается следующая ситуация: если сервис неинтерактивный, OpenInputDesktop возвращает ошибку 1(Неверная функция),
Нормально, неинтерактивные сервисы запускаются на WindowsStation, которая вообще не имеет десктопа.
Adm>в случае интерактивного сервиса OpenInputDesktop проходит нормально, но SetThreadDesktop возвращает ошибку 170(Требуемый ресурс занят). Процесс запускается функцией CreateProcessAsUser с токеном сервисного процесса.
Хз, у меня вот так работает. Правда напрямую из сервиса.
HDESK hdeskSave = GetThreadDesktop ( GetCurrentThreadId() );
HDESK oldd = OpenInputDesktop ( 0, FALSE, MAXIMUM_ALLOWED );
if ( ! oldd || !SetThreadDesktop ( oldd ) )
{
}