Ich bin ganz neu hier, und arbeite mich in die Lazarussprache ein.
Dazu hab ich mir die neuste Version (1.2.4) runtergeladen. Ich besitze Win Vista-32.
Zu meinem Problem.
Ich brauche die Hdd-Id oder die Motherboard-Id (jeweils die Seriennummer). Mit WMI hab ich das jetzt versucht, lauft bei mir aber extrem unstabil. Die Variabel "FWbemObject.DomainRole" besitzt immer den Wert <Error>.
Eingebunden habe ich:
Code: Alles auswählen
uses SysUtils, ActiveX, ComObj, Variants, Windows;
Mein Code:
Code: Alles auswählen
procedure GetWin32_ComputerSystemInfo;
const
WbemUser ='';
WbemPassword ='';
WbemComputer ='localhost';
wbemFlagForwardOnly = $00000020;
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObjectSet: OLEVariant;
FWbemObject : Variant;
oEnum : IEnumvariant;
sValue : string;
begin;
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_ComputerSystem','WQL',wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
while oEnum.Next(1, FWbemObject, nil) = 0 do
begin
case Integer(FWbemObject.DomainRole) of
0: Writeln('Standalone Computer');
//1: ....
//2: ....
end;
Writeln('');
FWbemObject:=Unassigned;
end;
end;
Kennt jemand dieses Problem? Versionsbedingt vielleicht?
Gibt es eventuell eine andere Möglichkeit die entsprechenden Id's zu ermitteln?
Danke für die Hilfe.
Freundliche Grüsse
exc-jdbi