Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать производителя CD/DVD 
:(
    Опции темы
eralex
Дата 1.1.2005, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 1.1.2005

Репутация: нет
Всего: нет



Допустим у меня есть несколько CD/DVD-ов, в том числе виртуальные.
Как узнать их производителя и номер модели, например, NEC 3500A.
Желательно НЕ ЧЕРЕЗ РЕЕСТР.
PM MAIL   Вверх
Alex
Дата 2.1.2005, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 6
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
eralex
Дата 3.1.2005, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 1.1.2005

Репутация: нет
Всего: нет



WMI работает только под Win2000 и XP.
А как под Win98?

Это сообщение отредактировал(а) eralex - 3.1.2005, 00:44
PM MAIL   Вверх
Akella
  Дата 4.1.2005, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



Будь ласка, пэрэвэдить код на Delphi
Код

using System;
using System.Management;
class EnumCD
{
const string QUERY = "SELECT * FROM Win32_CDROMDrive";
const string PROPERTY_NAME = "Name";
static void Main()
{
 ManagementObjectSearcher cdSearcher = new ManagementObjectSearcher(QUERY);
 foreach(ManagementObject cdRom in cdSearcher.Get())
  Console.WriteLine(cdRom[PROPERTY_NAME]);
}
}



Добавлено @ 12:02
А вот еще, перевести можно и после включить в нашу DRKB smile
http://msdn.microsoft.com/library/default....al_computer.asp

Это сообщение отредактировал(а) dsergey - 4.1.2005, 12:03
PM MAIL   Вверх
eralex
Дата 4.1.2005, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 1.1.2005

Репутация: нет
Всего: нет



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


Это сообщение отредактировал(а) Girder - 5.1.2005, 13:23
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.