C#在客户端与 JS 交互

说说背景吧,公司的EIP 说白 了 就是sharePoint 2007 当 文件服务器使用。 SharePoint 2007 会把 文档 做为2进制放在数据。 以致数据库文件巨大。

老板为了保证系统能正常使用, 命我吧数据缩小。 SharePoint 2007 的结构 不难,但保险起见, 还是通过它的 页面去删。

大量的文件在白天删 肯定会造成系统宕机。所以选择 晚上。

但是人又不能一直盯着,所以 用winform +webbrowser 的形式 写了个小程序, 然后用windows schedule 定时的去调用就搞定了 。

 

说说重点吧 :

首先在winform 上放上一个webbrowser, 吧 URL设置成我们EIP 回收站的地址。 当一面一旦加载 完毕, 就 调用 页面的JS 和自己写的 JS 方法, 提交表单。 然后程序退出。主要的思想是这个。 说说实现:

 

//获取页面指定控件          
  HtmlElementCollection webUser = webBrowser1.Document.All.GetElementsByName("selectall");
            //webBrowser1.Document.InvokeScript("alert('111')");
//调用空间的方法, 如果有参数需要调用这个方法重载的一个函数
            webUser[0].InvokeMember("click");

//嵌入自己的js 函数
            HtmlElement ele = webBrowser1.Document.CreateElement("script");
            ele.SetAttribute("type", "text/javascript");
            ele.SetAttribute("text", @"            function helloworld(){
            var strItems = GetSelectedItems();
if (strItems == ''){
    return;
}	    
         document.forms['usrpage'].binitems.value = strItems;
		document.forms['usrpage'].actionID.value = 'Delete';
		document.forms['usrpage'].submit();

	
}
helloworld();
            ");
            webBrowser1.Document.Body.AppendChild(ele);

 

 

全部代码:  

using System;
using System.IO;
using System.Net;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += new EventHandler(Form1_Load);
        }

        void Form1_Load(object sender, EventArgs e)
        {
          
        }
        //根据Url地址得到网页的html源码
        private string GetWebContent(string Url)
        {
            string strResult = "";
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                //声明一个HttpWebRequest请求
                request.Timeout = 30000;
                //设置连接超时时间
                request.Headers.Set("Pragma", "no-cache");
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream streamReceive = response.GetResponseStream();
                Encoding encoding = Encoding.GetEncoding("GB2312");
                StreamReader streamReader = new StreamReader(streamReceive, encoding);
                strResult = streamReader.ReadToEnd();
            }
            catch
            {
                MessageBox.Show("出错");
            }
            return strResult;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string Url = textBox1.Text;
                webBrowser1.Navigate(Url);
                //要抓取的URL地址
                //webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
          
        
        }

        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            //while (true)
            //{
                //button2_Click(null, null);
                //Thread.Sleep(10000);
            //}
        }
        int iii = -1;

        private void button2_Click(object sender, EventArgs e)
        {
            HtmlElementCollection webUser = webBrowser1.Document.All.GetElementsByName("selectall");
            //webBrowser1.Document.InvokeScript("alert('111')");
            webUser[0].InvokeMember("click");
            
            HtmlElement ele = webBrowser1.Document.CreateElement("script");
            ele.SetAttribute("type", "text/javascript");
            ele.SetAttribute("text", @"            function helloworld(){
            var strItems = GetSelectedItems();
if (strItems == ''){
    return;
}        
         document.forms['usrpage'].binitems.value = strItems;
        document.forms['usrpage'].actionID.value = 'Delete';
        document.forms['usrpage'].submit();

    
}
helloworld();
            ");
            webBrowser1.Document.Body.AppendChild(ele);

           // System.Environment.Exit(0);
        }
        

        private void test(object sender, WebBrowserDocumentCompletedEventArgs e)
        {


            //HtmlElementCollection webUser = webBrowser1.Document.All.GetElementsByName("User");
           HtmlElementCollection webUser=  webBrowser1.Document.All.GetElementsByName("selectall");

            //if (iii < Convert.ToInt32(dataGridView1.Rows.Count.ToString()))
            //{
                
            //    this.dataGridView1.CurrentCell = this.dataGridView1[0,iii];

                
            //    webUser[0].InnerText = dataGridView1.CurrentCell.Value.ToString().Trim();


            //    HtmlElementCollection webSub = webBrowser1.Document.All.GetElementsByName("submitInvite");
            //    webSub[0].InvokeMember("click");
                
            //}
            //else 
            //{
            //    MessageBox.Show("弄完了!");
            //}



        }

       

    }
}
View Code

 

posted @ 2014-04-17 16:00  tollinxu  阅读(335)  评论(0编辑  收藏  举报