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