2009-07-05 6 views
4

Je veux être en mesure d'activer mon moniteur secondaire avec C# dans Windows Vista. Voici ce que je fais:Activer le moniteur secondaire par programme

SafeNativeMethods.EnumDisplayDevices(null, (uint)id, ref d, (uint)0); 
... 
SafeNativeMethods.EnumDisplaySettings(d.DeviceName, -2, ref mode0); 
... 
SafeNativeMethods.DEVMODE dm = mode0; 

dm.dmPosition.x = 1440; 
dm.dmFields = SafeNativeMethods.DM_POSITION; 
long result = SafeNativeMethods.ChangeDisplaySettingsEx(d.DeviceName, ref dm, IntPtr.Zero, SafeNativeMethods.CDS_NORESET| SafeNativeMethods.CDS_UPDATEREGISTRY, IntPtr.Zero); 
result = SafeNativeMethods.ChangeDisplaySettingsEx(null, ref dm, IntPtr.Zero, SafeNativeMethods.CDS_UPDATEREGISTRY, IntPtr.Zero); 

Cela ne touche pas mon moniteur secondaire, même si je reçois 0 à la suite (ce qui signifie Réussi).

Qu'ai-je fait de mal?

Merci.

Répondre

1

Je pense que vous devez définir plus que le champ Position, vous pourriez probablement obtenir les paramètres actuels de EnumDisplaySettings (au moins la taille et la couleur, peut-être aussi le taux de rafraîchissement)

0

Je ne l'ai pas essayé moi-même, mais il semble que les gens de this forum ont une idée. Le code n'est pas C#, mais c'est compréhensible.

Questions connexes