![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить температуру процессора [Win2k, WinXP]
DelphiN! © (2004-12-22 13:49:00)Народ не поделитесь ф-иями получения температуры датчиков процессора.
Также буду благодарен за ф-ии получения температуры видеокарт GForceFX 5200 и хардов Seagate Barakuda 160GB
У меня есть код выдирания температуры датчиков процессора из программы MBM5 из Mapping файлов(это программа хранит информацию там)
Вот код, кому надо :
type
TBusType = (btISA, btSMBus, btVIA686ABus, btDirectIO);
TSMBType = (smtSMBIntel, smtSMBAMD, smtSMBALi, smtSMBNForce, smtSMBSIS);
TSensorType = (stUnknown, stTemperature, stVoltage, stFan, stMhz,
stPercentage);
TSharedIndex = record
iType: TSensorType; // type of sensor
Count: integer; // number of sensor for that type
end;
TSharedSensor = record
ssType: TSensorType; // type of sensor
ssName: array[0..11] of AnsiChar; // name of sensor
sspadding1: array[0..2] of Char; // padding of 3 byte
ssCurrent: Double; // current value
ssLow: Double; // lowest readout
ssHigh: Double; // highest readout
ssCount: LongInt; // total number of readout
sspadding2: array[0..3] of Char; // padding of 4 byte
ssTotal: Extended; // total amout of all readouts
sspadding3: array[0..5] of Char; // padding of 6 byte
ssAlarm1: Double; // temp & fan: high alarm; voltage: % off;
ssAlarm2: Double; // temp: low alarm
end;
TSharedInfo = record
siSMB_Base: Word; // SMBus base address
siSMB_Type: TBusType; // SMBus/Isa bus used to access chip
siSMB_Code: TSMBType; // SMBus sub type, Intel, AMD or ALi
siSMB_Addr: Byte; // Address of sensor chip on SMBus
siSMB_Name: array[0..40] of AnsiChar; // Nice name for SMBus
siISA_Base: Word; // ISA base address of sensor chip on ISA
siChipType: Integer; // Chip nr, connects with Chipinfo.ini
siVoltageSubType: Byte; // Subvoltage option selected
end;
TSharedData = record
sdVersion: Double; // version number (example: 51090)
sdIndex: array[0..9] of TSharedIndex; // Sensor index
sdSensor: array[0..99] of TSharedSensor; // sensor info
sdInfo: TSharedInfo; // misc. info
sdStart: array[0..40] of AnsiChar; // start time
sdCurrent: array[0..40] of AnsiChar; // current time
sdPath: array[0..255] of AnsiChar; // MBM path
end;
PSharedData = ^TSharedData;
var
SharedIndex: TSharedIndex;
SharedSensor: TSharedSensor;
SharedInfo: TSharedInfo;
SharedData: PSharedData;
var
myHandle, i, TotalCount: Integer;
S: string;
begin
result := false;
myHandle := OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$S$D$');
if myHandle = 0 then
Exit;
SharedData := MapViewOfFile(myHandle, FILE_MAP_READ, 0, 0, 0);
with SharedData^ do
begin
Label1.Caption := FloatToStr(sdVersion);
TotalCount := sdIndex[0].Count +
sdIndex[1].Count +
sdIndex[2].Count +
sdIndex[3].Count +
sdIndex[4].Count;
DataGrid.RowCount := TotalCount + 1;
for i := 0 to TotalCount - 1 do
begin
DataGrid.Cells[0, i + 1] := IntToStr(i);
with sdSensor[i] do
begin
case ssType of
stUnknown: S := 'unknown';
stTemperature: S := 'temperature';
stVoltage: S := 'voltage';
stFan: S := 'fanspeed';
stMhz: S := 'clockspeed';
stPercentage: S := 'percentage';
end;
DataGrid.Cells[1, i + 1] := S;
DataGrid.Cells[2, i + 1] := ssName;
DataGrid.Cells[3, i + 1] := Format('%.7g', [ssCurrent]);
DataGrid.Cells[4, i + 1] := Format('%.7g', [ssLow]);
DataGrid.Cells[5, i + 1] := Format('%.7g', [ssHigh]);
DataGrid.Cells[6, i + 1] := Format('%.7g', [ssAlarm1]);
DataGrid.Cells[7, i + 1] := Format('%.7g', [ssAlarm2]);
DataGrid.Cells[8, i + 1] := IntToStr(ssCount);
end;
end;
end;
Однако мне нужно получить температуры, без дополнительных программ
Заранее благодарен !
DelphiN! (2004-12-28 06:43:00) [21]Ну и всеже вопрос остается открытым, выскажите пожалуйста свои рекомендации ... Программа MBM5 как-то же определяет эту температуру(может даже и не точно, но все-же определяет ...)
DelphiN! (2004-12-24 10:46:00) [22]Вот нашел, http://www.delphikingdom.com/asp/viewitem.asp?UrlItem=/mastering/wmi.htm#054
Но на моем AMD Athlon неудается получить температуру, говорят, что данный прием работает только на Intel-овских процессорах.
А как получить информацию с датчиков на AMD Athlon ???
DelphiN! (2004-12-24 06:02:00) [23]
> [3] dimaxx © (23.12.04 22:07)
Подкинь ссылочку ... Я нашел структуру, которую можно получить о процессоре (в WMI), но температуры датчиков там не видел.
dimaxx (2004-12-23 22:07:00) [24]Через WMI можно получить доступ ко всем датчикам (вращения, тем-ры), прочитать идентификаторы устройств и т.п. Вот тока грамотного порта на Паскаль с примерами я так и не нашел.
DelphiN! (2004-12-23 06:59:00) [25]Вот что я нашел в MSDN, в разделе WMI про процессор : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_processor.asp
Но там температуры я не нашел ...
dimaxx (2004-12-22 23:30:00) [26]MSDN, раздел по WMI.