我对PostMessage有疑问。我正试图让它与另一个人合作
private void roll_spin_timer_Tick(object sender, EventArgs e)
{
foreach (Process P in processList)
{
if (P.ProcessName.Equals(processName))
{
IntPtr edit = P.MainWindowHandle;
PostMessage(edit, WM_KEYDOWN, (IntPtr)Keys.R, (IntPtr)0);
}
}
}
private void kill_me_Tick(object sender, EventArgs e)
{
foreach (Process P in processList)
{
if (P.ProcessName.Equals(processName))
{
IntPtr edit = P.MainWindowHandle;
PostMessage(edit, WM_KEYDOWN, (IntPtr)Keys.Enter, IntPtr.Zero);
}
}
}
#region Checkboxes
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
checkBox2.Enabled = false;
textBox2.Enabled = false;
roll_spin_timer.Interval = Convert.ToInt32(textBox2.Text);
roll_spin_timer.Start();
}
if (!checkBox1.Checked)
{
checkBox2.Enabled = true;
textBox2.Enabled = true;
roll_spin_timer.Stop();
}
}
#region Checkboxes
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
checkBox2.Enabled = false;
textBox2.Enabled = false;
roll_spin_timer.Interval = Convert.ToInt32(textBox2.Text);
roll_spin_timer.Start();
}
if (!checkBox1.Checked)
{
checkBox2.Enabled = true;
textBox2.Enabled = true;
roll_spin_timer.Stop();
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked)
{
roll_spin_timer.Interval = Convert.ToInt32(textBox2.Text);
roll_spin_timer.Start();
checkBox1.Enabled = false;
textBox2.Enabled = false;
kill_me.Start();
}
if (!checkBox2.Checked)
{
roll_spin_timer.Stop();
checkBox1.Enabled = true;
textBox2.Enabled = true;
kill_me.Stop();
}
}
#endregion
当'kill_me'计时器正在滴答时,它应每隔15秒按一次Enter键。并且当'roll_spin_timer'正在滴答时,它应该每隔30秒按R一次。 单独它可以工作,但当我试图同时启用两个东西搞砸了。它时不时地起作用,就是这样。我猜有一种简单的方法可以使它工作,但我只是不知道它!
我该如何解决这个问题?说实话,我希望我可以自己解决这个问题。我只需要某种例子。我希望你们能帮助我。对于那些使用C#较长时间的人来说,编码可能很糟糕,我可以使用一些提示&技巧!
提前致谢!
您诚挚的,
MB
答案 0 :(得分:0)
看起来你正在使用System.Windows.Forms.Timer。 Here您可以阅读以下内容:
此Windows计时器专为单线程环境而设计 UI线程用于执行处理。
尝试使用另一个计时器类System.Timers.Timer或System.Threading.Timer。 您也可以尝试使用线程
编写它答案 1 :(得分:0)
这里真的搞砸了什么?你可以解释吗?或者您可以尝试使用15秒间隔的单个计时器,并实现某种逻辑来处理15秒和30秒的间隔操作。您是否每次都需要遍历processList,或者您是否可以保留对感兴趣的Process的引用并在计时器命中时使用它?