Last Update : 2007/05/xx
各種フォルダ(ディレクトリ)のパスを取得する関数です。命令名の由来は、「directory information」から。HSP3から新規に登場した関数ですが、HSP2時代はシステム変数として用意されていたものです。
第1パラメータに指定するタイプは以下のとおりです。タイプ0〜3は、各種フォルダのパスが返ります。タイプ4は、他とは系統が異なります。
| タイプ | 取得フォルダパス | マクロ表記 | HSP2 システム変数 |
| 0 | 現在のフォルダ(カレントフォルダ)。 chdir命令、dialog命令(タイプ16・17)で変動します。 |
dir_cur | curdir |
| 1 | 自分自身(実行ファイル)が置かれているフォルダ。 実行ファイル起動時点のものなので固定。 |
dir_exe | exedir |
| 2 | Windowsフォルダ。常に固定。 一般的には、「C:\WINDOWS」か「C:\WINNT」。 |
dir_win | windir |
| 3 | システムフォルダ。常に固定。一般的には、 「C:\WINDOWS\System32」(Windows XP/Vista)、 「C:\WINNT\System32」(Windows NT/2k)、 「C:\WINDOWS\System」(Windows 95/98/Me)。 |
dir_sys | sysdir |
| 4 | コマンドライン文字列。 (ファイルを実行ファイルにD&Dした時のパスなど) |
dir_cmdline | cmdline |
| - | デスクトップ フォルダ | dir_desktop | - |
| - | マイドキュメント フォルダ | dir_mydoc | - |
基本的な取得タイプは計5種です。ただ、これ以外に「マイドキュメント」、「デスクトップ」、「最近使ったファイル」、「スタートアップ」のようなWindowsの特殊なフォルダパスもdirinfo関数で取得できます。つまり、HSP拡張プラグイン hspext.dll のfxdir命令と全く同じ結果を得られます。これについては、HSP3 あれこれ (フォルダ編)のページにて紹介してます。
タイプ0〜3の各種フォルダパスの文字列を表示するサンプルスクリプトです。
; 各種フォルダパスの表示 mes "現在のカレントフォルダ: "+dirinfo(0) mes "実行ファイル(自分自身)のフォルダ: "+dirinfo(1) mes "Windowsフォルダ: "+dirinfo(2) mes "システムフォルダ: "+dirinfo(3)
たとえば、実行ファイルと同じフォルダに存在している readme.txt ファイルをオープンしてみます。自分自身のパスに、「\\」(つまり「\」)付きファイル名を付け足します。
filepath = dirinfo(1) + "\\readme.txt" mes "パス: "+filepath exec filepath, 16
たとえば、実行ファイル直下にある「image」フォルダ内の画像ファイルの場合は下のような感じです。
filepath = dirinfo(1) + "\\image\\hoge.bmp" mes "パス: "+filepath
ちなみに、自分自身の実行ファイル名(フルパス)も取得したい場合は、Win32 API関数を利用する必要があります。(→ HSP3 あれこれ:ファイル編)
dirinfo関数のタイプ4は、「コマンドライン」に渡された文字列を取得します。これは、自分自身の実行ファイル(*.exe)に、任意のファイルをドラッグ&ドロップした時、ファイルパスなどが格納されるものです。
下のようなスクリプトで実行ファイルを作成してください。エクスプローラ上で、実行ファイル(のアイコン)上に適当なファイルをドラッグ&ドロップすると、プログラムが起動してドラッグ&ドロップしたファイルパスが表示されると思います。
; dirinfo関数 タイプ4 mes "コマンドライン: "+dirinfo(4)
なお、実行ファイルを作成するまでもなく、HSPスクリプトエディタの[HSP]→[起動オプション]で仮想のコマンドライン文字列を指定できるので、エディタ上での動作テストが可能です。(通常は空欄にしておくことをお勧めします)
ちなみに、HSPで作成した実行ファイルからコマンドラインに文字列を逆に送るには、exec命令で可能です。下のスクリプトでは、「あいーん」がコマンドライン文字列として渡されることになります。
; 上のコードを実行ファイル自動作成(hsptmp.exe)しておいてください exec "hsptmp.exe あいーん"
- - - - -
※ファイルパスにスペースが含まれている場合
Windows NT系OS上では、ファイルパスの文字列内にスペースが含まれていると、パスが「"」(ダブルクォーテーション)でくくられる仕様があるので、それを取り除く処理が必要です。(→
参照、HSP Tips 2 : HSPシステム変数の仕様)
※ウィンドウ画面へのドラッグ&ドロップ
実行したプログラムのウィンドウ画面内にファイルをドラッグ&ドロップする。これは、dirinfo関数とは全く別の処理で、Windows
API(Win32 API)関数を利用する必要があります。HSP自体にサンプルファイル(sample\new\dragdrop.hsp)が用意されてます。
Copyright © 2005-2008 HSP情報サイト Let's HSP!. All rights reserved.