実行ファイルが以下のようなディレクトリに
置かれています。
\hoge
├a.exe
├\aaaa
│ ├b.exe
│ └\bbbb
└\bbbb
a.exeの中でb.exeを呼び出します。
b.exeの中で相対アドレスでbbbbを指定したところ
hoge直下のbbbbを指定したように動作します。(aaaa直下のbbbbではなく!)
どこかの中から呼び出されたexeの指定する相対アドレスは
はじめに起動したexeからの相対アドレスになるのでしょうか?
それともこれは環境によるのでしょうか?
a.exeはhspで、b.exeはcで作っています。
No.1ベストアンサー
- 回答日時:
# HSPは明るくないので …
実行時のカレントフォルダーを \hoge\aaaaに移動してから b.exeを実行すれば b.exeで .\bbbbを参照した場合に \hoge\aaaa\bbbbを参照するものと考えます
b.exe側で WinAPIのGetModuleFilenameをつかってどこから読み込まれたのかを検出し、GetCurrentDirectoryで取得できるフォルダー名との差異を検証しましょう
char chPath[MAX_PATH+1];
char chCurDir[MAX_PATH+1];
::GetModuleFilename( NULL, chPath, MAX_PATH );
::GetCurrentDirectory( MAX_PATH , chCurDir );
char *p = strrchr( chPath, '\\');
if ( *p != NULL ) {
*p = '\0';
}
if ( strcmp( chPath, chCurDir) != 0 ) {
::SetCurrentDirectory( chPath );
}
といった具合のコードをスタートアップルーチンに仕込んで見ましょう
a.exeに戻る場合 変更したカレントフォルダーを元に戻す処理が必要になる場合があるでしょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- その他(セキュリティ) exeファイルの個人情報について 3 2023/06/29 17:36
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- オープンソース Pythonのコードをexe化 1 2023/07/03 08:01
- その他(IT・Webサービス) エクセルの実行ファイルについての質問です。 1 2023/05/04 03:58
- Windows 10 Windows11の実行モジュールはどこにある 1 2022/05/31 07:33
- Windows 10 exeファイルが起動しない 4 2022/06/05 16:13
- アプリ アプリケーションが見つかりません 2 2022/07/13 21:07
- 労働相談 合意済み仕様の商品納入後における仕様変更要求への対応について 5 2023/04/19 09:41
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「読み込み違反」が起きたとき...
-
Visual Studio 「AnyCpu」について
-
Windows PowerShellでC言語を実...
-
excel vbaから実行するexe実行...
-
VB.NetのWinsockについて
-
VB6.0 exe作成時に実行時エラー...
-
mscorlib.dllの初回例外について
-
ActiveX → VB を起動するとCre...
-
system関数(Windows)の戻り値!!
-
エスケープ・シーケンスによる...
-
デバック時エラーなし、アプリ...
-
C++初心者です。 debug asserti...
-
VBコンソールアプリケーション...
-
androidで.exeを実行できますか?
-
外部exe呼び出しの方法 ShellEx...
-
VisualStudioでC#が実行できない
-
vba 時間の引き算 例えば 15:00...
-
VBAでOutlookを終了させたい Ex...
-
Designer.vbは直接コードをいじ...
-
印刷ダイアログを表示させない方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「読み込み違反」が起きたとき...
-
Visual Studio 「AnyCpu」について
-
Windows PowerShellでC言語を実...
-
excel vbaから実行するexe実行...
-
実行ファイル(.exe)が別のPC...
-
C++初心者です。 debug asserti...
-
Format 関数のバグ?
-
C#VB、exeに埋め込んだexeの実行
-
VisualStudioでC#が実行できない
-
VB6.0 exe作成時に実行時エラー...
-
Pythonのコードをexe化
-
shell関数には二重引用符を渡せ...
-
ActiveDirectoryから値を取得
-
mscorlib.dllの初回例外について
-
ActiveX → VB を起動するとCre...
-
androidで.exeを実行できますか?
-
外部exe呼び出しの方法 ShellEx...
-
VBがデバッグ時落ちてしまう
-
Eclipse CDT MinGWによるC言語
-
ACCESSランタイムでエラー
おすすめ情報