Program Files のフォルダーにインストールされた自己登録 COM 可視 dll (C++) と、クリック 1 回のアプリケーションを指す appref-ms ファイルがあります。この dll の目的は、クリック ワンス アプリを Windows エクスプローラーの右クリック メニューから起動できるようにすることです。
文字列を保持するためにのみ wchar_t* を使用する既存のコードを変更していますが、C++ の経験はほとんどありません。以下を使用して、dll と appref-ms を含むフォルダーへのパスを取得しています。
std::wstring DllFolder() {
wchar_t buffer[MAX_PATH];
GetModuleFileName( (HINSTANCE)&__ImageBase, buffer, MAX_PATH );
std::wstring::size_type pos = std::wstring( buffer ).find_last_of( L"\\/" );
return std::wstring( buffer ).substr( 0, pos);
}
...
const wchar_t* folder = DllFolder().c_str();
これでほぼ動くのですが、ドライブレターが毎回違います。例:
{:\Projects\MyAppName\x64\Release e:\Projects\MyAppName\x64\Release O:\Projects\MyAppName\x64\Release
: の後に改行があり、文字がない場合があります。
別の質問: クラス member に起動文字列を保持していますwchar_t m_Launch[MAX_PATH*10]
。ユーザーが選択するファイルの数がわからないため、動的にサイズを変更する方法はありますか?