Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)

Модерирует : gyra, Maz

Widok (25-09-2007 17:33): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Victor_Dobrov



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

[Setup]
AppName=GetDeviceInfo
AppVerName=GetDeviceInfo
CreateAppDir=false
 
[Code]
type
    TWaveOutCaps = record vPid, vDriverVersion: DWord; sName: array[0..31] of Char; Formats: DWord; Channels: Word; Support: DWord; end; PDisplay_Device = record cb: DWord; DeviceName: array[0..31] of Char; DeviceString: array[0..127] of Char; StateFlags: DWord; DeviceID, DeviceKey: array[0..127] of Char; end;
Const
    oneMB= 1024*1024; DISPLAY_DEVICE_PRIMARY_DEVICE = 4;
var
    Report: String; n, errCode: Integer; lpCaps: TWaveOutCaps; lpDisplayDevice: PDisplay_Device; DeviceValue: Cardinal; VideoName, SoundName, MixerName, DeviceKey: String; Keys: TArrayOfString;
 
function EnumDisplayDevices(lpDevice, iDevNum: DWord; var lpDisplayDevice: PDisplay_Device; dwFlags: DWord):Boolean; external 'EnumDisplayDevicesA@user32.dll stdcall';
function waveOutGetDevCaps(uDeviceID: LongInt; var lpCaps: TWaveOutCaps; uSize: LongInt): LongInt; external 'waveOutGetDevCapsA@winmm.dll stdcall';
function waveOutGetNumDevs: Integer; external 'waveOutGetNumDevs@winmm.dll stdcall';
function mixerGetDevCaps(uDeviceID: LongInt; var lpCaps: TWaveOutCaps; uSize: LongInt): LongInt; external 'mixerGetDevCapsA@winmm.dll stdcall';
function mixerGetNumDevs: Integer; external 'mixerGetNumDevs@winmm.dll stdcall';
 
Function InitializeSetup: Boolean;
Begin
{video}
    lpDisplayDevice.cb:= SizeOf(lpDisplayDevice);
    n:= 0; while not (EnumDisplayDevices(0, n, lpDisplayDevice, 0) and (lpDisplayDevice.StateFlags and DISPLAY_DEVICE_PRIMARY_DEVICE > 0)) and (n < 127) do n:= n +1
    for n:= 0 to 127 do
        DeviceKey:= DeviceKey + lpDisplayDevice.DeviceKey[n]; Delete(DeviceKey, Pos(Chr(0), DeviceKey), 127);    { ключ драйвера получаем из API }
        StringChange(DeviceKey,'\Registry\Machine\',''); errCode:= 1; DeviceValue:= 0;        { объём видеопамяти }
        RegQueryBinaryValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', VideoName)    { проверку 9х или NT не делаю }
        for n:= 1 to Length(VideoName) do
        begin
            DeviceValue:= DeviceValue + Ord(VideoName[n]) *errCode; errCode:= errCode * $100; end;
            VideoName:= ''; for n:= 0 to 127 do VideoName:= VideoName + lpDisplayDevice.DeviceString[n]; Delete(VideoName, Pos(Chr(0), VideoName), 127);
            if VideoName <> '' then
                if DeviceValue > 0 then VideoName:= VideoName +', '+ IntToStr(DeviceValue/oneMB) + 'Mb' else VideoName:= VideoName +' (стандартный драйвер)'
            else VideoName:= 'Ошибка драйвера или оборудования'
{sound}
    for errCode:= 0 to waveOutGetNumDevs do begin
        waveOutGetDevCaps(errCode-1, lpCaps, SizeOf(lpCaps)); SoundName:=''
        for n:= 0 to 31 do SoundName:= SoundName + lpCaps.sName[n]; Delete(SoundName, Pos(Chr(0), SoundName), 31);
        SetArrayLength(Keys, errCode+1);  if errCode+1 > 0 then Keys[errCode]:= SoundName
    end;
SoundName:= #9
    if errCode > 0 then
        for n:= 0 to GetArrayLength(Keys) -1 do
        SoundName:= SoundName + Keys[n] + #13#10#9
    else SoundName:= #9 'Звуковые устройства не обнаружены'
 
{mixer}
    for errCode:= 0 to mixerGetNumDevs do begin
        mixerGetDevCaps(errCode-1, lpCaps, SizeOf(lpCaps)); MixerName:=''
        for n:= 0 to 31 do MixerName:= MixerName + lpCaps.sName[n]; Delete(MixerName, Pos(Chr(0), MixerName), 31);
        SetArrayLength(Keys, errCode);  if errCode > 0 then Keys[errCode-1]:= MixerName
    end;
MixerName:= #9
    if errCode > 0 then
        for n:= 0 to GetArrayLength(Keys) -1 do
        MixerName:= MixerName + Keys[n] + #13#10#9
    else MixerName:= #9 'Звуковые устройства не обнаружены'
 
    Report:= 'Video: '#9 + VideoName + #13#10 'Key: '#9 + DeviceKey + #13#10#13 'SoundCards: '#13#10 + SoundName + #13#10 'MixerDev: '#13#10 + MixerName
MsgBox(Report, mbInformation, mb_Ok)
    SaveStringToFile('Report.txt', Report, True);
End;

Всего записей: 742 | Зарегистр. 27-09-2005 | Отправлено: 12:44 01-09-2007 | Исправлено: Victor_Dobrov, 14:51 01-09-2007
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)
Widok (25-09-2007 17:33): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru