C#で.netのcurrentProcess.MainModuleに相当するC++は何ですか?
// get the current process
Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
をこれを行うとき、私は
currentProcess.MainModule
を行うことができますは、C++での任意の同様の機能はありますか?
C#で.netのcurrentProcess.MainModuleに相当するC++は何ですか?
// get the current process
Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
をこれを行うとき、私は
currentProcess.MainModule
を行うことができますは、C++での任意の同様の機能はありますか?
それは言う:GetCurrentProcessId
functionにreferes
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetCurrentProcessId();
として宣言されているNativeMethods.GetCurrentProcessId()
で
public static Process GetCurrentProcess()
{
return new Process(".", false, NativeMethods.GetCurrentProcessId(), null);
}
を。
MainModule
が順番にEnumProcessModules
native functionに降りているようだ
public ProcessModule MainModule
{
get
{
if (this.OperatingSystem.Platform == PlatformID.Win32NT)
{
this.EnsureState((Process.State)3);
ModuleInfo firstModuleInfo =
NtProcessManager.GetFirstModuleInfo(this.processId);
return new ProcessModule(firstModuleInfo);
}
ProcessModuleCollection processModuleCollection = this.Modules;
this.EnsureState(Process.State.HaveProcessInfo);
foreach (ProcessModule processModule in processModuleCollection)
{
if (processModule.moduleInfo.Id == this.processInfo.mainModuleId)
{
return processModule;
}
}
return null;
}
}
として定義されます。
だから、両方のあなたは
currentProcess.MainModule
私はこれを取得しません。 EnumProcessModulesを呼び出して、モジュールハンドルを列挙し、 'GetModuleHandle(NULL) 'に等しいモジュールハンドルを見て、それを返すまで待ちます。実際に? –
@DavidHeffernan申し訳ありませんが、私の答えは複雑すぎました。 MFCのやり方では、記述したのと同じことをしました(いくつかの 'Afx'という接頭辞、IIRC)。私はあなたが言ったように(不完全な、あなたが言ったように).NET Frameworkを通じた道筋を描いたところです。 –
.net libsはモジュールハンドルの周りにラッパークラスを維持しています。 1行のバージョンが存在するにもかかわらず、あなたの答えが受け入れられたというあなたのせいではありません!私は、些細な解決策が存在することを尋ねる者に理解してもらいたい。 –
私はあなたがWindowsを指していると仮定しています。その場合は、次のようにする必要があります。
GetModuleHandle(NULL);
これは、プロセスの作成に使用されたモジュールのモジュールハンドルを返します。詳細については、GetModuleHandle
のドキュメントを参照してください。
モジュールハンドルではなくモジュールのファイル名を使用する場合は、代わりにGetModuleFileName
が必要です。 GetProcess()
の逆コンパイルソースでILSpyてみる
に同様の結果を得ることができる必要があり
GetCurrentProcessId
とEnumProcessModules
機能を使って、あなたが必要なものについての詳細を提供することはできますか?実行中のコードの場所、またはプロセスを開始したメインの.exeの場所を取得しますか? –