Показать сообщение отдельно
  #2  
Старый 25.09.2013, 21:56
DigitalBrain DigitalBrain вне форума
Прохожий
 
Регистрация: 20.09.2013
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
Печаль

Эх..видно совсем хардкорная тема оказалась=\

Пока настругал только функцию для чтения температуры HDD:
Код:
Function GetHDDTemperarure(DriveIndex:byte;out Temperature:SmallInt):Boolean;
Type
 TSmartData = Array [0..$20F] of Byte;
Var
 Op: TSmartData;
 H: Cardinal;
 br: DWORD;
begin
 Result:=false;
 try
  H:= CreateFile(PChar('\\.\PhysicalDrive'+IntToStr(DriveIndex)),$C0000000,3,nil, 3,0,0);
  DeviceIoControl(H,$0007C088,@Ip,$20,@Op,$210,br,nil);
  CloseHandle(H);
  Temperature:=Op[$A8]*$FF+Op[$A7];
  if(Temperature>-50) And (Temperature<200) then
  begin
   Result:=true;
  end;
 except
 end;
end;

заставить WMI хоть что то показать не удалось на 4 разных машинах...в TermalZone есть пара значений, но ни одной температуре они не соответствуют..да и они всегда константные(
Нарыл программу http://openhardwaremonitor.org/ , которая судя по доках может экспортировать свои данные в WMI...пока не удалось ее вкурить...
Куча бесплатного подобного софта, и ни одного примера исходного кода, неужели они напрямую по портам к контроллеру обращаются Оо за 10 лет как минимум должен был появится не один велосипед-библиотека для доступа к датчикам материнки, но глухо...
Ответить с цитированием