Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi WMI Monitore auslesen - Array[0..15] auslesen aber wies (https://www.delphipraxis.net/200104-wmi-monitore-auslesen-array%5B0-15%5D-auslesen-aber-wies.html)

Piro 20. Mär 2019 15:14

WMI Monitore auslesen - Array[0..15] auslesen aber wies
 
Liste der Anhänge anzeigen (Anzahl: 2)
Moin zusammen,

ich lesen mit folgendem Code, die aktuell verbundenen Monitore eines Rechners aus WMI

Delphi-Quellcode:
var
 SWbemLocator1        : ISWbemLocator;
 aSrv                : ISWbemServices;
 vNVS                : OleVariant;
 aObjSet             : ISWbemObjectSet;
 aNVSDummy           : IDispatch;
 pEnum               : IEnumVARIANT;
 vOut                : OleVariant;
 dwRetrieved         : LongWord;
 hRes                : HResult;
 Value               : Variant;
begin
 SWbemLocator1 := CoSWbemLocator.Create;
 aSrv := SWbemLocator1.ConnectServer('localhost','root\WMI','','','','',0,vNVS);

 aObjSet := aSrv.ExecQuery('Select * from WMIMonitorId','WQL', 0, aNVSDummy);
 pEnum  := aObjSet.Get__NewEnum as IEnumVARIANT;
 while (TRUE) do
 begin
   hRes := pEnum.Next(1, vOut, dwRetrieved);
   if hRes <> S_OK then
     Break;
   
   Value := vOut.SerialNumberID;
   showMessage(Value[0]); // -> kommt eine 2stellige Zahl raus
   showMessage(Value[1]); // -> kommt eine 2stellige Zahl raus
   showMessage(Value[2]); // -> kommt eine 2stellige Zahl raus
 end;
Es muss eine SerialNumber meines Monitors herauskommen. Leider kommen nur die Zahlen. Hex nach String bringt leider auch nix.
Erwarteter Wert : 7MT018BR2PYU

Wie muss ich Value erzeugen, damit ich die SerialNumber bekommen.

Anbei die Werte aus WMI und das PowerShell Script, wo es funktioniert.

Ich hoffe einer von euch kennt sich da aus.

Vielen Dank im voraus.
Sven

Delphi.Narium 20. Mär 2019 15:45

AW: WMI Monitore auslesen - Array[0..15] auslesen aber wies
 
Was ergibt denn
Delphi-Quellcode:
ShowMessage(Value);
?

Eigentlich müsste SerialNumber eine Zeichenfolge sein, damit könnte man Value auch als String definieren.
Funktioniert nicht eventuell auch schon
Delphi-Quellcode:
showMessage(vOut.SerialNumberID);
?

Piro 21. Mär 2019 15:00

AW: WMI Monitore auslesen - Array[0..15] auslesen aber wies
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,

das hatte ich ganz vergessen, zu erwähnen, dass ging leider nicht. Da es ein Arry Variant ist, laut Fehlermeldung.

Siehe Screenshot.

Daher auch die Idee jedes Element einzeln anzusprechen aber die Inhalte der Elemente ergeben für mich leider keinen Sinn. Eventuell muss man noch etwas konvertieren.

vartype ergibt 8204.

Neutral General 21. Mär 2019 15:18

AW: WMI Monitore auslesen - Array[0..15] auslesen aber wies
 
Könntest du denn mal die Zahlen aus dem Array posten?

Edit: Die folgende Zeile müsste doch die Lösung sein:
Zitat:

$Mon_Serial_Number = ([System.Text.Encoding]::ASCII.GetString($Monitor.SerialNumberID)).Replac e("$([char]0x0000)","")
Die Zahlen im Array sind einfach die ASCII-Werte der entsprechenden Zeichen.

Piro 21. Mär 2019 15:32

AW: WMI Monitore auslesen - Array[0..15] auslesen aber wies
 
Kann ich gerne machen.
Bin aber erst nächste Woche Freitag wieder im Büro

Aber dann poste ich sie sofort.

Vielen Dank schon mal für die Unterstützung


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz