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

Вниз

Как узнать серийный номер винта???   Найти похожие ветки 

 
c0pyc@t   (2002-08-27 08:10) [0]

Как узнать серийный номер винта???


 
savva   (2002-08-27 09:37) [1]

винта как железки или логического диска?
если логического диска (раздела на винте) то
GetVolumeInformation или (если лень хелп читать) http://delphibase.endimus.com/?action=viewfunc&topic=harddisk&id=10139

если нужен серийник от производителя - открываешь корпус, снимаешь винчестер и ищешь наклейку с серийным номером :))


 
Мимоходом   (2002-08-27 10:58) [2]

На sources.ru лежал исходничек...


 
Ihor Osov'yak   (2002-08-28 01:20) [3]

2 savva -
> ищешь наклейку с серийным номером :))


есть более софтовый способ - поищи DiskId32.zip - я не помню, уже откуда утянул, там есть исходники ... Ес-но си, и есно с использованием драйверов, ибо работа идет напрямую с портами контролера HDD


 
France   (2002-08-28 10:29) [4]

Размести на форме TButton и TMemo.

procedure TForm1.Button1Click(Sender: TObject);
var
VolumeName,
FileSystemName : array [0..MAX_PATH-1] of Char;
VolumeSerialNo : DWord;
MaxComponentLength,
FileSystemFlags : Integer;
begin
GetVolumeInformation("C:\",VolumeName,MAX_PATH,@VolumeSerialNo,
MaxComponentLength,FileSystemFlags,
FileSystemName,MAX_PATH);
Memo1.Lines.Clear;
Memo1.Lines.Add("VName = "+VolumeName);
Memo1.Lines.Add("SerialNo = $"+IntToHex(VolumeSerialNo,8));
Memo1.Lines.Add("CompLen = "+IntToStr(MaxComponentLength));
Memo1.Lines.Add("Flags = $"+IntToHex(FileSystemFlags,4));
Memo1.Lines.Add("FSName = "+FileSystemName);
end;


 
#bug   (2002-08-28 11:45) [5]

последний пример для програмного просмотра серийноика логического
диска!!! То же можно узнать "DIR c:\".
Есть неплохая ну даже очень полезная прога EZ-S.M.A.R.T.


 
c0pyc@t   (2002-08-28 11:59) [6]


> France (28.08.02 10:29)

Спасибо за помощь, но на

GetVolumeInformation("C:\",VolumeName,MAX_PATH,@VolumeSerialNo,
MaxComponentLength,FileSystemFlags,
FileSystemName,MAX_PATH);
этом месте говорит что то var parametr must be indeteficcc


 
raiv   (2002-08-28 17:06) [7]

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение сведений о диске (метка/имя диска, файловая система, серийный номер)

Получение информации о любом диске.
Работает на FDD, HDD, CD, другие не пробовал.

Создайте модуль с именем HDDInfo и полностью скопируйте в него весь текст.

Зависимости: Все Windows (32S,95,NT)
Автор: cyborg, cyborg1979@newmail.ru, ICQ:114205759, Бузулук
Copyright: Собственное написание (Осипов Евгений Анатольевич)
Дата: 23 мая 2002 г.
***************************************************** }

unit HDDInfo;

interface
Uses Windows;

Const {Константы для TypeOfDisk функции GetDisks}
DiskUnknown=0; {Неизвестные диски}
DiskNone=1; {Отсутствующие диски}
DiskFDD=DRIVE_REMOVABLE; {Съёмные диски, дискеты}
DiskHDD=DRIVE_FIXED; {Не съёиные диски, жёсткие диски}
DiskNet=DRIVE_REMOTE; {Сетевые диски}
DiskCDROM=DRIVE_CDROM; {CD ROM}
DiskRAM=DRIVE_RAMDISK; {Диски в ОЗУ}

{Получить имена нужных дисков}
function GetDisks(TypeOfDisk : Word) : String;


{Функция получения информации о диске (HDD,FDD,CD) с буквой Disk}
{
Передаваемые значения:
Disk - Буква диска

Получаемые значения:
VolumeName - Метка/Имя тома
FileSystemName - Файловая система
VolumeSerialNo - Серийный номер диска (можно привязывать к диску программы)
MaxComponentLength - Максимальная длинна имени файла
FileSystemFlags - Флаги смотрите в справке Delphi по GetVolumeInformation

Функция возвращает true, если всё прошло успешно (диск нашёлся),
и false, если возникли проблемы, например диска нет в дисководе,
либо дисковода такого вообще нет
}
Function GetHDDInfo(Disk : Char;Var VolumeName, FileSystemName : String;
Var VolumeSerialNo, MaxComponentLength, FileSystemFlags:LongWord) : Boolean;

implementation

function GetDisks(TypeOfDisk : Word) : String;{Получить имена нужных дисков}
var
DriveArray : array[1..26] of Char;
I : integer;
begin
DriveArray:="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for I := 1 to 26 do
if GetDriveType(PChar(DriveArray[I]+":\")) = TypeOfDisk then Result := Result+DriveArray[I];
end;



Function GetHDDInfo(Disk : Char;Var VolumeName, FileSystemName : String;
Var VolumeSerialNo, MaxComponentLength, FileSystemFlags:LongWord) : Boolean;
Var
_VolumeName,_FileSystemName:array [0..MAX_PATH-1] of Char;
_VolumeSerialNo,_MaxComponentLength,_FileSystemFlags:LongWord;
Begin
if GetVolumeInformation(PChar(Disk+":\"),_VolumeName,MAX_PATH,@_VolumeSerialNo,
_MaxComponentLength,_FileSystemFlags,_FileSystemName,MAX_PATH) then
Begin
VolumeName:=_VolumeName;
VolumeSerialNo:=_VolumeSerialNo;
MaxComponentLength:=_MaxComponentLength;
FileSystemFlags:=_FileSystemFlags;
FileSystemName:=_FileSystemName;
Result:=True;
End else Result:=False;
End;
end.


Пример использования:
USES ..., ..., ..., HDDInfo; {Добавляем наш модуль}

{Нужно создать на форме компонент TLabel , Name которого ставим в Disks}
{И в событии главной формы OnActicate написать это:}

procedure TMyForm.FormActivate(Sender: TObject);
Var
S,SOut : String;
I : Integer;
VolumeName,FileSystemName : String;
VolumeSerialNo,MaxComponentLength,FileSystemFlags:LongWord;
begin
S:=GetDisks(DiskHDD); {Получаем список Жёстких дисков (Параметр DiskHDD)}
SOut:="";
For I:=1 to Length(S) do {Получаем информацию о всех дисках и пишем в TLabel на форме}
Begin
{Если диск существует/вставлен ...}
if GetHDDInfo(S[I], VolumeName, FileSystemName, VolumeSerialNo,
MaxComponentLength, FileSystemFlags) then {... тогда собираем информацию}
SOut:=SOut+
"Диск: "+S[I]+#13#10+
"Метка: "+VolumeName+#13#10+
"Файловая система: "+FileSystemName+#13+#10+
"Серийный номер: "+IntToHex(VolumeSerialNo,8)+#13+#10+
"Макс. длина имени файла: "+IntToStr(MaxComponentLength)+#13+#10+
"Flags: "+IntToHex(FileSystemFlags,4)+#13#10+#13#10;
End;
Disks.Caption:=SOut; {Выводим в компонент TLabel полученные данные о дисках}
end;


 
savva   (2002-08-29 11:18) [8]

интересно.. текст модуля данный raiv © (28.08.02 17:06) и ссылка
http://delphibase.endimus.com/?action=viewfunc&topic=harddisk&id=10139
данная мной (27.08.02 09:37) не являются одним и тем же? для чего делали базу? для того чтоб из нее тянуть примеры и публиковать в форуме (вместо того чтоб дать ссылку) ??

Ihor Osov"yak © (28.08.02 01:20)
исходник действительно интересный... но без поллитра не разберешься...


 
Venlota   (2002-09-06 17:26) [9]

Hi. Я вот тут тебе немного решил помочь. Насчет последнего ответа и поллитра. Я этот исходник воплотил в реальность если хочешь то качай!!!! Если нужна помощь обращайся.... :-)

www.ventolaaa.narod.ru


 
Ventola   (2002-09-06 17:30) [10]

Hi. Я вот тут тебе немного решил помочь. Насчет последнего ответа и поллитра. Я этот исходник воплотил в реальность если хочешь то качай!!!! Если нужна помощь обращайся.... :-)

http://www.ventolaaa.narod.ru/code.rar

Удачи...



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

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

Наверх





Память: 0.48 MB
Время: 0.007 c
3-21362
RomZm
2002-10-20 01:23
2002.11.07
База в InterBase


1-21663
GOD
2002-10-28 03:08
2002.11.07
Anti Tr


1-21522
AndreyAG
2002-10-29 10:47
2002.11.07
TTreeView


1-21615
3d
2002-10-26 15:29
2002.11.07
Реестр


1-21661
^Sanya
2002-10-27 21:22
2002.11.07
MDI: как узнать, создан ли ребёнок, или нет - без цикла перебора?





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