Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Вопросы возникли по получению инфы с помощью 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.067 c
1-1105354473
Федюлин Григорий
2005-01-10 13:54
2005.01.23
Поглащение ошибок


14-1104493741
Кудесник
2004-12-31 14:49
2005.01.23
Вот почему "С лёгким паром" показывают каждый год...


1-1104917330
pika
2005-01-05 12:28
2005.01.23
Масштабирование изображений !!!


4-1102162206
caha
2004-12-04 15:10
2005.01.23
CD-ROM


4-1101807461
mariya
2004-11-30 12:37
2005.01.23
как свернуть все окна кроме определенного





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский