Ну простейший вариант (если не использовать структуры) - 3 массива
Код:
var x, y: array of integer;
colors: array of Longint;
Заполнять соответственно координатами и цветами. x[0], y[0] - координаты первой точки, colors[0] - цвет первой точки. Ну и потом взять картинку и как-то так.
Код:
for i := 0 to pointsCount-1 do begin
c := ColorToRGB(bmp.Canvas.Pixels[x[i], y[i]]);
if abs(GetRValue(c) - GetRValue(colors[i]))< delta and
abs(GetGValue(c) - GetGValue(colors[i]))< delta and
abs(GetBValue(c) - GetBValue(colors[i]))< delta then
EmulateKey(h1, Ord('D'));
end;
Где delta - максимальная мера отличия по каждому цвету.