К списку форумов К списку вопросов
Delphi, захват экрана из сервиса
IlyaT
28.06.2004 - 11:22
Пытаюсь захватывать экран из сервиса. Стандартно через GetDC (0), сервису разрешаю взаимодействие с рабочим столом. И это даже работает. Пока один пользователь. Стоит зайти под другим - ничего не захватывается. Что делать?
IlyaT
1 - 01.07.2004 - 06:16
up
Delphist
2 - 01.07.2004 - 14:16
Если это NT, то там нужна хитрая возня с аккаунтами.
Глянь MSDN на предмет Window Station
IlyaT
3 - 02.07.2004 - 17:29
Спасибо, буду смотреть.
И попутно еще один вопрос: а можно захватить не рабочий стол, а console-output?
IlyaT
4 - 05.07.2004 - 11:58
Читал MSDN. Много думал.
Осознал, что интерактивный сервис подключается к нулевой оконной станции (Window Station) так же как и первый пользователь залогинившийся в систему. Поэтому сервису и удается захватить десктоп одного пользователя. Но мне все равно совсем непонятно, как определить какая станция сейчас активна и переподключить к ней свой сервис.
Delphist
5 - 05.07.2004 - 17:45
Что значит "активна"? ИМХО, это как вопрос про "какое из окон программы является главным" (ответ: главного окна нет, они все равноправные).
Опять-таки ИМХО, нужно что-то типа:
  hNewSta := OpenWindowStation('Winsta0', True, STANDARD_RIGHTS_REQUIRED);
  if hNewSta <> 0 then begin
    hOldSta := GetProcessWindowStation;
    if SetProcessWindowStation(hNewSta) then begin
      hd := OpenDesktop('Default', 0, True, STANDARD_RIGHTS_REQUIRED);
      if hd <> 0 then begin
        EnumDesktopWindows(hd, @EnumDesktopWindowsProc, 0);
        if FirstWin <> 0 then begin
...

К списку вопросов на форуме Программирование

>>