Р а з д е л ы
Новости
Гостевая
Форум
Чат
Учебники
Программы
Статьи по Delphi
Статьи по Html
Компьютерные статьи
Java скрипты
Приколы
Отправить SMS
Мои разработки
 
К о н т а к т ы

ICQ: 445511525
e-mail: ZORBI@bk.ru

c o p y r i g h t
p r o g r a m m i n g
d e s i g n e d
by ZORBI

Т р о и ц к   г

 
С с ы л к и


 
С ч е т ч и к и
Rambler's Top100
 
..:: Статьи ::..
Как узнать производителя CD/DVD

   Как это сделать через 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.
	             		

Источник: www.sources.ru  

Hosted by uCoz