захват изображения с экрана сервисом

Тема в разделе "WASM.WIN32", создана пользователем was_log_a, 2 мар 2007.

  1. was_log_a

    was_log_a New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    97
    как захватить изображение с экрана средствами WinAPI когда в систему еще не залогинились пользователи? Пробовал так
    Код (Text):
    1. rd_ddc=CreateDC("DISPLAY",0,0,0);
    2. rd_scrn_width=GetDeviceCaps(rd_ddc,HORZRES);
    3. rd_scrn_height=GetDeviceCaps(rd_ddc,VERTRES);
    4. rd_buf_size=rd_scrn_width*rd_scrn_height*2;
    5.  
    6. rd_hb=CreateCompatibleBitmap(rd_ddc,rd_scrn_width,rd_scrn_height);
    7. rd_cdc=CreateCompatibleDC(rd_ddc);
    8. SelectObject(rd_cdc,rd_hb);
    9. .......................
    10. .....................
    11. BitBlt(rd_cdc,0,0,rd_scrn_width,rd_scrn_height,rd_ddc,0,0,SRCCOPY);
    12. GetDIBits(rd_cdc,rd_hb,0,rd_scrn_height,rd_cur_buf,&rd_binfo,DIB_RGB_COLORS);
    Не работает. Пробовал указывать конкретное устройство (монитор) в CreateDC- тоже не работает.

    Изучал исходники VNC - там вроде также делается, но при этом работает
     
  2. zxm

    zxm New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    71
    И не будет работать. Сервис находиться на другой Windows Station. Чтобы захватить экран нужно сделать сервис инерактивным, и возможно, если этот не паможет, в ручную переключиться на Winsta0/Default десктоп. Подробнее в MSDN: http://msdn2.microsoft.com/en-us/library/ms681928.aspx
     
  3. was_log_a

    was_log_a New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    97
    Спасибо за ссылочку. Сервис изначально был интерактивным
     
  4. was_log_a

    was_log_a New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    97
    Насколько я понял, интерактивный сервис запускается под Windows Station Winsta0. Если юзер залогинился, то по умолчанию юзается Default десктоп. А как отследить выход юзера из системы, чтобы переключиться на Winlogon десктоп?
     
  5. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    was_log_a
    SERVICE_ACCEPT_SESSIONCHANGE
    Читай MSDN.