Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auslesen der Mainboard Seriennummer (https://www.delphipraxis.net/135396-auslesen-der-mainboard-seriennummer.html)

Satty67 10. Jun 2009 09:44

Re: Auslesen der Mainboard Seriennummer
 
Ja, aber da müsste er wohl im Forum dort eingeloggt sein. Wenn man zum ersten mal sowas macht ist das schon nicht so 100% offensichtlich, wie man vorgeht.

jaenicke 10. Jun 2009 09:47

Re: Auslesen der Mainboard Seriennummer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nein, angezeigt wird der Anhang trotzdem, dass er vorhanden ist, und was es ist hatte ich ja geschrieben. Das mit dem Einloggen ist aber ein Argument, ich hänge es mal hier auch an.

kumar89 10. Jun 2009 09:49

Re: Auslesen der Mainboard Seriennummer
 
Zitat:

Zitat von Satty67
Da musst du die Typebibliothek "Micrososft WMI Scripting" importieren.

Delphi Menü -> Projekt -> Typebibliothek importieren

Danach hast Du in der Komponentenliste im Bereich ActiveX zusätzliche Komponenten. Glaube "SWbemLocator" reicht, das einfach auf's Formular ziehen.

Den Unterpunkt "Typebibliothek importieren" find ich nicht unter Projekt ....

Ich steh echt auf dem Schlauch gäbs keine andere Möglichkeit die Seriennummer auszulesen :-(

jaenicke 10. Jun 2009 09:50

Re: Auslesen der Mainboard Seriennummer
 
Zitat:

Zitat von kumar89
Den Unterpunkt "Typebibliothek importieren" find ich nicht unter Projekt ....

Das heißt in neueren Delphiversionen etwas anders (Komponente importieren... --> ActiveX) und in Turbo Delphi geht es gar nicht. Benutze einfach den Dateianhang. ;-)

// EDIT:
Ich weiß nicht, ob das in der Registry überhaupt erreichbar ist, hast du denn mal nach dem Wert gesucht?
Sinnvoller wäre sicher WMI, allerdings tragen viele Treiber die Seriennummer gar nicht erst ein oder die ist gar nicht gesetzt... Die Produktnummer ist oft nur zu sehen.

kumar89 10. Jun 2009 10:07

Re: Auslesen der Mainboard Seriennummer
 
[quote="jaenicke"]
Zitat:

Zitat von kumar89
Den Unterpunkt "Typebibliothek importieren" find ich nicht unter Projekt ....

Das heißt in neueren Delphiversionen etwas anders (Komponente importieren... --> ActiveX) und in Turbo Delphi geht es gar nicht. Benutze einfach den Dateianhang. ;-)

ok darunter sollte ich "SWbemLocator" mir runter ziehen blos wird bei mir die komponente nicht angezeigt under Active X oder ich hab des blos jetzt falsch verstanden :pale:

jaenicke 10. Jun 2009 10:08

Re: Auslesen der Mainboard Seriennummer
 
Nimm doch einfach den Anhang... Ich habe die Unit doch extra auch hier gepostet, damit du dich nicht drüben im DF anmelden musst...

Satty67 10. Jun 2009 10:15

Re: Auslesen der Mainboard Seriennummer
 
Zitat:

Zitat von kumar89
ok darunter sollte ich "SWbemLocator" mir runter ziehen blos wird bei mir die komponente nicht angezeigt under Active X oder ich hab des blos jetzt falsch verstanden

Also für die aktuelle Aufgabe kannst Du jaenickes gepostete Bibliothek nehmen. Falls Du grundsätzlich das selber importieren willst (weil man die erfahrung immer brauchen kann), suche in der Liste dort "Microsoft WMI Scripting 1.x".

Wenn Du den Eintrag gefunden hast, dann entweder Unit erstellen (das ist dann die gleiche, wie die von jaenicke) oder Komponente installieren. Dann gibt es eine Komponente im ActiveX Tab/Bereich.

Hab' hier nur D5, wie es bei BDS2007 auussieht weis ich noch nicht auswendig und das ist Zuhause installiert.

kumar89 10. Jun 2009 10:52

Re: Auslesen der Mainboard Seriennummer
 
Zitat:

Also für die aktuelle Aufgabe kannst Du jaenickes gepostete Bibliothek nehmen. Falls Du grundsätzlich das selber importieren willst (weil man die erfahrung immer brauchen kann), suche in der Liste dort "Microsoft WMI Scripting 1.x".
ich find Microsoft Scripting in einem Formular aber nicht in einem VCL-Formular. Ich brauch des nämlich in einem VCL-Formular.

jaenicke 10. Jun 2009 10:56

Re: Auslesen der Mainboard Seriennummer
 
Was hat das mit VCL-Formular oder nicht zu tun? Du benutzt die Unit und schreibst die in die uses und fertig. :roll:

kumar89 15. Jun 2009 14:10

Re: Auslesen der Mainboard Seriennummer
 
ok ich bin weiter gekommen

http://msdn.microsoft.com/en-us/library/aa394072.aspx


was muss ich raus nehmen (siehe link) um die seriennummer des mainboards zu bekommen.


Delphi-Quellcode:
function QueryWMI(const QueryClass, QueryProperty: String; AStrings: TStrings): Boolean;
  var
    Locator:    ISWbemLocator;
    Services:   ISWbemServices;
    ObjectSet:  ISWbemObjectSet;
    WMIObject:  ISWbemObject;
    WMIProperty: ISWbemProperty;
    Enum:       IEnumVariant;
    ObjValue:   Cardinal;
    TempObj:    OleVariant;
begin
  Result := FALSE;
  try
    Locator := CoSWbemLocator.Create;
    try
      Services := Locator.ConnectServer('', 'root\cimv2', '', '', '','', 0, NIL);
      if Assigned(Services) then begin
        Services.Security_.ImpersonationLevel := 3;
        ObjectSet := Services.ExecQuery('SELECT * FROM '+QueryClass,
                                        'WQL',
                                         wbemFlagForwardOnly or wbemFlagReturnWhenComplete,
                                         NIL);
        Enum := (ObjectSet._NewEnum) as IEnumVariant;
        while (Enum.Next(1, TempObj, ObjValue) = S_OK) do begin
          try
            WMIObject := IUnknown(TempObj) as ISWBemObject;
          except
            WMIObject := NIL;
          end;
          TempObj := Unassigned; // Interface in TempObj freigeben
          if Assigned(WMIObject) then begin
            WMIProperty := WMIObject.Properties_.Item(QueryProperty, 0);
            if (NOT VarIsNull(WMIProperty.Get_Value)) then
              AStrings.Add(Trim(WMIProperty.Get_Value));
          end;
        end;
        Result := TRUE;
      end;
    finally
      Services := NIL;
      Locator := NIL;
    end;
  except // Exceptions fangen (Wenn WMI nicht verfügbar/installiert ist, gibt´s eine!)
    Result := FALSE;
  end;
end;

procedure TfrmSystemInfo.Button1Click(Sender: TObject);
begin
     QueryWMI('Win32_VideoController','Caption',Systemauswertung.Lines);
end;

Mit freundlichen Grüßen


Kumar89


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:12 Uhr.
Seite 2 von 3     12 3      

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