ab.com コミュニティ
https://www.activebasic.com/forum/

プログラム自身のフォルダー
https://www.activebasic.com/forum/viewtopic.php?t=4590
ページ 11

作成者:  TISAproject [ 2016年9月27日(火) 22:34 ]
記事の件名:  プログラム自身のフォルダー

例えば、プログラムが"C:\program"というフォルダーに入っているとします。
この時、プログラムでC:\programを特定してメッセージボックスで表示するにはどうすればいいですか。

作成者:  たかせ [ 2016年9月28日(水) 10:55 ]
記事の件名:  Re: プログラム自身のフォルダー

もっとも簡単な方法は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)

よろしくお願いします。

ページ 11 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/