-2

刚刚完成了这个网站上一些非常有帮助的人建议我的程序。该程序从列表框中获取用户名,使用 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;
    }       
4

2 回答 2

1

假设您希望自动执行此操作以使用用户名列表,则有两种基本可能性。

1)您希望启动一个 UI,让某人手动添加逗号或换行符分隔的名称列表,然后按执行按钮 2)您希望从数据库/网络服务或定期替换的文本文件中获取名称列表和让程序在有新信息可使用时自动执行。

让我们依次解决每个

1)您需要从列表框中检索数据并将其拆分为用户名列表。如果您使用逗号分隔值(例如"Paul, Steve, Michael"),您可以使用

var names = myListBox.Text.Split(',');

然后遍历它们以使用类似于以下的代码:

foreach(var name in names) { doWork(name); }

在选项 2 中,您需要不同风格的程序,可以是 Windows 服务,也可以是使用任务计划程序运行的命令行应用程序。

无论哪种情况,我都不确定您的程序的当前结构是否真的适合批处理。

最后一点,如果您尝试做的是通过基于浏览器的客户端自动发布电子邮件(这就是它的样子),那么首先这是一个非常糟糕的主意,尤其是使用 Web 浏览器控件来执行此操作,以及第二,请确保您有这样做的合法权利,因为如果不加以检查,向这样的网站发送垃圾邮件是非常有害的。

于 2013-06-06T17:36:44.977 回答
0

如果您想在“循环”中运行整个程序,最好的方法是通过 Windows 任务计划程序。只需设置一个指向程序的任务,并将其设置为您想要的任何频率运行。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa383614%28v=vs.85%29.aspx

于 2013-06-06T17:24:43.913 回答