PDA

Показать полную графическую версию : Информация о железе


volod3000
06-06-2011, 23:45
Здравствуйте !

Есть ли какая либо возможность узнать , программным путем,
модель монитора (не через реестр, т.к. нет драйвера).

Перерыл почти весь инет , кроме как через реестр, ничего нет .

Вроде говорят можно как-то воспользоваться
DLL-ми программы AIDA64(бывший EVEREST).

Но вопрос -> какой DLL, какая функция, какие параметры этой функции...
Правда вытянуть названия функций можно, а вот параметры этой функции нет.
Может у кого есть HELP по функциям AIDA64 ?

Busla
07-06-2011, 09:14
volod3000, нет драйвера чего? видеокарты?
в скриптах не так давно обсуждалось определение монитора (http://forum.oszone.net/thread-204991.html)

volod3000
08-06-2011, 00:09
Вот , бродя по просторам инета , нашел интересное решение определение параметров монитора, посредством EDID data format :



type
TEDIDHeader = record
Padding : array[1..8] of Byte;
VendorID : Word; // bits 14 - 10 first letter (01h='A', 02h='B', etc.)
// bits 9 - 5 second letter
// bits 4 - 0 third letter
ProductID : Word;
SerialNo : DWord; // serial number or FFFFFFFFh
// for "MAG", subtract 7000000 to get actual serial number
// for "OQI", subtract 456150000
// for "PHL", subtract ???
// for "VSC", subtract 640000000
ManufactureWeek : Byte;
ManufactureYear : Byte; // manufacture year - 1990
EDIDversion : Byte;
EDIDrevision : Byte;
VideoInputType : Byte;
SizeHorizontal : Byte; // in cm
SizeVertical : Byte; // in cm
GammaFactor : Byte; // gamma factor (gamma = 1.0 + factor/100, so max = 3.55)
DPMSflags : Byte;
ChromaXYgreenred : Byte;
ChromaXYwhiteblue : Byte;
ChromaXred : Byte;
ChromaYred : Byte;
ChromaXgreen : Byte;
ChromaYgreen : Byte;
ChromaXblue : Byte;
ChromaYblue : Byte;
ChromaXwhite : Byte;
ChromaYwhite : Byte;
EstablishedTimings1 : Byte;
EstablishedTimings2 : Byte;
ManufacturersReservedTiming : Byte;
StandardTimingIdentification : array[1..8] Of Word;
DetailedTimingDescription1 : array[1..18] Of Byte;
DetailedTimingDescription2 : array[1..18] Of Byte;
DetailedTimingDescription3 : array[1..18] Of Byte;
DetailedTimingDescription4 : array[1..18] Of Byte;
Unused : Byte;
Checksum : Byte;
end;



procedure TForm1.Button1Click(Sender: TObject);
var
reg : TRegistry;
EDID : TEDIDHeader;
begin
reg := TRegistry.Create;
with reg do
begin
Rootkey:=HKEY_LOCAL_MACHINE; //Hauptschlüssel
if RegistryConnect('\\'+GetEnvironmentVariable('COMPUTERNAME')) = True then
begin
if OpenKeyReadOnly('SYSTEM\ControlSet002\Enum\DISPLAY\GSM5776\5&48c6b31&0&UID258\Device Parameters') then
begin
ReadBinaryData('EDID', EDID, SizeOf(EDID));
end;
end;
end;
reg.Free;

memo.Clear;
memo.Lines.Add(IntToStr(EDID.VendorID));
memo.Lines.Add(IntToStr(EDID.ProductID));
memo.Lines.Add(IntToStr(EDID.SerialNo));
end;



Все работает, но есть две проблемы :

- адрес Device Parameters может меняться (как это решить ?)

- как определить (какой добавить параметр в record) имя (модель) монитора ?




© OSzone.net 2001-2012