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