Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将程序放入循环中_C#_Loops_Webbrowser Control - Fatal编程技术网

C# 将程序放入循环中

C# 将程序放入循环中,c#,loops,webbrowser-control,C#,Loops,Webbrowser Control,刚刚完成一个网站上一些非常有帮助的人建议我的项目。该程序从列表框中获取用户名,使用webBrowser控件输入正确的URL,然后发布消息。现在我想把它放在auto-pilot上,让我们以编程的方式浏览名称列表。在哪里可以添加循环?如何添加循环 private bool WaitingForData; public void master() { listBox(); Application.DoEvents(); GetD

刚刚完成一个网站上一些非常有帮助的人建议我的项目。该程序从列表框中获取用户名,使用webBrowser控件输入正确的URL,然后发布消息。现在我想把它放在auto-pilot上,让我们以编程的方式浏览名称列表。在哪里可以添加循环?如何添加循环

    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;
    }       

如果希望在“循环”中运行整个程序,最好的方法是通过Windows任务调度器。只需设置一个指向程序的任务,并将其设置为按您希望的频率运行即可


假设您想自动处理用户名列表,有两种基本的可能性

1) 您希望启动UI,让某人手动添加逗号或换行符分隔的名称列表,然后按go按钮 2) 您希望从数据库/web服务或定期替换的文本文件中获取名称列表,并在有新信息需要处理时自动执行程序

让我们依次解决每个问题

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


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

然后循环使用它们来处理类似以下代码:


foreach(名称中的变量名称)
{
嫁妆(姓名);
}

在选项2中,您需要一种不同风格的程序,可以是windows服务,也可以是使用任务调度器运行的命令行应用程序

在这两种情况下,我不确定您的程序的当前结构是否真的适合批处理


最后请注意,如果您试图通过基于浏览器的客户端(看起来就是这样)自动发布电子邮件,那么首先这是一个非常糟糕的主意,尤其是使用web浏览器控件来实现这一点,第二,请确保您拥有这样做的合法权利,因为如果不加检查的话,对这样的网站进行垃圾邮件是非常有害的。

啊,我错过了名称系列部分。是的,我会从数据库里读到这些名字。谢谢肖恩和保罗。我将尝试选项1。任务调度器是一个非常好的主意,我以前使用过它,我只是觉得它在这里不起作用,因为名字列表的问题。仅供参考,我不是垃圾邮件发送者,只是为了好玩而编码。我想我问了一个很好的问题,不知道为什么人们会记下来?