すごく簡単なんですが。
とりあえず自分も罠に引っかかったのでメモです。
GetModuleFileName(...)というAPIを使用します。
とりあえず自分も罠に引っかかったのでメモです。
GetModuleFileName(...)というAPIを使用します。
とりあえず、ソースです。
通常?.EXEの場合は、NULLを指定して自分自身のパスを取得しますが、DLLでNULLを指定すると呼び出し側の.EXEのパスを取得してしまいます。
ここが、ポイントです。気づいたら大したこと無いですけどね。
<Category : C/C++>
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD dwReason, LPVOID lpReserved)
{
GetModuleFileNameの第1引数にDLLのインスタンスを渡すと自分自身のパスを得ることが出来ます。{
char path[MAX_PATH+1];
GetModuleFileName(hInstDLL,path,MAX_PATH);
return TRUE;
}
GetModuleFileName(hInstDLL,path,MAX_PATH);
return TRUE;
通常?.EXEの場合は、NULLを指定して自分自身のパスを取得しますが、DLLでNULLを指定すると呼び出し側の.EXEのパスを取得してしまいます。
ここが、ポイントです。気づいたら大したこと無いですけどね。