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

Вниз

WMI and ActiveKOL   Найти похожие ветки 

 
Dodfr   (2008-02-16 04:32) [0]

Hi,

I am trying to do WMI calls to retrieve CPU Temperature (ACPI may do it too but I don"t know how to do it).

So I used ActiveKOL and imported WbemScripting_TLB using TLB2KOL converter that created WbemScripting_TLBKOL I added into my uses clause and also Variants and ActiveX.

But it crashes at "Locator := CoSWbemLocator.Create;", ActiveKOL readme"s say I have to do declare a variable and do a New(xxx CreatePerented(Form)) derived from TOleCtl, but I don"t know how ?

Here is the code, thanx.

function GetWMIstring2 (wmiHost, wmiClass, wmiProperty : string):string;
var  // These are all needed for the WMI querying process
 Locator:  ISWbemLocator;
 Services: ISWbemServices;
 SObject:  ISWbemObject;
 ObjSet:   ISWbemObjectSet;
 SProp:    ISWbemProperty;
 Enum:     IEnumVariant;
 Value:    Cardinal;
 TempObj:  OleVariant;
 SN: string;
begin
 Locator := CoSWbemLocator.Create;
  Services :=  Locator.ConnectServer(wmiHost, "root\wmi", "", "", "","", 0, nil);
 ObjSet := Services.ExecQuery("SELECT * FROM "+wmiClass, "WQL",
   wbemFlagReturnImmediately and wbemFlagForwardOnly , nil);
 Enum :=  (ObjSet._NewEnum) as IEnumVariant;
 while (Enum.Next(1, TempObj, Value) = S_OK) do
 begin
   SObject := IUnknown(tempObj) as ISWBemObject;
   SProp := SObject.Properties_.Item(wmiProperty, 0);
   if VarIsNull(SProp.Get_Value) then
     result := ""
   else
   begin
     SN := SProp.Get_Value;
     result :=  SN;
   end;
 end;
 except
  on exception do
   result := "";
  end;
end;

procedure TForm1.PopupMenu1MenuAboutMenu(Sender: PMenu; Item: Integer);
begin
MessageOK(getWMIstring2("","MSAcpi_ThermalZoneTemperature","CurrentTemperature") );
end;


 
Jon ©   (2008-02-16 15:26) [1]

You forgort OleInit

program Forms;

uses
 KOL, WbemScripting_TLBKOL, ActiveX, Variants;

function GetWMIstring2 (wmiHost, wmiClass, wmiProperty : string):string;
var  // These are all needed for the WMI querying process
Locator:  ISWbemLocator;
Services: ISWbemServices;
SObject:  ISWbemObject;
ObjSet:   ISWbemObjectSet;
SProp:    ISWbemProperty;
Enum:     IEnumVariant;
Value:    Cardinal;
TempObj:  OleVariant;
SN: string;
begin
Locator := CoSWbemLocator.Create;
 Services :=  Locator.ConnectServer(wmiHost, "root\wmi", "", "", "","", 0, nil);
ObjSet := Services.ExecQuery("SELECT * FROM "+wmiClass, "WQL",
  wbemFlagReturnImmediately and wbemFlagForwardOnly , nil);
Enum :=  (ObjSet._NewEnum) as IEnumVariant;
while (Enum.Next(1, TempObj, Value) = S_OK) do
begin
  SObject := IUnknown(tempObj) as ISWBemObject;
  SProp := SObject.Properties_.Item(wmiProperty, 0);
  if VarIsNull(SProp.Get_Value) then
    result := ""
  else
  begin
    SN := SProp.Get_Value;
    result :=  SN;
  end;
end;
{ except
 on exception do
  result := "";
 end;
}
end;

procedure ButtonClick(Dummy: Pointer; Sender: PControl);
begin
 MsgOK(getWMIstring2("","MSAcpi_ThermalZoneTemperature","CurrentTemperature") );
end;

begin
 Applet := NewForm(nil,"Test").SetSize(200,200);
 with NewButton(Applet,"Temp")^ do
 begin
   CenterOnParent;
   OnClick := TOnEvent(MakeMethod(nil,@ButtonClick));
 end;
 OleInit;
 Run(Applet);
 OleUnInit;
end.


The above code works perfectly!


 
Dodfr   (2008-02-16 16:15) [2]

I"ll test it, thank you !



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

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

Наверх




Память: 0.45 MB
Время: 0.011 c
15-1239973429
12
2009-04-17 17:03
2009.06.21
Сколько в tMemo можно сунуть информации?


15-1234784192
Rule
2009-02-16 14:36
2009.06.21
Ура хвастаюсь, свершилось. Началось внедрение нашего ПО в Стрим.


6-1204147706
Nail
2008-02-28 00:28
2009.06.21
CommFort for free (:


4-1191555720
ter
2007-10-05 07:42
2009.06.21
WM_DEVICECHANGE или как определить безопасное извлечение флэшки


2-1241207260
бульдозер
2009-05-01 23:47
2009.06.21
CreateProcess определить готовность запускаемого приложения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский