Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.25;
Скачать: CL | DM;

Вниз

Узнать цвет точки на экране   Найти похожие ветки 

 
DimN   (2005-05-26 16:29) [0]

Помогите пожалуйста!!!
Мне нужно длительный промежуток времени сканировать определённую точку на экране и в соответствии с её цветом действовать дальше.
Я использую вот такой код, для определения цвета:

function DesktopColor(const X, Y: Integer): TColor;
var
 c: TCanvas;
begin
 c := TCanvas.Create;
 try
   c.Handle := GetWindowDC(GetDesktopWindow);
   Result   := GetPixel(c.Handle, X, Y);
 finally
   c.Free;
 end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 If (ColorToRGB(DesktopColor(20, 400)) = 255) or
    (ColorToRGB(DesktopColor(20, 400)) = 32768) then
      Form1.Caption:=IntToStr(StrToInt(Form1.Caption)+1)
end;

Программа работает несколько минут, а потом выдаёт ошибку: "Project xxxxx.exe raised exception class EInvalidOperation with message "Canvas does not allow drawing". Process stopped. Use Step or Run to continue."

Подскажите, каким образом можно эту ошибку исправить?
Или другой способ, чтобы узнать цвет точки на экране?


 
alpet ©   (2005-05-26 16:32) [1]

Перед c.Free, поставь ReleaseDC (GetDesktopWindow, c.handle);


 
DimN   (2005-05-26 16:40) [2]

Спасибо большое!!! Помогло!


 
vidiv ©   (2005-05-27 10:19) [3]

Я бы сделал так:
var DesktopColorDC:hdc=0;

function DesktopColor(const X, Y: Integer; Release:boolean=false): TColor;
begin
 if DesktopColorDC = 0 then DesktopColorDC := getdc(0);
 result := GetPixel(DesktopColorDC, X, Y);
 if Release then ReleaseDC(0, DesktopColorDC);
end;


После того как функция DesktopColor уже не нужна выполнить
DesktopColor(0, 0, true); а в остальном использовать ее также как и использовал...



Страницы: 1 вся ветка

Текущий архив: 2005.07.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.04 c
14-1120467213
alex-drob
2005-07-04 12:53
2005.07.25
Как установить XP из под Dos


1-1120658463
Будущий рядовой РА
2005-07-06 18:01
2005.07.25
Код не работает


10-1097676636
Morj
2004-10-13 18:10
2005.07.25
Сортировка диапазона ячеек в Excel


3-1118396661
Леонид
2005-06-10 13:44
2005.07.25
Как узнать значение поля после инсерта, поле автоинкрементное


3-1118489247
Koala
2005-06-11 15:27
2005.07.25
Не могу создать внешний ключ FB 1.5