1

「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 に表示されます。

今、私は次のような多くのステップを試しました:

  1. プロジェクト プロパティ → 構成プロパティ → 文字セット に移動し、Unicode ではなくマルチバイト文字セットを使用するように設定します。私はそれが他の人を助けるのを見てきましたが、私にとってはうまくいきませんでした.

  2. のように szModule をキャストし(LPCWSTR)szModuleます。これにより、プログラムは正常にビルドされましたが、意図したとおりには機能しませんでした。

  3. パラメータを static に置き換えてユニコードを使用しますL"somefile.exe"。これは完全に機能しましたが、言うまでもなく、あまり実用的ではありません。

私の質問は:タイプが のGetModuleHandle(szModule)場合、どうすればコンパイルできますか?szModulechar*

何か役立つ場合は、Visual Studio 2015 を使用しています。

4

1 に答える 1

2

GetModuleHandle(szModule)未来を作るのは良い考えではないと思います。

GetModuleHandleA(szModule)の代わりに使用してみてくださいchar *szModule;

于 2015-09-25T03:16:32.650 に答える