お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"Windowsからsubstする"




面白いAPI見つけたのでサンプルアップします。
DOSコマンドにsubst というコマンドがありますが
これと同じことを行います。

addDevice でドライブを割り当てます。
rmvDecive でドライブを割当を解除します。



ドライブ名は、'A:' と':'まで含めた文字列です。
パス名は、最後の'\'を含まない名前です。

{ ドライブの割当 }
{ Drv:  ドライブ名 'I:'         }
{ Path: パス名     'c:\windows' }
procedure addDevice(Drv: string; Path: string);
begin
  if (Length(Path) = 0) then Exit;
  if (DefineDosDevice(0, PChar(Drv), 
    PChar(Path)) = False) then begin
    // ドライブ割当に失敗した
    RaiseLastWin32Error;
  end;
end;

{ ドライブの削除 }
{ Drv:  ドライブ名 'I:'         }
procedure rmvDevice(Drv: string);
begin
  if (DefineDosDevice(DDD_REMOVE_DEFINITION, 
    PChar(Drv), nil) = False) then begin
    // ドライブ削除に失敗した
    RaiseLastWin32Error;
  end;
end;

APIの説明には NT3.51以上でWindowsは
Unsupported とありますがWin98で使えたります。
Win95では使えないようです。

また既に割り当てられたパスを取得するには
QueryDosDevice を使います。

function QueryDevice(Drv: string): string;
var
  Drv: char;
  szPath: array[0..MAX_PATH] of Char;
begin
  if (QueryDosDevice(PChar(Drv), szPath, MAX_PATH) = 0) then begin
    // 取得失敗
  result := EmptyStr;
    Exit;
  end;
  result := StrPas(szPath);
end;

                                 @ いさやん @

 



Original document by いさやん        氏 ID:(YIB02642)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum