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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Так не снимешь 24.03.06 01:11  Число просмотров: 2703
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
думаю проще всего будет воспользоваться функцией PrintWindow (Win'XP+) либо внедрятся в каждый процесс и слеть окнам WM_PRINT
<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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach