0
我最近做了这个小Windows窗体应用程序:的SendKeys与Windows发生冲突窗体应用程序按钮
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace Spammer
{
public partial class Form1 : Form
{
Thread t1;
int delay, y = 1;
public Form1()
{
t1 = new Thread(send);
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
delay = int.Parse(textBox2.Text);
t1.Start();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
y = 0;
}
private void send()
{
while (y == 1)
{
String textt = textBox1.Text;
Thread.Sleep(delay);
SendKeys.SendWait(textt);
}
}
private void label1_Click(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
}
}
现在,它看起来像这样:
它有一个延迟的文本框,文本发送文本,和2个按钮:开始和停止。
现在,我试过运行它并将延迟设置为1000ms。
当我按下“停止”按钮时,它完全停止并且不再发送消息。
但是,当我输入延迟非常小的延迟,如100毫秒,例如,按“停止”不会做任何事情。 它甚至很难点击它,甚至当我点击它时也不会停止发送消息。
这是为什么?我能以某种方式解决它吗?
这是因为将表单放入等待模式导致它忽略输入的持续时间。对于一个人来说,100ms几乎是一直处于等待模式。 – Logarr
嗯,当然,切换到另一个窗口并不容易,所以击键最终会放在正确的位置。然后点击停止按钮。所有在100毫秒内,你必须非常敏捷。你需要重新考虑这个,它不是很实用。 –
从文档(http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.sendwait.aspx):“* SendKeys类易受计时问题的影响,一些开发人员曾经解决。*“。 – RBarryYoung