Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Вопросы возникли по получению инфы с помощью WMI :)   Найти похожие ветки 

 
TankMan ©   (2004-11-30 14:15) [0]

Вот недавно (месяц назад) спрашивал как получить инфу о видеокарте, чипсете и тому подобную инфу - Посоветовали WMI использовать - Ну я вобщем-то почитал на счет WMI некоторую инфу, посмотрел примерчик(два,три,ну может четыре) Вроде почти все понял как да зачем и решил по экспериментировать, врезультате таких вот экспериментов возникло несколько вопросов.

Какой объект нужно указывать в параметре функции Service.Get(..,) чтобы получить список устройства с неполадками? Вот например Sysinfo32 в подкаталоге "компоненты" есть раздел "Устройства с неполадками" вот там отображаются также неустановленные устройства, вот я хочу получить их список из программы?

Хотелось бы еще узнать мнение правилен ли этот код?
procedure TForm1.Button1Click(Sender: TObject);
var
 Service:             ISWbemServices;
 ObjectSet:         ISWbemObjectSet;
 SObject:            ISWbemObject;
 PropSet:            ISWbemPropertySet;
 SProp:               ISWbemProperty;
 PropEnum, Enum:      IEnumVariant;
 TempObj:                   OleVariant;
 Value:                         Cardinal;
 StrValue:                    string;
 Res:HResult;
begin
 Service:= SWbemLocator1.ConnectServer(".", "root\CIMV2", "", "", "", "", 0, nil);
 SObject:= Service.Get("Win32_PnPEntity", wbemFlagUseAmendedQualifiers, nil);
 ObjectSet:= SObject.Instances_(0, nil);
//  SObject:= ObjectSet.Item("???",0);  <<Вот что сдесь указывать? например для "Win32_PnPEntity" ?
 Enum:= (ObjectSet._NewEnum) as IEnumVariant;
 Res:=Enum.Next(1, TempObj, Value);
 while  (Res=0) and (listbox2.items.Count<120) 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;
   StrValue:= "";
   ListBox1.Items.AddObject(SProp.Name, nil);
   ShowProp(SProp);
 end;
 Res:=Enum.Next(1, TempObj, Value);
 end; {while}
end;
procedure TForm1.ShowProp(SProp: SWBemProperty);
var s:string;
begin
 if (SProp.Get_Value <> null ) then
 begin
   with SProp do
   begin
   if sProp.name<>"" then
   s:=Get_Value;
   if Name="DeviceID" then
   ListBox2.Items.Add(sProp.name+" - "+s)
   else
   if Name="Description" then
   ListBox2.Items.Add(sProp.name+" - "+s)
   end; { with }
 end; { if }
end;

Почти такой код (почти без изменения касающихся вывода инфы) я взял из примера.


 
TankMan ©   (2004-11-30 14:30) [1]

<<< Поправочка не Sysinfo32 а Msinfo32.exe которая находится в %WINDIR%\System32\dllcache (в ВинХР точно)

Так же хотелось бы узнать:
Win32_OnBoardDevice - Почему ничего не выдает :(
Win32_PhysicalMedia - я так понимаю это жесткие, но вот почему Manufacturer не выдается?
Win32_DriverVXD - не выдает ничего :(
Win32_Fan,Win32_Refrigeration,Win32_HeatPipe - почему-то не выдает ничего :(
Win32_Printer - а где посмотреть, что чего значит?

А еще, самое главное - как читать массивы, значения типа boolean и т.д.? В примере если свойство с типом boolean пишется в ListBox1 а вот в процедуре ShowProp, значение этого свойства вывести не удается в listbox2 :( да и массивы тоже не получается :(

Еще вот вопрос, допустим я используя Win32_IRQResource получаю все IRQ, но как получить устройства, которые "подключены на" это прерывание? т.е. Опять же смотря на Msinfo32.exe открывая закладку "Ресурсы аппаратуры" и заходя в раздел "Прерывания (IRQ)" - выдается список прерываний и устройств работающих на этих прерываниях, так вот, как получить эти устройства?
Когда я запускаю WMI Object Browser и выбираю Win32_IRQResource мне выдается дерево объектов, но вот как это реализовано, чтобы найдя например IRQ 10, я мог узнать какие объкты "прикреплены" к нему?

Воооот.. :) скока впросов получилось, но всеже надеюсь что никто не сочтет это за чрезмерную лень, и поможет мне...


 
TankMan ©   (2004-12-01 07:26) [2]

Люди, ну поможите ж кто-нибудь?



Страницы: 1 вся ветка

Текущий архив: 2005.01.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
1-1105465566
Igor_thief
2005-01-11 20:46
2005.01.23
Как лучше?


3-1103448899
Михаил Т.
2004-12-19 12:34
2005.01.23
Помогите настроить сервер InterBase


1-1103842904
Homa_Programer
2004-12-24 02:01
2005.01.23
word((((


4-1101744745
vic_774N
2004-11-29 19:12
2005.01.23
странное поведение LoadLibrary ...


1-1105430239
Раптон
2005-01-11 10:57
2005.01.23
Как вывести поверх картинки TLabel?