tags:

views:

200

answers:

4

Hello,

I'm trying to figure out a way to know if the user is using multiple monitors.

I would like to know how to do this in native C++ (using the Win32 API) and with managed code (using the .NET Framework).

Thanks in advance

+10  A: 

I can give you C# .NET:

if (Screen.AllScreens.Length > 1)
{
    // Multiple monitors
}

Edit: A search on Google turned up the following. It mentions 98/ME so it might no be relevant but may point you in the right direction:

There are new APIs for handling multiple monitors in Windows 98. The APIs used in the monitors class sample are GetMonitorInfo, MonitorFromWindow and MonitorFromRect.

The GetSystemMetrics API has some new constants (see below) that can be used to determine the metrics of a multiple monitor system. The GetSystemMetrics API returns information about the Windows environment. This API can be used to determine how many monitors are on the system, whether they are set at the same display format, and the size of the virtual desktop.

http://support.microsoft.com/kb/194578

Cory Charlton
Damn, beat me! haha
Nick Bedford
Lol ya that was close :-)
Cory Charlton
Thank you.Both answers were accurate.I was able to get the number of monitors using the GetSystemMetrics function passing as argument the SM_CMONITORS constant.
Raphael
Lol. Windows 98... :P
Nick Bedford
Come on people one more upvote and I get a badge ;-)
Cory Charlton
+7  A: 

In .NET it's as simple as using the Screen.AllScreens.Length property. Not too sure about C++ though.

Nick Bedford
+4  A: 

GetSystemMetrics with SM_CMONITORS and off you go...

Kornel Kisielewicz
Had a feeling it was `GetSystemMetrics`.
Nick Bedford
Using three monitors on a daily basis I needed to learn this fast ;>
Kornel Kisielewicz
A: 

Just to document here the C/C++ solution:

int iMonitors = GetSystemMetrics(SM_MONITORS); 
Raphael