我正在尝试计算从服务应用程序连接到控制台的监视器(即屏幕)的数量。我执行以下操作:
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。
那么如何计算服务中的监视器呢?