[delphi-users:5108] ドライブの名称変更(ネットワークドライブで割り当て)

240 views
Skip to first unread message

OE

unread,
Mar 15, 2019, 4:57:01 AM3/15/19
to delphi...@freeml.com
[開発環境 Delphi10 Windows7(64)]
[クライアント Windows10(64)]
[VCLフォームアプリケーション]

こんばんは、OEです。

ネットワークドライブに割り当てたドライブの名称が
長くて見づらいので、アプリ作ってそれを変更したいと
考えています。

仮にVBScriptを使えば変更できるようですので、
DelphiでVBScriptを操作すればできそうですが、
もし、VBScriptを使わずにできるならば、
その方がスマートなので教えていただきたく思います。

よろしくお願いいたします。


//---VBScript---
strDrive = "U:\" '← ドライブ文字の指定
strName = "Uドライブ" '← 変更後の名前
CreateObject("Shell.Application").NameSpace(strDrive).Items().Item().Name =
strName
//--------------

[950_Delphi で VBScript を操作]
http://mrxray.on.coocan.jp/Delphi/plSamples/950_VBScript.htm



MLホームページ: https://www.freeml.com/delphi-users

----------------------------------------------------------------------
スマホアプリ版で100万ダウンロード突破の
「キャプテン翼ZERO~決めろ!ミラクルシュート~」
HTML5ゲームプラットフォーム「ゲソてん byGMO」にて、
PCブラウザ版の事前登録受付中!
https://gesoten.com/games/genre/sports/tsubasa-zero
------------------------------------------------------[freeml byGMO]--

あなたの街のチラシがいつでも無料で見放題!
チラシをクリックしてチラシが拡大されたらポイントゲット♪
まずはかんたん登録♪ -ポイントタウン-
https://www.pointtown.com/ptu/rd.cgi?cid=8912
----------------------------------------------------------------------

じゃぺ

unread,
Mar 15, 2019, 5:10:10 AM3/15/19
to delphi...@freeml.com
コマンドプロンプト(labelコマンド)もしくはそのコマンドを発行する
ようにすればいいんじゃないでしょうか。

かわかみ

Fukushi

unread,
Mar 15, 2019, 5:32:22 AM3/15/19
to delphi...@freeml.com
OEさん、こんばんは。福士です。

> ネットワークドライブに割り当てたドライブの名称が
> 長くて見づらいので、アプリ作ってそれを変更したいと
> 考えています。
> (略)
> //---VBScript---
> strDrive = "U:\" '← ドライブ文字の指定
> strName = "Uドライブ" '← 変更後の名前
> CreateObject("Shell.Application").NameSpace(strDrive).Items().Item().Name = strName

そのまんま実装してみました。VCLアプリケーションを作成し、
フォームにTEditを2つ、ボタンを1つ配置して、

uses
...
System.Win.ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
X: OleVariant;
begin
X := CreateOleObject('Shell.Application');
X.NameSpace(Edit1.Text).Items.Item.Name := Edit2.Text;
end;

これで手元ではうまく動作しました。参考にしてください。

---
東洋テクニカルシステム株式会社 システム開発部 福士 光
Hikaru Fukushi (Toyo Technical System Inc.)
mailto:fuk...@tts-inc.co.jp

OE

unread,
Mar 15, 2019, 6:35:51 AM3/15/19
to delphi...@freeml.com
じゃぺさん、福士さん

早速、ありがとうございました。

>じゃぺさん
残念なことに、ネットワークドライブだと、
Labelが使えなくて・・・

>福士さん
そ、そ、そんな簡単にできたんですね・・・
恥ずかしさよりも感動の方が大きいです・・・

大変助かりました。
ありがとうございました!

DEKO

unread,
Mar 15, 2019, 2:12:09 PM3/15/19
to delphi...@freeml.com
こんにちは。

> ネットワークドライブ割り当て

SUBST (仮想ドライブ):
DefineDosDevice() で代替できます。

net use (ネットワークドライブ):
WNetAddConnection() / WNetAddConnection2() /
WNetAddConnection3()で代替できます。

uIOUtilsEx の以下のメソッドがサンプルになっています。
TDriveEx.DefineLocalDevice() / UndefineLocalDevice()
TDriveEx.DefineRemoteDevice() / UndefineRemoteDevice()

https://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1431

See also:

http://edn.embarcadero.com/article/images/43816/c2.pdf
https://ht-deko.com/ft1404.html#140423--

富永英明 (DEKO)
-----------------------------
http://ht-deko.com/
de...@ht-deko.minim.ne.jp
-----------------------------

OE

unread,
Mar 15, 2019, 9:16:37 PM3/15/19
to delphi...@freeml.com
DEKO さん

私は今までWNetAddConnection2しか知らなくて、
そればかり使っていたのですが、他にも方法があるのですね。

また、uIOUtilsEx.pas という素晴らしいユニットを知れて、
今までWebで個々に探していたのですが、それがここに
まとまっていて、非常に参考になります。

ありがとうございました。



> SUBST (仮想ドライブ):
> DefineDosDevice() で代替できます。
>
> net use (ネットワークドライブ):
> WNetAddConnection() / WNetAddConnection2() /
> WNetAddConnection3()で代替できます。
>
> uIOUtilsEx の以下のメソッドがサンプルになっています。
> TDriveEx.DefineLocalDevice() / UndefineLocalDevice()
> TDriveEx.DefineRemoteDevice() / UndefineRemoteDevice()
>
> https://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1431
>
> See also:
>
> http://edn.embarcadero.com/article/images/43816/c2.pdf
> https://ht-deko.com/ft1404.html#140423--
>
> 富永英明 (DEKO)


Reply all
Reply to author
Forward
0 new messages