Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Утилита для определения настроек дисплеев системы


Автор: outfoxer 3.6.2010, 14:45
Последний раз писал что-то под Win еще студентом на лабах, но тут возникла задача для проекта http://www.forismatic.com:

Необходимо написать утилиту, которая будет вызываться из командной строки, она должна возвращать информацию о настройке мониторов в системе, например в XML формате: сколько мониторов, какой является главным, какое у каждого из них разрешение и какое у них взаимное расположение.

Подскажите пожалуйста с чего начать, где копать, может кто-то поможет исходником ;)

Автор: S11 3.6.2010, 15:00
Смотри следующие функции и их параметры( структуры DISPLAY_DEVICE,  DEVMODE)

Приведу их названия:

1) EnumDisplayDevices(...)
2) EnumDisplaySettingsEx(...)

В принципе этого достаточно. Если надо больше смотри близкие к этим функции в MSDN.

Приведу ещё небольшой пример:

Код

#include <windows.h>

BOOL GetDisplaySettings(int id, int &posX, int &posY, int &width, int &height, int &bpp, int &Hz)
{
   DISPLAY_DEVICE dDev;
   DEVMODE dm;

    memset(&dDev, 0, sizeof(dDev));
    memset(&dm, 0, sizeof(dm));

    dDev.cb = sizeof(dDev);
    dm.dmSize = sizeof(dm);

    if(!EnumDisplayDevices(NULL, id, &dDev, 0)) return FALSE;

    BOOL flag = EnumDisplaySettingsEx(dDev.DeviceName, ENUM_CURRENT_SETTINGS, &dm, 0);
    if(flag == FALSE) return FALSE;

    posX = dm.dmPosition.x;
    posY = dm.dmPosition.y;
    width = dm.dmPelsWidth;
    height = dm.dmPelsHeight;
    bpp = dm.dmBitsPerPel;
    Hz = dm.dmDisplayFrequency;
    return flag;
}


Мониторы винда нумерует с 0 и.т.д. Есть правда виртуальные экраны но это можно проверить.
Читай ещё:
http://msdn.microsoft.com/en-us/library/dd162611(v=VS.85).aspx

Автор: outfoxer 3.6.2010, 15:08
А где можно посмотреть что-то для еще более начинающих? smile по исходнику идея немного ясна, но все равно много вопросов, может есть какие-то туториалы для начинающих или кто-то поможет написать такую утилитку? smile Все посетители форизматика будут очень благодарны + поставим ссылочку на вас smile

Автор: S11 3.6.2010, 16:51
Я немного отредактировал своё предыдущее сообщение. Недеюсь стало понятней.
Или вы хотите чтобы вам полностью программу написали? Так это скорей на фриланс.  smile 

Автор: xvr 3.6.2010, 19:20
Цитата(S11 @  3.6.2010,  16:51 Найти цитируемый пост)
Или вы хотите чтобы вам полностью программу написали? Так это скорей на фриланс.
Или в Центр помощи.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)