嗨,大家好首先我想做这个循环。如何在if循环中返回“if”?
Process p = Process.GetProcessesByName("etcProgram.bin")[0];
foreach (System.Diagnostics.ProcessModule moz in p.Modules)
if (csh.Text == "csh" || bin.Text == "bin")
{
if (moz.FileName.IndexOf("csh") != -1)
{
csh.Text = moz.BaseAddress.ToString();
}
if (moz.FileName.IndexOf("bin") != -1)
{
bin.Text = moz.BaseAddress.ToString();
}
}
else
{
!!!!!! return to "if" until "if code" happens !!!!!!
}
但是我的不好的代码知识不能通过这个问题。所以我用定时器写了几乎相同的thinh。然后我写了这段代码。
private void tmrActive_Tick(object sender, EventArgs e)
{
try
{
Process p = Process.GetProcessesByName("Wolfteam.bin")[0];
foreach (System.Diagnostics.ProcessModule moz in p.Modules)
if (csh.Text == "csh" || bin.Text == "bin")
{
if (moz.FileName.IndexOf("csh") != -1)
{
csh.Text = moz.BaseAddress.ToString();
}
if (moz.FileName.IndexOf("bin") != -1)
{
bin.Text = moz.BaseAddress.ToString();
}
}
else
{
tmrActive.Stop();
MessageBox.Show("It's stopped");
}
}
但我看到MessageBox出现5-6次,当我开始这个。我不知道为什么。所以我不觉得使用这段代码非常安全。
1-你知道那个定时器有什么问题。此消息框不应该出现一次吗?
2-你可以帮我解释一下没有定时器的代码吗?无论如何要做吗?
什么while循环您可以使用此整个代码的递归函数具有特定条件停止条件? – Charleh
您错过了{在您的foreach之后并以else结尾}。这不是必需的,但它有助于可读性。并且它的每个模块都有一次是正式的,您在foreach模块中(在else中)这样做,因为if/else不依赖于模块(您正在检查bin.text和csh.text,但是不是moz),那么如果你有5-6个模块,你总是会有0或5-6个消息框 –
“if”语句不是一个循环。似乎值得一提 – Jonesopolis