我想显示加载到指定进程中的所有模块。我使用了这段代码并且有效:
Process myProcess = new Process();
myProcess.StartInfo.FileName = "";
myProcess.StartInfo.WorkingDirectory = "";
myProcess.Start();
ProcessModule myProcessModule;
ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
for (int i = 0; i < myProcessModuleCollection.Count; i++)
{
myProcessModule = myProcessModuleCollection[i];
MessageBox.Show(myProcessModule.ModuleName);
}
但是我想在点击按钮后显示模块,所以我这样做了:
public Process myProcess;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Process myProcess = new Process();
myProcess.StartInfo.FileName = "";
myProcess.StartInfo.WorkingDirectory = "";
myProcess.Start();
}
private void button2_Click(object sender, EventArgs e)
{
ProcessModule myProcessModule;
ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
for (int i = 0; i < myProcessModuleCollection.Count; i++)
{
myProcessModule = myProcessModuleCollection[i];
MessageBox.Show(myProcessModule.ModuleName);
}
}
但它会抛出一个错误&#34;对象引用未设置为对象的实例&#34;对于这一行:
ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
我在互联网上搜索了一个答案,尝试了我能想到的一切,但它只是赢了工作。我也搜索了我得到的错误,我发现该程序可能认为myProcess.Modules为null,但这对我也没有帮助。
答案 0 :(得分:1)
myProcess
中的 button1_Click
是一个局部变量
您班级中的字段仍为null
。
您需要删除变量声明。