У тебя в коде некий _PixelGetColorEx, никто не знает что у тебя внутри него написано, поэтому никто не может ответить на твой вопрос. Может эта функция возвращает HEX и поэтому ты сравниваешь результат с HEX, может эта функция требует дополнительного открытия и закрытия различных DLL во время использования. PixelGetColor спокойно и без сбоев работает в цикле. То что сунул ты - вообще левая функция и неизвестно связана ли она хоть как-то с проверкой цвета кроме как похожим названием.