Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2011, 17:25   #1
ak251072
Новичок
Джуниор
 
Регистрация: 11.03.2011
Сообщений: 1
По умолчанию Доступ к desktop из службы windows7

Задача: управление компьютером через мобильный телефон.
Проект ServerSR реализован как служба, в XP все работает, тонкое место копирование экрана, код следующий:
void Screen::InitActiveDesktop(void)
{
char inputName[1024];
char currentName[1024];
DWORD dwSizei = 0;
DWORD dwSizet = 0;

HWINSTA hws = OpenWindowStation(TEXT("WinSta0"), false, GENERIC_ALL);
SetProcessWindowStation(hws);
HDESK hThreadDesktop = GetThreadDesktop(GetCurrentThreadId ());
HDESK hInputDesktop = OpenInputDesktop(0, false,
DESKTOP_CREATEMENU |
DESKTOP_CREATEWINDOW |
DESKTOP_ENUMERATE |
DESKTOP_HOOKCONTROL |
DESKTOP_WRITEOBJECTS |
DESKTOP_READOBJECTS |
DESKTOP_SWITCHDESKTOP |
GENERIC_WRITE);

if( (hThreadDesktop != NULL) && (hInputDesktop != NULL) )
{
GetUserObjectInformation(hInputDesk top, UOI_NAME, inputName, 1023, &dwSizei);
GetUserObjectInformation(hThreadDes ktop, UOI_NAME, currentName, 1023, &dwSizet);

bool eq = (dwSizei == dwSizet);
if(eq)
for(DWORD i=0; i<dwSizei; i++)
if(inputName[i] != currentName[i])
eq = false;
if( !eq )
SetThreadDesktop(hInputDesktop);
}
CloseDesktop(hInputDesktop);
CloseDesktop(hThreadDesktop);
CloseWindowStation( hws );
}

В windows 7 естественно не работает т.к. сессия 0 для служб без десктопа.
Вопрос:
1. Можно ли перетащить службу в активную сессию т.е. та, что на экране и с клавиатурой и мышкой?
2. А если нет, видится решение разделить службу и оконную программу с интерфейсом, в которой и копировать экран. И при смене сессии или еще чего, просто перезапускать ее в активной сессии. В связи с этим второй вопрос такой, как запустить оконную программу из службы в активной сессии? И где-то можно толково почитать про связку службы и программы интерфейса, когда чего запускать. А то я сделал программку на Qt чтобы в трее пряталась, с менюшкой (из примеров) из службы запустил, если уже вошел все хорошо, а если в winlogon-е запустилась, входишь трея нет а программка работает.
ak251072 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi на Windows7 kotaina Общие вопросы Delphi 5 03.02.2011 15:48
windows7 taskbar moo2k Общие вопросы Delphi 0 30.07.2010 13:59
Стиль Windows7 Бутаков_Сергей Общие вопросы Delphi 6 04.04.2010 18:52
Справка Windows7 VadEr Windows 3 14.10.2009 12:25
звуки windows7 Gagar1n Windows 1 25.09.2009 18:41