Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2008, 22:38   #1
MURDERER
 
Регистрация: 14.09.2008
Сообщений: 3
По умолчанию Работа с Handle_ами. Помогите

Как можно извлечь цвет пикселя из определенной точки, зная только Хэндл окна?

В проге ищется конкретное окно и при условии, что оно найдено, возвращает его Хэндл(Handle). Мне нужно извлечь область точек(считать у них цвет). Напишите мне функцию извлечения цвета пикселя по Хэндлу! Плиз!!!

Помогите, если кто знает. Очень поможете!
MURDERER вне форума Ответить с цитированием
Старый 14.09.2008, 23:28   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

По хэндлу вы можете получить размеры окна и координаты на экране.
Дальше задайте координаты "области точек" и смотрите их цвет.
А вообще-то проблема не нова, попробуйте поиском по форуму по словам "цвет пиксел".
Например:
http://www.programmersforum.ru/showt...EA%F1%E5%EB%FF
mihali4 вне форума Ответить с цитированием
Старый 15.09.2008, 13:50   #3
MURDERER
 
Регистрация: 14.09.2008
Сообщений: 3
Счастье

Вобщем разобрался я с этой проблемкой!
И выкладываю кусочек кода для тех, кто в дальнейшем сталкнется с ней:

Captcha:=FindWindow('TFCaptcha','Ка пча);
DC:=GetDC(Captcha);
c:=GetPixel(DC,1,1);
Rectangle(DC,1,1,16,16)
image1.Canvas.Pixels[1,1]:=c;
ReleaseDC(Captcha,DC);

*********************************** ********************
DC:HDC;
Captcha:Hwnd;

Captcha:=FindWindow('TFCaptcha','Ка пча); - Искомое окно с заголовком "Капча" и классом "TFCaptcha".

DC:=GetDC(Captcha); - Получение контекста окна для работы с рисованием. Получив его можно рисовать где угодно и на любом компоненте будь даже он TEdit! Контекст рабочего стола - 0, вместо Captcha подставляете 0. Будет рисовать поверх всего!

c:=GetPixel(DC,1,1); - Здесь я извлекаю цвет пикселя из точки [1,1], контекста окна DC.

Rectangle(DC,1,1,16,16) - Тут я рисую на своем окошке прямоугольничек. Можно взять любую функцию рисования в компоненте TImage.

image1.Canvas.Pixels[1,1]:=c; - Тут мы рисуем на компоненте TImage своей программы извлеченный цвет пикселя.

ReleaseDC(Captcha,DC); - После рисования освобождаем больше ненужный контекст рисования через данную функцию.

Для получения класса, заголовка, дескриптора окна и дескриптора меню любого окна в Windows - выкладываю свою прогу с исходниками. Она немного не доработанная(единственная недоработка - не работает ComboBox), но делает свое дело!

В этот архив вложил утилиту WS32.exe - тоже самое, менее удобная но больше функций. Думаю сами разберетесь, тож полезная штука!


http://letitbit.net/download/b840704...andls.rar.html
MURDERER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinApi работа с памятью, помогите! casper123 Помощь студентам 5 15.09.2008 08:13
Помогите!Работа с listbox spiteful41 Помощь студентам 5 21.07.2008 14:02
Работа с текстовым файлом (delphi). Помогите доделать программу. Snord Помощь студентам 1 14.12.2007 14:10
Помогите понять в чем ошибка (работа со строками) Edimus Общие вопросы C/C++ 1 22.11.2007 14:09
Работа с TreeView. Помогите найти ошибку. AlDelta Компоненты Delphi 2 20.07.2007 12:31