Nun möchte ich die Bildschirme aber auch sauber getrennt nach Bildschirm 1 und Bildschirm2 anzeigen lassen und da klemmt es momentan.
Außerdem möchte ich die Auflösung des Bildschirm ermitteln die er wirklich kann. Wenn ich die Auflösung beispielsweise auf 125% skaliere, dann sagt mir das Programm der Bildschirm hätte eine Auflösung von 1536 x 864. Stimmt natürlich nicht. Der Bildschirm kann eine Auflösung von 1920 x 1080 und nur das interessiert mich. Die Information, dass der Anwender skaliert hat wäre vielleicht nett zu wissen, aber so sehr als das ich da jetzt (schon) recherchiert habe interessiert mich das im Grunde nicht. Fürs Inventar spielt es keine Rolle was der Anwender eingestellt hat.
Außerdem muss ich feststellen, dass "monitorResolution" beim zweiten Bildschirm die gleiche Auflösung anzeigt wie beim ersten. Ich denke das liegt am "Screen.PrimaryScreen.Bounds.[...]". "screen.Bounds.ToString());" zeigt es richtig an, aber in einer Art und Weise, wie mir das nicht gefällt (Siehe Anhang)
Anbei erstmal der Code:
// Monitor(e) ermitteln
// https://mycsharp.de/forum/threads/111965/wmi-object-vom-typ-uint16-wie-in-string?page=1#forumpost-3758901
try
{
foreach (var screen in Screen.AllScreens)
{
ManagementObjectCollection mozReturn;
ManagementObjectSearcher mozSearch;
mozSearch = new ManagementObjectSearcher(@"root\wmi", "SELECT * FROM WmiMonitorID");
mozReturn = mozSearch.Get();
foreach (ManagementObject moz in mozReturn)
{
string monitorname = "";
string seriennummer = "";
dynamic dynName;
dynamic dynSerial;
dynName = moz["UserFriendlyName"];
dynSerial = moz["SerialNumberID"];
for (int i = 0; i < 10; i++)
{
monitorname += Char.ConvertFromUtf32(dynName[i]);
seriennummer += Char.ConvertFromUtf32(dynSerial[i]);
}
monitorModel += monitorname + " | ";
monitorSerial += seriennummer + " | ";
}
var screenWidth = Screen.PrimaryScreen.Bounds.Width.ToString();
var screenHeight = Screen.PrimaryScreen.Bounds.Height.ToString();
monitorResolution += screenWidth + " x " + screenHeight + " | ";
// For each screen, add the screen properties to a list box.
listBox1.Items.Add("Device Name: " + screen.DeviceName);
listBox1.Items.Add("Bounds: " + screen.Bounds.ToString());
listBox1.Items.Add("Type: " + screen.GetType().ToString());
listBox1.Items.Add("Working Area: " + screen.WorkingArea.ToString());
listBox1.Items.Add("Primary Screen: " + screen.Primary.ToString());
}
}
catch (Exception)
{
MessageBox.Show("Problem im Abschnitt Monitore.");
}
Freue mich, wenn ihr mir auch da weiterhelfen könnt.