Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать использует ли приложение DoubleBuffered 
:(
    Опции темы
Delphist
  Дата 29.8.2006, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Есть чужое приложение которое умеет рисовать схемы. Как узнать использует ли данное приложение DoubleBuffered = true.
Да и вообще постараться вытянуть как можно больше инфы о методах рисования используемых этим приложением.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Voyager
Дата 29.8.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 4
Всего: 18



По моему самый лучший способ - это поставить хук на функции и посмотреть что и когда туда передается (перед этим дизасмить приложение на наличие функций).
PM   Вверх
Rouse_
Дата 31.8.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 18
Всего: 29



Какой хук? Какие функции? DoubleBuffered это обычный флаг, булевая переменная. 
Данная переменная присутствует только в Delphi, приложения написанные на других языках понятия не имеют ни о каком DoubleBuffered.
При отрисовке, если данный флаг включен, создается временный DC на котором производиться отрисовка, а потом изображение одним махом перекибывается через BitBlt на основную канву. 

Узнать включен он или нет - только прямым чтением из памяти процесса, для этого необходимо каким либо образом получить адрес данной переменной. А узнать о методах рисования - только дизассемблированием и анализом кода.


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Delphist
Дата 1.9.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(Rouse_ @  31.8.2006,  16:54 Найти цитируемый пост)
А узнать о методах рисования - только дизассемблированием и анализом кода

Спасибо


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
dvamaster
Дата 2.9.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: 2
Всего: 10



Извините за С++, но вот хорошая штука

Код

PIXELFORMATDESCRIPTOR  pfd;
HDC  hdc;
int  iPixelFormat;
 
// get the current pixel format index 
iPixelFormat = GetPixelFormat(hdc); 
 
// obtain a detailed description of that pixel format 
DescribePixelFormat(hdc, iPixelFormat, 
        sizeof(PIXELFORMATDESCRIPTOR), &pfd);

проверка:

Код

if (pfd.dwFlags and PFD_DOUBLEBUFFER) = PFD_DOUBLEBUFFER then




--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 3.9.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



dvamaster, странно, но кажется Rouse_ прав
Вот такая проверка
Код

procedure TForm1.Button1Click(Sender: TObject);
var
   pfd          : PIXELFORMATDESCRIPTOR;
   dc           : HDC;
   iPixelFormat : integer;
begin
  Panel1.DoubleBuffered := False;

  dc := GetDC(Panel1.Handle);
  iPixelFormat := GetPixelFormat(dc);
  DescribePixelFormat(dc, iPixelFormat,
                      sizeof(PIXELFORMATDESCRIPTOR), pfd);

  if (pfd.dwFlags and PFD_DOUBLEBUFFER) = PFD_DOUBLEBUFFER
  then
    ShowMessage('doubleBuffer in pfd.dwFlags ' + #13#10#13#10 +
    'Panel1.DoubleBuffered = ' + BoolToStr(Panel1.DoubleBuffered, true))
  else
    ShowMessage('not(doubleBuffer in pfd.dwFlags) ' + #13#10#13#10 +
    'Panel1.DoubleBuffered = ' + BoolToStr(Panel1.DoubleBuffered, true));

  ReleaseDC(dc, Panel1.Handle)
end;


показывает 'doubleBuffer'
хотя  Panel1.DoubleBuffered = False;

Это сообщение отредактировал(а) alexeis1 - 3.9.2006, 17:37


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
dumb
Дата 4.9.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



ничего странного. простое совпадение с именем константы из gdi.
вы в сырцы rtl посмотрите лучше на предмет этого DoubleBuffered - сразу все станет ясно. smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1052 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.