プログラム自身のフォルダー

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
TISAproject
記事: 62
登録日時: 2016年9月24日(土) 15:35

プログラム自身のフォルダー

#1 投稿記事 by TISAproject »

例えば、プログラムが"C:\program"というフォルダーに入っているとします。
この時、プログラムでC:\programを特定してメッセージボックスで表示するにはどうすればいいですか。
たかせ
記事: 215
登録日時: 2006年2月05日(日) 17:10
お住まい: 東京都

Re: プログラム自身のフォルダー

#2 投稿記事 by たかせ »

もっとも簡単な方法はWIN32 API GetCurrentDirectoryでプログラム自身のフォルダーを特定できます。
ただしプログラム実行中にカレントディレクトリが移動するとまったく違う結果が返ってきます。
なのでソースコードのステップが増えますが以下の方法でプログラム自身のフォルダーを特定できます。

①WIN32 API GetModuleFileNameで指定されたモジュールのファイルパスを取得します。
第一パラメータの0を指定すると自身のモジュールのファイルパスを取得できます。
Dim Path[255] As Byte
Dim Leng As Long
Leng = GetModuleFileName(0,Path,255)
②ABで定義されている_splitpath関数でファイルパスをドライブ名、パス名、ファイル名、拡張子に分解します。
Dim Drv[255] As Byte
Dim Dir[255] As Byte
Dim File[255] As Byte
Dim Ext[255] As Byte
_splitpath(Path,Drv,Dir,File,Ext)
③上記で分解したドライブ名、パス名を連結します
lstrcpy(Path,Drv)
lstrcat(Path,Dir)
④上記で取得した結果をメッセージボックスで表示します
MessageBox(NULL,Path,"TEST",MB_OK)

よろしくお願いします。
返信する