「somefile.exe」のような文字列に基づいてモジュール情報を取得しようとしています。
MODULEINFO GetModuleInfo(char *szModule)
{
MODULEINFO modinfo = {0};
HMODULE hModule = GetModuleHandle(szModule);
if(hModule == 0)
return modinfo;
GetModuleInformation(GetCurrentProcess(), hModule, &modinfo, sizeof(MODULEINFO));
return modinfo;
}
タイプ "char *"のエラー引数は、タイプ "LPCWSTR" のパラメーターと互換性がありませんが、GetModuleHandle に表示されます。
今、私は次のような多くのステップを試しました:
プロジェクト プロパティ → 構成プロパティ → 文字セット に移動し、Unicode ではなくマルチバイト文字セットを使用するように設定します。私はそれが他の人を助けるのを見てきましたが、私にとってはうまくいきませんでした.
のように szModule をキャストし
(LPCWSTR)szModule
ます。これにより、プログラムは正常にビルドされましたが、意図したとおりには機能しませんでした。パラメータを static に置き換えてユニコードを使用します
L"somefile.exe"
。これは完全に機能しましたが、言うまでもなく、あまり実用的ではありません。
私の質問は:タイプが のGetModuleHandle(szModule)
場合、どうすればコンパイルできますか?szModule
char*
何か役立つ場合は、Visual Studio 2015 を使用しています。