どのように申請実行ファイル名WindowsC++/CLI?
質問
私を変更する必要性に基づいてアプリケーションの実行ファイルの名前です。何もない巨大なって文字列を表示一部の内部識別子のことです。申請書に書かれた混合物のネイティブ。純C++-CLIのコードです。
つまたは構文解析のGetCommandLine機のWin32と詰めにAppDomainその他のものです。います。しかしを使用GetCommandLineないと起動時にデバッガからのコマンドラインは空になります。とゆったりとしています。純AppDomainもう必要とするのが詰ます。
では、アコースティックライブに/も/最も効率的な方法を決定するの実行ファイル名はC++/CLI?(私のようないばかりなのに惜しいことは可能です。ます。)
編集:こにあるのはこのたWindows用GUIアプリケーション用のC++/CLIであるアクセスの伝統的なCスタイルメイン機能を利用してWindows WinMain()機能です。
解決
電話 GetModuleFileName() を0としてモジュール。
注意:す ができ ものargv[0]のパラメータをメインまたは電話GetCommandLine()がない場合、主なものです。しかし、これらの方法なお、の完全なパスを実行可能ファイルです。しかも、同じ文字列の文字を使用していたのです。呼び出しGetModuleFileName()は常にする完全なパス&ファイル名です。
他のヒント
Ferruccioの答えが良いです。こちらは一部の例のコード:
TCHAR exepath[MAX_PATH+1];
if(0 == GetModuleFileName(0, exepath, MAX_PATH+1))
MessageBox(_T("Error!"));
MessageBox(exepath, _T("My executable name"));
をご利用 argv
引数 main
:
int main(int argc, char* argv[])
{
printf("%s\n", argv[0]); //argv[0] will contain the name of the app.
return 0;
}
する必要があるスキャンの文字列を削除すディレクトリ情報および/または拡張子が、名称があります。
使__argv[0]
あstaticメソッドに組み立てすでに使用されています。います。
Assembly.GetEntryAssembly().FullName
編集:なかったことを実現したファイル名---使用できる必要がありますことを呼び出し:
Assembly.GetEntryAssembly().CodeBase
るまでのフルパスでの組立を含むファイル名)となります。
確認することができま下win64/visual studio2017/MFC
TCHAR szFileName[MAX_PATH + 1];
GetModuleFileName(NULL, szFileName, MAX_PATH + 1);
auto exe = CString(szFileName);
exeを含むフルパスexe.