刚刚完成一个程序,本网站上的一些非常有帮助的人建议我。该程序从列表框中获取用户名,使用webBrowser控件输入正确的URL,然后发布消息。现在我想把它放在自动驾驶仪上,让我们以编程方式查看名称列表。我在哪里可以添加循环?
private bool WaitingForData;
public void master()
{
listBox();
Application.DoEvents();
GetData();
Application.DoEvents();
}
public void listBox()//Handles getting names from ListBox
{
//load names to listbox
}
private void GetData()
{
webBrowser1.Navigate(inputURLID);
WaitingForData = true;
}
private void SendData()
{
webBrowser1.Document.GetElementById("subject").SetAttribute("value", textBox2_Subject.Text);//To (username)
webBrowser1.Document.GetElementById("message").SetAttribute("value", richTextBox1.Text);//Subject
webBrowser1.Document.GetElementById("Submit").InvokeMember("click");//Message
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (WaitingForData) SendData();
WaitingForData = false;
}
答案 0 :(得分:1)
假设您希望自动执行此操作以使用用户名列表,则有两种基本可能性。
1)您希望启动UI,让某人手动添加逗号或换行符分隔名称列表,然后按一下go按钮 2)您希望从数据库/ Web服务获取名称列表或定期替换文本文件,并在有新信息可用时自动执行程序。
让我们依次解决每个问题
1)您需要从列表框中检索数据并将其拆分为用户名列表。如果您使用逗号分隔值(例如"Paul, Steve, Michael"
),则可以使用
var names = myListBox.Text.Split(',');
然后循环遍历它们以使用类似于:
的代码
foreach(var name in names)
{
doWork(name);
}
在选项2中,您需要一种不同的程序样式,Windows服务或与任务计划程序一起运行的命令行应用程序。
在任何一种情况下,我都不确定程序的当前结构是否真的适合批量处理。
作为最后一点,如果您要做的是通过基于浏览器的客户端(这就是它的样子)自动发布电子邮件消息,那么首先这是一个非常糟糕的主意,特别是使用Web浏览器控件要做到这一点,请确保您有合法权利这样做,因为如果不加以检查,发送此类网站是非常有害的。
答案 1 :(得分:0)
如果要在“循环”中运行整个程序,最好的方法是通过Windows任务计划程序。只需设置一个指向程序的任务,然后将其设置为常常运行。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383614%28v=vs.85%29.aspx