P / Invoke GetDeviceCaps с COLORRES для значения nIndex.
Редактировать 1
Это дает вам глубину цвета, но не фактический «цвет» по сравнению с «монохромным». Этот на самом деле нигде не предоставляется, потому что на самом деле это не важно на этом уровне.
Как правило, вы можете посмотреть на глубину цвета и сказать, что, если он 8-битный или менее, он, скорее всего, будет в оттенках серого. Большим скорее всего будет цвет.
Конечно, производитель мог бы использовать 16-битный драйвер на монохромном дисплее. Нет никаких причин, по которым вы не можете это сделать, это просто неэффективно, так как монохромное оборудование не имеет никаких проводов или приспособлений для дополнительных бит, поэтому их просто бросают на пол.
Если вам действительно нужно знать, является ли он цветным или монохромным, единственный надежный способ узнать это на самом деле спросить пользователя через настройку.