Q&A

  • 디스크 드라이브의 볼륨명 알기
제목되로 하드나 풀로피나 씨디롬의 볼륨명을 알고 싶습니다.



그럼 많은 조언 부탁드립니다.

1  COMMENTS
  • Profile
    김영대 1999.11.16 03:20
    한 wrote:

    > 제목되로 하드나 풀로피나 씨디롬의 볼륨명을 알고 싶습니다.

    > 그럼 많은 조언 부탁드립니다.



    // 아래에서 GetVolumeInfo 를 보세요



    unit GetInfo;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Registry;



    type

    SystemInfoRecord = record

    VolumeName, // 디스크 볼륨명

    VolumeSerial, // 디스크 시리얼번호

    FileSystemName, // 파일구조

    Drives : shortstring;// 디스크명들

    ProcessorType : shortstring;// CPU 타입(MMX나 P-II는 안됨)

    Version, // 윈도우 버전

    Plattform : shortstring;// 윈도우 종류

    PlattId : DWORD; // 현 플랫폼 ID

    ComputerName, // 컴퓨터 이름

    FPU, // FPU 유무

    UserName, // 사용자 이름

    CompanyName, // 회사이름

    CDSerial : shortstring;// 윈도우 시디 시리얼번호

    TotalPhys, // 총 메모리

    AvailPhys, // 이용할 수 있는 메모리

    TotalVirtual, // 총 가상메모리

    AvailVirtual, // 이용할 수 있는 가상메모리

    MemoryLoad : DWORD; // 메모리 적재율

    BiosDate, // 마더보더의 바이오스 날짜

    BiosName, // 마더보더의 바이오스 이름

    BiosVer, // 마더보더의 바이오스 버전

    BusType, // 버스타입

    CPU, // 바이오스에 나타난 CPU종류

    MachineType : shortstring;// 바이오스에 나타난 컴종류

    end;



    var

    SysInfoRec: SystemInfoRecord;



    function GetAllSystemInfo: SystemInfoRecord; stdcall;



    implementation



    var

    OSVerInfo: TOSVersionInfo;



    function GetRegStr(Key, St: string): string;

    begin

    with TRegistry.Create do

    try

    RootKey := HKEY_LOCAL_MACHINE;

    if OpenKey(Key, False) then result := ReadString(St);

    finally

    Free;

    end;

    end;



    procedure GetComputerName;

    var

    Computer : PChar;

    CSize : DWORD;

    begin

    CSize := MAX_COMPUTERNAME_LENGTH + 1;

    try

    GetMem( Computer, CSize );

    if Windows.GetComputerName( Computer, CSize ) then

    SysInfoRec.ComputerName := Computer;

    finally

    FreeMem( Computer );

    end;

    end;



    procedure GetVolumeInfo;

    var

    lpRootPathName : PChar;

    lpVolumeNameBuffer : PChar;

    nVolumeNameSize : DWORD;

    lpVolumeSerialNumber : DWORD;

    lpMaximumComponentLength : DWORD;

    lpFileSystemFlags : DWORD;

    lpFileSystemNameBuffer : PChar;

    nFileSystemNameSize : DWORD;

    begin

    try

    GetMem( lpVolumeNameBuffer, MAX_PATH + 1 );

    GetMem( lpFileSystemNameBuffer, MAX_PATH + 1 );



    nVolumeNameSize := MAX_PATH + 1;

    nFileSystemNameSize := MAX_PATH + 1;



    lpRootPathName := PChar( 'C:' );

    if Windows.GetVolumeInformation( lpRootPathName,

    lpVolumeNameBuffer,

    nVolumeNameSize,

    @lpVolumeSerialNumber,

    lpMaximumComponentLength,

    lpFileSystemFlags,

    lpFileSystemNameBuffer,

    nFileSystemNameSize ) then

    begin

    with SysInfoRec do begin

    VolumeName := lpVolumeNameBuffer;

    VolumeSerial := IntToHex(HiWord(lpVolumeSerialNumber), 4) + '-' +

    IntToHex(LoWord(lpVolumeSerialNumber), 4);

    FileSystemName := lpFileSystemNameBuffer;

    end;

    end;

    finally

    FreeMem( lpVolumeNameBuffer );

    FreeMem( lpFileSystemNameBuffer );

    end;

    end;



    procedure GetOSVersionInfo;



    function Plat(Pl: DWORD): string;

    begin

    case Pl of

    VER_PLATFORM_WIN32s: result := 'Windows 3.1';

    VER_PLATFORM_WIN32_WINDOWS: result := 'Windows 95';

    VER_PLATFORM_WIN32_NT: result := 'Windows NT';

    else result := '???';

    end;

    end;



    begin



    with OSVerInfo, SysInfoRec do begin

    dwOSVersionInfoSize := SizeOf(OSVerInfo);

    if GetVersionEx(OSVerInfo) then;

    Version := Format('%d.%d (%d.%s)',[dwMajorVersion, dwMinorVersion,

    (dwBuildNumber and $FFFF), szCSDVersion]);

    Plattform := Plat(dwPlatformId);

    PlattID := dwPlatformId;

    end;

    end;



    procedure GetDriveNames;

    var

    D1 : set of 0..25;

    D2 : integer;

    begin

    DWORD( D1 ) := Windows.GetLogicalDrives;

    with SysInfoRec do begin

    Drives := '';

    for D2 := 0 to 25 do

    if D2 in D1 then

    Drives := Drives + Chr( D2 + Ord( 'A' )) + ': ';

    end;

    end;



    procedure GetSystemInfo;

    var TmpStr: string;

    MProc: string;

    LocalSI: TSystemInfo;

    const

    PROCESSOR_INTEL_386 = 386;

    PROCESSOR_INTEL_486 = 486;

    PROCESSOR_INTEL_PENTIUM = 586;

    PROCESSOR_MIPS_R4000 = 4000;

    PROCESSOR_ALPHA_21064 = 21064;

    begin

    Windows.GetSystemInfo(LocalSI);



    with LocalSI, SysInfoRec do begin

    case dwProcessorType of

    PROCESSOR_INTEL_386 : ProcessorType := ' 386';

    PROCESSOR_INTEL_486 : ProcessorType := ' 486';

    PROCESSOR_INTEL_PENTIUM : ProcessorType := ' Pentium';

    PROCESSOR_MIPS_R4000 : ProcessorType := ' MIPS';

    PROCESSOR_ALPHA_21064 : ProcessorType := ' ALPHA';

    end;

    end;

    end;



    procedure MemoryInfo;

    var

    MemStatus: TMemoryStatus;

    begin

    MemStatus.dwLength := SizeOf(MemStatus);

    GlobalMemoryStatus(MemStatus);

    with SysInfoRec do begin

    TotalPhys := MemStatus.dwTotalPhys DIV 1024;

    AvailPhys := MemStatus.dwAvailPhys DIV 1024;

    TotalVirtual := MemStatus.dwTotalVirtual DIV 1024;

    AvailVirtual := MemStatus.dwAvailVirtual DIV 1024;

    MemoryLoad := MemStatus.dwMemoryLoad;

    end;

    end;



    procedure GetRegisterInfo;

    const

    FPPKey = 'hardwareDESCRIPTIONSystemFloatingPointProcessor';

    var

    CurVerKey : PChar;

    begin

    with SysInfoRec do begin

    case PlattID of

    VER_PLATFORM_WIN32_WINDOWS :

    CurVerKey := 'SOFTWAREMicrosoftWindowsCurrentVersion';

    VER_PLATFORM_WIN32_NT :

    CurVerKey := 'SOFTWAREMicrosoftWindows NTCurrentVersion';

    else CurVerKey := nil;

    end;



    with TRegistry.Create do

    try

    RootKey := HKEY_LOCAL_MACHINE;

    if OpenKey(FPPKey, False) then

    FPU := 'Yes'

    else FPU := 'No';

    finally

    Free;

    end;



    UserName := GetRegStr(CurVerKey,'RegisteredOwner');

    CompanyName := GetRegStr(CurVerKey,'RegisteredOrganization');

    if PlattID = VER_PLATFORM_WIN32_WINDOWS then

    CDSerial := GetRegStr(CurVerKey,'ProductID');



    end;

    end;



    procedure GetBiosInfo;

    begin

    with SysInfoRec do begin

    BiosDate := GetRegStr('EnumRoot*PNP0C01
    • 김고진
      1999.11.16 18:25
      클라라 wrote: > 파라독스 DB를 쓰구요. > with DataModule1.com_query do > begin >...
    • 김영대
      1999.11.16 20:33
      아래 소스를 참고해 보세요 그리고 MessageBox() 로 자료의 끝임을 알릴때 여러번 박스가 나타나므로 아...
    • 김정하
    • 1999.11.16 06:25
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이주흥
      1999.11.16 20:52
      김정하 wrote: > SaveDialog에서 파일 선택후 파일을 생성하려고 합니다. > 새로 생성하려는 파일명을 입...
    • 김정하
      1999.11.16 21:56
      답변감사합니다. 그런데, 문제점은......... SaveDialog1.Options := [ofOverwritePormpt]를 사용해 ...
    • 이주흥
      1999.11.16 22:27
      김정하 wrote: > 답변감사합니다. > 그런데, 문제점은......... > SaveDialog1.Options := [ofOverwr...
    • 김선학
    • 1999.11.16 05:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오정운
      1999.11.16 08:47
      김선학 wrote: > 안녕하세요. > 매번 질문만 하게 되네요. > > with datamodule do > begin ...
    • eclipse
    • 1999.11.16 04:31
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 류한규
    • 1999.11.16 03:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.11.16 03:18
      류한규 wrote: > 안녕하십니까? > 프린터의 Spooler를 제어하는 방법을 아시는 분의 > 조언을 부탁드립...
    • 1999.11.16 02:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.11.16 03:20
      한 wrote: > 제목되로 하드나 풀로피나 씨디롬의 볼륨명을 알고 싶습니다. > 그럼 많은 조언 부탁드립니...
    • 김고진
      1999.11.16 02:31
      버겁이 wrote: > EDIT에 입력한 값을 SQL SERVER 7.0의 Money Type의 필드에 저장할때 소숫점 이하의 > ...
    • 안재현
      1999.11.16 21:48
      김고진 wrote: > 버겁이 wrote: > > EDIT에 입력한 값을 SQL SERVER 7.0의 Money Type의 필드에 저장할때...
    • 김영대
      1999.11.16 03:25
      서언미 wrote: > 안녕하세요. 여러분. > 간만이입니다. > > QuickReport에 데이타 set을 연결하지 않...
    • 안경혜
    • 1999.11.16 01:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김지희
      1999.11.16 18:51
      Running Total을 말씀을 하시는군요.... 새로운 Running Total을 추가하시구요.... [Summary]에서 원하...
    • 최수영
      2000.02.02 18:20
      저한테 레포트를 보내주시면 수정해서 보내드리겠습니다! 그것은 whileprintingrecord라는 것을 포물러...
    • 강미나
    • 1999.11.16 00:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 류성호
      1999.11.16 02:48
      저는 델파이 4.0과 델파이 5.0을 같이 설치해서 사용하고 있습니다. 같이 사용해도 문제가 되지 않더라 구...
    • TeamX
      1999.11.16 01:54
      글쎄요.... 실행파일의 크기가 그렇게 변하는걸 보니........ 아무래도 프로젝트옵션의 문제인것 같은데...
    • 안장식
      1999.11.16 02:04
      답변 감사합니다. 런타임패키지에는 확실히 체크가 되어있지 않거든요? 델파이를 새로 설치해야하는지 고...
    • 김선학
    • 1999.11.15 23:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최수영
      1999.11.16 18:57
      김선학 wrote: > 안녕하세요. > 매번 질문만 하게 되네요. > > with datamodule do > begi...
    • 노유승
    • 1999.11.15 22:57
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 노유승
      1999.11.16 19:40
      노유승 wrote: > Quick report Version 을 3.0에서 3.05로 업을 했더니 > 다른 버젼의 comctrl로 compile...
    • 유도삼
      1999.11.16 05:59
      노유승 wrote: > Quick report Version 을 3.0에서 3.05로 업을 했더니 > 다른 버젼의 comctrl로 compile...
    • TeamX
      1999.11.16 02:00
      답변이 될지 모르겠습니다. 대개 비주얼씨로 만든 종류의 프로그램들을 보면 그 프로그램을 배포할때 비...
    • 긴급
    • 1999.11.15 22:33
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 유도삼
      1999.11.16 06:02
      고민합니다. wrote: > 안녕하세요? > > 답변좀 부탁합니다. > > 델파이 4를 이용하고요, DB는 서버...
    • 왕초보
    • 1999.11.15 21:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 갱수
      1999.11.17 02:27
      왕초보 wrote: > win98에서 BDE Setting을 하고 나면 DB를 잘 보는데.. > NT에서는 왜 안되는지 모르겠네...
    • 김금남
    • 1999.11.15 23:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 염재민
      1999.11.18 18:16
      김금남 wrote: > Edit박스에 입력할 때 insert모드가 되잖아요, > 그때 overwrite모드가 되게 하는 방법...
    • 홍순용
      1999.11.16 00:27
      김금남 wrote: > Edit박스에 입력할 때 insert모드가 되잖아요, > 그때 overwrite모드가 되게 하는 방법...
    • 김영대
      1999.11.16 03:28
      초보의 궁금증 wrote: > 안녀하세요. > 다름이 아니라 제가 패스 워드을 잊어 버려서요.. > ftp 계정을 ...