お知らせ

電子会議

ライブラリ

FDelphi サイト全文検索

Delphi FAQ一覧

サンプル蔵



FDelphi FAQ
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」

[Q]
Windows 95 での シリアル番号・ホ゛リュームラヘ゛ルの取得方法

[A]

 Win32API の GetVolumeInformation を使用します。

 BOOL GetVolumeInformation(  LPCTSTR  lpRootPathName,
                            LPTSTR   lpVolumeNameBuffer,
                            DWORD    nVolumeNameSize,
                            LPDWORD  lpVolumeSerialNumber,
                            LPDWORD  lpMaximumComponentLength,
                            LPDWORD  lpFileSystemFlags,
                            LPTSTR   lpFileSystemNameBuffer,
                            DWORD    nFileSystemNameSize   );
----------------------------------------------------------------------
lpRootPathName:             取得するドライブを指定
                            NULL終端文字列としてください。
                            'A:\'と直接定数を記述しても良いです。

 lpVolumeNameBuffer:         ボリュームラベルを格納する領域
                            NULL終端文字列としてください。

 nVolumeNameSize:            lpVolumeNameBufferのハ゛イト数を指定

 lpVolumeSerialNumber:       シリアル番号を格納する領域
                            DWordとしてください。

 lpMaximumComponentLength:   Long File名などを使用するOSの場合の
                            名前の最大文字数を格納する領域
                            DWordとしてください。

 lpFileSystemFlags,lpFileSystemNameBuffer,nFileSystemNameSize
                            については、Helpを参照してください。
[例]
{--------------------------------------------------------------------------
フォームに Edit1,Label1,Button1 を配置し、Button1のclickなどで呼び出
して下さい。}
Var
  lpRootPathName,
  lpVolumeNameBuffer : array [0..255] Of Char;
  lpVolumeSerialNumber,
  lpMaximumComponentLength,
  lpFileSystemFlags: DWord;
begin
  StrPCopy(lpRootPathName,Edit1.Text); {Edit1.Text は C:\ のようにする}
  if GetVolumeInformation(lpRootPathName,
                          lpVolumeNameBuffer,
                          SizeOf(lpVolumeNameBuffer),
                          @lpVolumeSerialNumber,
                          lpMaximumComponentLength,
                          lpFileSystemFlags, nil,0) Then
    Label1.Caption := StrPas(lpVolumeNameBuffer) + ' : '
                    + IntToHex(lpVolumeSerialNumber,4) + ' : '
                    + IntToStr(lpMaximumComponentLength)
  Else
    ShowMessage(Edit1.Text + 'はマウントされていません');
end;


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。

Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会