안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.
기억도 가물거리는 옛날에 어딘가에서 긁어다놨던 소스입니다. 동작하는지 테스트도
했었던 거 같네요.
다음은 하드디스크의 여러 정보를 몽땅 다 알아내는 소스입니다.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char VolumeName[MAX_PATH+1], FileSystemName[MAX_PATH+1];
DWORD VolumeSerialNo, MaxComponentLength, FileSystemFlags;
GetVolumeInformation("C:\\", VolumeName, MAX_PATH, &VolumeSerialNo,
&MaxComponentLength, &FileSystemFlags,
FileSystemName, MAX_PATH);
Memo1->Lines->Add(AnsiString("VName= ") + VolumeName);
Memo1->Lines->Add(AnsiString("SerialNo= # ") + IntToHex(VolumeSerialNo, 8));
Memo1->Lines->Add(AnsiString("CompLen= ") + IntToStr(MaxComponentLength));
Memo1->Lines->Add(AnsiString("Flags= # ") + IntToHex(FileSystemFlags, 4));
Memo1->Lines->Add(AnsiString("FSName= ") + FileSystemName);
}
그리고.. 다음은 그냥 시리얼번호만 알아내는 부분입니다. 대부분의 분들은 이
GetVolumeInformation() 함수를 시리얼번호만 알아내기 위해 쓰더군요.
void __fastcall TForm1::Button2Click(TObject *Sender)
{
DWORD VolumeSerialNumber, MaximumComponentLength, FileSystemFlags;
GetVolumeInformation("C:\\", NULL, 0, &VolumeSerialNumber,
&MaximumComponentLength, &FileSystemFlags, NULL, 0);
AnsiString SerialNumber = IntToHex(HIWORD(VolumeSerialNumber), 4)
+ '-' + IntToHex(LOWORD(VolumeSerialNumber), 4);
Memo1->Lines->Add(SerialNumber);
}
그럼 참고하시길..
독립문에서 임펠리테리였습니다.
(cbuilder, cbuilder@thrunet.com)
|