Je tente de récupérer des informations sur tous les différents moniteurs (et leurs adaptateurs) présents sur un système. Jusqu'à présent, mes tentatives d'utiliser EnumDisplayDevices
pour lister tous les moniteurs a fonctionné très bien - il en a trouvé deux, le premier étant "\\.\DISPLAY1\Monitor0"
(le second est juste 2 et 1, respectivement, mais ce n'est pas pertinent pour cette question). Quoi qu'il en soit, j'ai alors tenté d'appeler le EnumDisplaySettingsEx
, en passant le nom du moniteur comme ci-dessus, mais il échoue toujours. Les appels avec un paramètre de nom nul aboutissent, mais la structure DEVMODE
renvoyée indique que le dmDeviceName
est "cdd", ce dont je doute fortement qu'il soit exact. Qu'est-ce que je fais mal?Difficultés avec p/invoke et EnumDisplaySettingsEx
Oh, et j'ai essayé d'utiliser EnumDisplaySettings
(le non-Ex) et cela ne fonctionne même pas avec le paramètre de nom nul.
P/Invoke (signatures légèrement modifiée de celle de Ex sur pinvoke.net dans une tentative pour l'obtenir flailing au travail):
[DllImport("user32.dll")]
public static extern bool EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE devMode);
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern bool EnumDisplaySettingsEx([MarshalAs(UnmanagedType.LPStr)]string lpszDeviceName, int iModeNum, ref DEVMODE lpDevMode, EdsDwFlags dwFlags);
DEVMODE
est défini à http://www.pinvoke.net/default.aspx/Structures/DEVMODE.html. EdsDwFlags
pour l'instant est toujours zéro. iModeNum
est -1 (pour les paramètres actuels).
Et pour une raison quelconque, StackOveflow ne me laissera pas attacher un tag C# à cet article.