информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Атака на InternetSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
"когда в системе не не одного пользователя " 24.03.06 12:31  Число просмотров: 2681
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Это значит что активен десктоп винлогон. А апликухи находятся на десктопе дефолт. Скрниншот неактивного десктопа НЕЛЬЗЯ снять обычным способом (те если внутри неактивного десктопа будет апликуха дергающая скриншоты она ниче оттуда не дернет).
<programming>
[C++] screenshort capture ? 24.03.06 00:48  
Автор: Tamas Статус: Member
Отредактировано 24.03.06 00:49  Количество правок: 1
<"чистая" ссылка>
есть тут такой интересный вопросик КАК СДЕЛАТЬ СКРИНШОРТ ЭКРАНА когда в системе не не одного пользователя ??? прога которя его должна делать работает как сервис

я использую вот такой код

bool CaptureScreenShort(void **HBitmap)
{
void *HDCScreen;
void *HDCCompatible;
int Width;
int Height;

if((HDCScreen=GetDC(GetDesktopWindow()))==NULL)return false;

Width=GetDeviceCaps(HDCScreen,HORZRES);
Height=GetDeviceCaps(HDCScreen,VERTRES);

if((HDCCompatible=CreateCompatibleDC(HDCScreen))==NULL)
{
DeleteDC(HDCScreen);
return false;
}

if((*HBitmap=CreateCompatibleBitmap(HDCScreen,Width,Height))==NULL)
{
DeleteDC(HDCScreen);
DeleteDC(HDCCompatible);
return false;
}

if(!SelectObject(HDCCompatible,*HBitmap))
{
DeleteDC(HDCScreen);
DeleteDC(HDCCompatible);
DeleteObject(*HBitmap);
return false;
}

if(!BitBlt(HDCCompatible,0,0,Width,Height,HDCScreen,0,0,SRCCOPY))
{
DeleteDC(HDCScreen);
DeleteDC(HDCCompatible);
DeleteObject(*HBitmap);
return false;
}

DeleteDC(HDCScreen);
DeleteDC(HDCCompatible);

return true;
}

если в системе некого нет GetDesktopWindow() возвращяет NULL :-(
Так не снимешь 24.03.06 01:11  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
думаю проще всего будет воспользоваться функцией PrintWindow (Win'XP+) либо внедрятся в каждый процесс и слеть окнам WM_PRINT
но ведь по идеи на эртане всё равно есть окно.... как... 24.03.06 01:29  
Автор: Tamas Статус: Member
<"чистая" ссылка>
> думаю проще всего будет воспользоваться функцией
> PrintWindow (Win'XP+) либо внедрятся в каждый процесс и
> слеть окнам WM_PRINT


но ведь по идеи на эртане всё равно есть окно.... как получить его хендел ???
а точьнее как опредилить что это главное окно ?
Нужно работать с оконными станциями... Я уже давно не лазил в эти виндовозные дебри, но идея примерно такая: 24.03.06 07:47  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
Для того, чтобы снять снимок с декстопа, в котором болтается виндовозная GINA (окно входа в систему), тебе экспериментальным путём нужно перечислить используя EnumWindowSations() рабочие станции в системе, запустить отдельный процесс в этой WindowStation, подключиться к текущему в этой рабочей станции Desktop, и снять там снимок экрана. Почитай Window Station and Desktop Reference в MSDN.
Не получится 24.03.06 11:11  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
У невидимых окон (у тех что на неинтерактивном десктопе) пустые DC. Имеющие clipping region (0,0). Соответственно такие окна ничего никуда не рисуют как их не проси. Надо предоставить им нормальный DC куда рисовать.
Товаристч-автор корневого поста не говорит о том, что окна невидимые, он говорит о том, что на экране GINA. Видимая :) 24.03.06 12:19  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
"когда в системе не не одного пользователя " 24.03.06 12:31  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Это значит что активен десктоп винлогон. А апликухи находятся на десктопе дефолт. Скрниншот неактивного десктопа НЕЛЬЗЯ снять обычным способом (те если внутри неактивного десктопа будет апликуха дергающая скриншоты она ниче оттуда не дернет).
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach