Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как узнать производителя CD / DVD?

01.01.2007

Как это сделать через WMI я вроде разобрался.

Только не нравиться мне, что приходится перебирать в цикле все свойства

Win32_CDROMDrive. Может кто знает как сразу к конкретному свойству обратиться, т.е.

избавиться от строки "while PropEnum.Next(1, TempObj, Value) = S_OK do"

Вот рабочий пример для D7.

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, WbemScripting_TLB, OleServer, ActiveX, StdCtrls, ExtCtrls,
  ComCtrls;
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    SWbemLocator1: TSWbemLocator;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
 
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
  Service: ISWbemServices;
  ObjectSet: ISWbemObjectSet;
  SObject: ISWbemObject;
  PropSet: ISWbemPropertySet;
  SProp: ISWbemProperty;
  PropEnum, Enum: IEnumVariant;
  TempObj: OleVariant;
  Value: Cardinal;
  dr:string;
begin
  ListBox1.Clear;
  Service:= SWbemLocator1.ConnectServer('.', 'root\CIMV2', '', '', '','', 0, nil);
  SObject:= Service.Get('Win32_CDROMDrive', wbemFlagUseAmendedQualifiers, nil);
  ObjectSet:= SObject.Instances_(0, nil);
  Enum:= (ObjectSet._NewEnum) as IEnumVariant;
  dr:='';
  while (Enum.Next(1, TempObj, Value) = S_OK) do
  begin
    SObject:= IUnknown(TempObj) as SWBemObject;
    PropSet:= SObject.Properties_;
    PropEnum:= (PropSet._NewEnum) as IEnumVariant;
    while PropEnum.Next(1, TempObj, Value) = S_OK do
    begin
      SProp:= IUnknown(TempObj) as SWBemProperty;
      if SProp.Name='Drive' then dr:=SProp.Get_Value;
      if SProp.Name='Name' then ListBox1.AddItem(dr+'  '+SProp.Get_Value, nil);
    end;
  end;
end;
end.

Автор: eralex

Взято из https://forum.sources.ru