zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    3、面向对象
    今日记事
    javascript 学习javascript高级程序设计
    数据库操作语言分类
    project遇到问题了。
    CentOS设置程序开机自启动的方法
    ECMAScript 基础 [完]
    CentOS 网络设置修改
    Spring Boot项目Circular view path问题解决
    数据库设计
  • 原文地址:https://www.cnblogs.com/tollin/p/3669586.html
Copyright © 2011-2022 走看看