Ich schreibe eine Software in C#, die in der Lage sein muss, Monitore in Windows über Wiederverbindungen zu verfolgen. Es muss in der Lage sein, die Anzeigezahl der Monitore (z. B. Display1, Display2) bei der Wiederverbindung wiederzuentdecken, um sie in geänderte ISPlaySettingSex zu übergeben, was leider nur mit Anzeigezahlen funktioniert, indem sie EnumdisplayDevices verwendet haben. Mein erster Gedanke war, das Windows -Verwaltungsobjekt (bei: Root \ Wmi "," aus WmimonitorId) abzufragen und die Seriennummer der Monitore zu rufen, plus ein Stück Informationen, die in EnumdisplayDevices äquivalent sind. Suchen Sie dann EnumdisplayDevices mit dieser Schlüsselinformation, um die Anzeigezahlen zu finden, die den Seriennummern entsprechen. haben keine übereinstimmbaren Informationen gemeinsam. Ich habe Chatgpt über Daten befragt, die ich gemeinsam haben kann, die ich übereinstimmen kann, aber jeder Vorschlag ist fehlgeschlagen. Ich gehe davon aus, dass es eine Möglichkeit gibt, die beiden zu korrelieren, da die Windows -Anzeigeeinstellungen alle diese Informationen (Seriennummer, Anzeigeummer usw.) in seiner Benutzeroberfläche enthalten. Kurz gesagt, ich möchte eine dauerhafte Anzeige in meiner Software speichern, damit sie beim nächsten Anschluss eines Benutzers erkannt und geändert werden kann. Von den Daten in WindowsManagementObject (root \ wmi "ist" aus wmimonitorId) ebenfalls nicht statisch und ändert sich, mit Ausnahme der Seriennummer der Anzeige, die anscheinend die einzigen Information zu sein scheint, die ein einzigartiges angeschlossenes Display identifizieren können, auch wenn Sie mehrere identische Anzeigen haben. (Was mit der Seriennummer verbunden ist), mit dem Geräte -ID von EnumDisplayDevice, die Daten gemeinsam haben sollen, aber niemals zu sein.
Ich schreibe eine Software in C#, die in der Lage sein muss, Monitore in Windows über Wiederverbindungen zu verfolgen. Es muss in der Lage sein, die Anzeigezahl der Monitore (z. B. Display1, Display2) bei der Wiederverbindung wiederzuentdecken, um sie in geänderte ISPlaySettingSex zu übergeben, was leider nur mit Anzeigezahlen funktioniert, indem sie EnumdisplayDevices verwendet haben. Mein erster Gedanke war, das Windows -Verwaltungsobjekt (bei: Root \ Wmi "," aus WmimonitorId) abzufragen und die Seriennummer der Monitore zu rufen, plus ein Stück Informationen, die in EnumdisplayDevices äquivalent sind. Suchen Sie dann EnumdisplayDevices mit dieser Schlüsselinformation, um die Anzeigezahlen zu finden, die den Seriennummern entsprechen. haben keine übereinstimmbaren Informationen gemeinsam. Ich habe Chatgpt über Daten befragt, die ich gemeinsam haben kann, die ich übereinstimmen kann, aber jeder Vorschlag ist fehlgeschlagen. Ich gehe davon aus, dass es eine Möglichkeit gibt, die beiden zu korrelieren, da die Windows -Anzeigeeinstellungen alle diese Informationen (Seriennummer, Anzeigeummer usw.) in seiner Benutzeroberfläche enthalten. Kurz gesagt, [url=viewtopic.php?t=14917]ich möchte[/url] eine dauerhafte Anzeige in meiner Software speichern, damit sie beim nächsten Anschluss eines Benutzers erkannt und geändert werden kann. Von den Daten in WindowsManagementObject (root \ wmi "ist" aus wmimonitorId) ebenfalls nicht statisch und ändert sich, mit Ausnahme der Seriennummer der Anzeige, die anscheinend die einzigen Information zu sein scheint, die ein einzigartiges angeschlossenes Display identifizieren können, auch wenn Sie mehrere identische Anzeigen haben. (Was mit der Seriennummer verbunden ist), mit dem Geräte -ID von EnumDisplayDevice, die Daten gemeinsam haben sollen, aber niemals zu sein.[code]public class DisplayTracker { private static readonly Guid GUID_DEVCLASS_MONITOR = new Guid("4d36e96e-e325-11ce-bfc1-08002be10318");
[StructLayout(LayoutKind.Sequential)] private struct SP_DEVINFO_DATA { public int cbSize; public Guid ClassGuid; public uint DevInst; public IntPtr Reserved; }
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] private struct DISPLAY_DEVICE { public int cb; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string DeviceName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string DeviceString; public int StateFlags; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string DeviceID; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string DeviceKey; }
public static void PrintDisplayNumbersAndSerials() { var serials = GetMonitorSerialsFromWMI(); var displays = GetCurrentDisplays(); var connectedDevices = GetConnectedDeviceInstanceIDs();
foreach (var kvp in serials) { string instanceName = kvp.Key; string serial = kvp.Value;
public static Dictionary GetMonitorSerialsFromWMI() { var monitorSerials = new Dictionary();
try { ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM WmiMonitorID");
foreach (ManagementObject mo in searcher.Get()) { string instanceName = mo["InstanceName"] as string; string serial = GetStringFromUShortArray((ushort[])mo["SerialNumberID"]);
try { SP_DEVINFO_DATA deviceInfoData = new SP_DEVINFO_DATA(); deviceInfoData.cbSize = Marshal.SizeOf(deviceInfoData);
uint index = 0; while (SetupDiEnumDeviceInfo(deviceInfoSet, index, ref deviceInfoData)) { StringBuilder deviceInstanceId = new StringBuilder(256); int requiredSize;
if (SetupDiGetDeviceInstanceId(deviceInfoSet, ref deviceInfoData, deviceInstanceId, deviceInstanceId.Capacity, out requiredSize)) { deviceInstanceIDs.Add(deviceInstanceId.ToString()); }
Ich habe ein Problem. Ich entwickle ein Add-In (.dll) für Autodesk Vault. Das Add-In erstellt dynamisch Spalten und Zeilen und verwendet ein WPF-Fenster. Einige der Spalten enthalten Komboboxe mit...
Ich erstelle eine kleine WPF -Anwendung zur Praxis, in der ich Daten mit dem Entitäts -Framework -Kern in eine MySQL -Datenbank einfügen und die Ergebnisse in einem anderen Fenster anzeigen möchte....
Ich erstelle eine kleine WPF -Anwendung zur Praxis, in der ich Daten mit dem Entitäts -Framework -Kern in eine MySQL -Datenbank einfügen und die Ergebnisse in einem anderen Fenster anzeigen möchte....
Ich versuche, ein Skript zu erstellen, das jedes Minute mein aktives Fenster überwacht und die Zeit, die ich für jede Anwendung verbringe, protokolliert. Das Ziel ist:
Monitor which...
Wenn ich aus dem Intellij -Ideenfenster wechsle und zurückschalte, muss ich warten, bis der Projektordner erneut importiert wird. Wenn ich Insider eine Datei bin und an etwas arbeite, schließt dies...