デスクトップにファイルを保存しています。プログラムでファイルを開くと、作業ディレクトリがデスクトップに変わります。これは、プログラムが作業ディレクトリで必要なファイルを検索するときに、必要なファイルを読み込めないことを意味します。作業ディレクトリがこのように変更されないようにする方法はありますか?
5 に答える
OFN_NOCHANGEDIR と呼ばれる、現在のディレクトリが変更されないように設定できるフラグがあります。
http://msdn.microsoft.com/en-us/library/ms646839(v=vs.85).aspx
起動時に作業ディレクトリを保存し、絶対パスを使用できます。実際、現在の作業ディレクトリに本当に依存したい場合を除き、常に絶対パスでファイルを開く方がよいでしょう。
プロセスの場所を特定し、それを他のファイルの場所のキーとして使用する方がよいでしょうか? 作業ディレクトリに影響を与えるプログラムを起動する方法は多数あります。
参照:プロセスの場所を取得し、実行可能ファイル名を削除する方法の適切な説明については、こちらの回答を参照してください (コメントを参照してください)。
基本的に、次を使用します:
GetModuleFileName
またはGetModuleFileNameEx
.
次に:
PathRemoveFileSpec
ファイル名を削除するには
ファイルを開いても、現在のディレクトリは変更されません。おそらく、一般的なファイルを開くダイアログを使用していますか? これは、現在のディレクトリがどのように変更されるかについてすべて説明する記事です。
そのために使用SetCurrentDirectory
します。を使用して実行可能ファイルを見つけることができますGetModuleFileName
TCHAR szFileName[MAX_PATH];
GetModuleFileName( NULL, szFileName, MAX_PATH )
... then compute the correct directory
SetCurrentDirectory(path);