Глядя ILSpy на декомпилированный источник GetProcess()
, он говорит:
public static Process GetCurrentProcess()
{
return new Process(".", false, NativeMethods.GetCurrentProcessId(), null);
}
С NativeMethods.GetCurrentProcessId()
, объявленным как
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetCurrentProcessId();
Который ссылаетсядля GetCurrentProcessId
функции .
MainModule
определяется как
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;
}
}
, что, в свою очередь, похоже, сводится к EnumProcessModules
встроенная функция .
Таким образом, используя функцию GetCurrentProcessId
и EnumProcessModules
, вы сможете получить результат, аналогичный
currentProcess.MainModule