public static ulong GetModuleByName(this System.Diagnostics.Process process, string moduleName) { ulong[] moduleHandleArray = new ulong[1000]; fixed(ulong *hMods = moduleHandleArray) { if (Native.EnumProcessModules(process.Handle, (ulong)hMods, (uint)(sizeof(ulong) * moduleHandleArray.Length), out uint cbNeeded) > 0) { for (int moduleIndex = 0; moduleIndex < cbNeeded / sizeof(ulong); moduleIndex++) { string name = NativeExtensions.GetModuleBaseName(process.Handle, moduleHandleArray[moduleIndex]); if (String.Equals(name, moduleName, StringComparison.InvariantCultureIgnoreCase)) { return(moduleHandleArray[moduleIndex]); } } } } return(0); }