1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 Голоса(ов)

Получить серийный номер материнской платы (Delphi)

Вариант с использованием WMI. Осмысленность ее использования обсуждать не стану. Что по мне, то заморочек больше, чем толку.

Код Delphi:
  1. program GetWMI_MotherBoardInfo;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. ActiveX,
  7. Variants,
  8. SysUtils,
  9. WbemScripting_TLB in '..\..\..\Documents\RAD Studio\5.0\Imports\WbemScripting_TLB.pas';//
  10.  
  11.  
  12. Function GetMotherBoardSerial:string;
  13. var
  14. WMIServices : ISWbemServices;
  15. Root : ISWbemObjectSet;
  16. Item : Variant;
  17. begin
  18. WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
  19. Root := WMIServices.ExecQuery('Select SerialNumber From Win32_BaseBoard','WQL', 0, nil);
  20. Item := Root.ItemIndex(0);
  21. Result:=VarToStr(Item.SerialNumber);
  22. end;
  23.  
  24.  
  25. begin
  26. try
  27. CoInitialize(nil);
  28. Writeln('Serial MotherBoard '+GetMotherBoardSerial);
  29. Readln;
  30. CoUninitialize;
  31. except
  32. on E:Exception do
  33. Begin
  34. CoUninitialize;
  35. Writeln(E.Classname, ': ', E.Message);
  36. Readln;
  37. End;
  38. end;
  39. end.

И еще вариант с использованием OLEVariant, IBindCtx Interface и IMoniker Interface. Сам не пробовал, если честно.

Код Delphi:
  1. program GetWMI_MotherBoardSerial;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. SysUtils
  7. ,ActiveX
  8. ,ComObj
  9. ,Variants;
  10.  
  11.  
  12. function GetMotherBoardSerial:String;
  13. var
  14. objWMIService : OLEVariant;
  15. colItems : OLEVariant;
  16. colItem : OLEVariant;
  17. oEnum : IEnumvariant;
  18. iValue : LongWord;
  19.  
  20. function GetWMIObject(const objectName: String): IDispatch;
  21. var
  22. chEaten: Integer;
  23. BindCtx: IBindCtx;
  24. Moniker: IMoniker;
  25. begin
  26. OleCheck(CreateBindCtx(0, bindCtx));
  27. OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));
  28. OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
  29. end;
  30.  
  31. begin
  32. Result:='';
  33. objWMIService := GetWMIObject('winmgmts:\\localhost\root\cimv2');
  34. colItems := objWMIService.ExecQuery('SELECT SerialNumber FROM Win32_BaseBoard','WQL',0);
  35. oEnum := IUnknown(colItems._NewEnum) as IEnumVariant;
  36. if oEnum.Next(1, colItem, iValue) = 0 then
  37. Result:=VarToStr(colItem.SerialNumber);
  38. end;
  39.  
  40.  
  41. begin
  42. try
  43. CoInitialize(nil);
  44. try
  45. Writeln('Serial MotherBoard '+GetMotherBoardSerial);
  46. Readln;
  47. finally
  48. CoUninitialize;
  49. end;
  50. except
  51. on E:Exception do
  52. Begin
  53. Writeln(E.Classname, ': ', E.Message);
  54. Readln;
  55. End;
  56. end;
  57. end.

 

Оставьте свой комментарий

Оставить комментарий как гость

0
  • Комментариев нет