1

サービス アプリケーションからコンソールに接続されているモニター (つまり、画面) の数をカウントしようとしています。私は次のことを行います:

int CountMonitors()
{
    int nCnt = 0;

    if(!EnumDisplayMonitors(NULL, NULL, _countMonitorEnumProc, (LPARAM)&nCnt))
    {
        //Error
        nCnt = -1;
    }

    return nCnt;
}

BOOL _countMonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
    int* pCnt = (int*)dwData;
    (*pCnt)++;

    return TRUE;
}

ただし、カウントは常に 1 です (デュアル モニターの Windows 7 でテストしている場合)。次に、これを行います (制限があるため、これは正確には必要なものではありません)。

int nCnt = GetSystemMetrics(SM_CMONITORS);

結果も1です。

では、サービスからモニターをカウントするにはどうすればよいでしょうか。

4

1 に答える 1