我在 Program Files 的文件夹中安装了一个自注册 COM 可见 dll (C++),以及一个指向单击一次应用程序的 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
有时在 : 之后有一个新行并且没有字母。
另一个问题:我将启动字符串保存在 class memberwchar_t m_Launch[MAX_PATH*10]
中。由于我不知道用户会选择多少个文件,有没有办法动态调整它的大小?