所以......有人知道如何做到這一點?如何知道模塊是否加載到系統的任何進程? C#
我想在這樣的:
private bool IsModuleLoaded(String ModuleName)
{
bool loaded = false;
Process[] processes = Process.GetProcesses();
ProcessModule myProcessModule = null;
ProcessModuleCollection myProcessModuleCollection;
for (int i = 0; i < processes.Length; i++)
{
try
{
myProcessModuleCollection = processes[i].Modules;
for (int j = 0; j < myProcessModuleCollection.Count; j++)
{
myProcessModule = myProcessModuleCollection[j];
if (myProcessModule.ModuleName.Contains(ModuleName))
{
loaded = true;
break;
}
}
}
catch { loaded = false; }
}
return loaded;
}
但它沒有工作,因爲每次返回true。即使模塊沒有加載到任何進程的內存中。
在此先感謝!
固定碼:
private bool IsModuleLoaded(String ModuleName)
{
bool loaded = false;
Process[] processes = Process.GetProcesses();
ProcessModule myProcessModule = null;
ProcessModuleCollection myProcessModuleCollection;
for (int i = 0; i < processes.Length; i++)
{
try
{
myProcessModuleCollection = processes[i].Modules;
for (int j = 0; j < myProcessModuleCollection.Count; j++)
{
myProcessModule = myProcessModuleCollection[j];
if (myProcessModule.ModuleName.Contains(ModuleName))
{
loaded = true;
break;
}
}
}
catch { loaded = false; }
if (loaded)
break;
}
return loaded;
}
你確定沒有加載?也許Visual Studio加載它:)當你在這段代碼中遇到命中時,輸出進程的名字,然後檢查使用一些外部工具,如進程管理器。 – mmix 2011-05-16 09:33:09
@ mmix:老兄,我修改了代碼,現在完美地工作。 – 2011-05-16 10:05:50