スタートアップメニューからのパス

[戻る]
ドンドン 2005/01/13(木) 13:54:14
お世話になります。現在VCで開発を行っております。
環境は以下の通りです。

   Win2000 VC6.0 

現在、カレントディレクトリのパスを返すexeファイルを作成しました。
このexeのショットカットキーをデスクトップ上においても、パスはexe本体があるディレ
クトリのパスを返します。しかし、インストールして登録されたスタートアップメニュー
でこのexeを起動させると、スタートアップメニューのディレクトリを返します。
インストール時にはこのexeは任意のディレクトリに作成されるのですが そのディレク
トリパスを見てくれません。exeのリンク先は任意のディレクトリになっております

何か解決法をご存知の方はご教授お願いいたします。よろしくお願いします
ちなみに GetCurrentDirectoryを使ってカレントディレクトリのパスを取得しています。

YuO [E-Mail] 2005/01/13(木) 14:13:26
なにが問題なのかが全然わかりません。

実行ファイルのパスが欲しいのであれば,GetModuleFileNameから切り出す必要がありま
す。
カレントディレクトリと実行ファイルのパスは異なって当たり前です。

ドンドン 2005/01/13(木) 14:24:48
YuOさん。お世話になります。
このexeファイルはexeファイルと同じのディレクトリにあるINIファイルの読み込みを行
う処理をしているのですが、スタートアップから起動させた場合にそのINIファイルを読
み込みにいけないという不具合なのです。説明不足で申し訳ございませんでした。

akey 2005/01/13(木) 14:44:17
ならばYuOさんの言っている
GetModuleFileName
を使うべきです

ドンドン 2005/01/13(木) 15:32:04
[[解決]]
YuOさん。akeyさん。ありがとうございました。
GetModuleFileNameを使って実行ファイルのパスをとり
そこから文字列操作をして Iniファイル名を指定してやれば
処理がうまくいきました。
本当にご教授ありがとうございました。

ゾットA 2005/03/26(土) 00:19:08
こんな感じ

{
    char    fileFullPath[MAX_PATH];

    // INIファイルのパス名を変更する
    if( m_pszProfileName ) {

        delete ((void*)m_pszProfileName);

        m_pszProfileName = new char[MAX_PATH];
        ASSERT( m_pszProfileName );

        // フルパス+実行ファイル名の取得
        ::GetModuleFileName(NULL, fileFullPath, MAX_PATH);
        _splitpath(fileFullPath, NULL, (LPTSTR)m_pszProfileName, 
NULL, NULL);

        // フルパス+INIファイル名の生成
        strcat((LPTSTR)m_pszProfileName, INIT_FILE_NAME);
    }
}

古いスレッドには追加発言できません。