Как нибудь так.
Var // глобальная переменная
CrsGetPixel: TCriticalSection;
function GetPixel(DC: HDC: X,Y: Integer): COLORREF;
begin
CrsGetPixel.Enter;
try
result:=Windows.GetPixel(DC, X, Y);
if result=CLR_INVALID
then RaiseLastOSError;
Finally
CrsGetPixel.Leave;
end;
end;
Не забудь инициализировать CrsGetPixel до первого вызова и убить в конце.