posts - 77,  comments - 61,  trackbacks - 3
公告
  2008年3月14日

using System;
using System.Windows.Forms;
using System.Web;
using System.Security.Permissions;

namespace WindowsFormsApplication2
{
    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    [System.Runtime.InteropServices.ComVisibleAttribute(true)]

    public partial class JsCallWinFun : Form
    {
        private WebBrowser webBrowser1 = new WebBrowser();
        private Button button1 = new Button();

        //[STAThread]
        //public static void Main()
        //{
        //    Application.EnableVisualStyles();
        //    Application.Run(new Form1());
        //}

        public JsCallWinFun()
        {
            button1.Text = "call script code from client code";
            button1.Dock = DockStyle.Top;
            button1.Click += new EventHandler(button1_Click);
            webBrowser1.Dock = DockStyle.Fill;
            Controls.Add(webBrowser1);
            Controls.Add(button1);
            Load += new EventHandler(Form1_Load);
        }

        private void Form1_Load(object sender, EventArgs e)
        {//客户端脚本调用WinFrom方法示例
            webBrowser1.AllowWebBrowserDrop = false;
            webBrowser1.IsWebBrowserContextMenuEnabled = true;
            webBrowser1.WebBrowserShortcutsEnabled = false;
            webBrowser1.ObjectForScripting = this;
            // Uncomment the following line when you are finished debugging.
            //webBrowser1.ScriptErrorsSuppressed = true;

            webBrowser1.DocumentText =
                "<html><head><script>" +
                "function test(message) { alert(message); }" +
                "</script></head><body><button " +
                "onclick=\"window.external.Test('called from script code')\">" +
                "call client code from script code</button>" +
                "</body></html>";
        }

        public void Test(String message)
        {
            MessageBox.Show(message, "client code");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //WinFrom调用客户端脚本示例
            webBrowser1.Document.InvokeScript("test",
                new String[] { "called from client code" });
        }
    }
}

posted @ 2008-03-14 17:01 网碾平 阅读(526) 评论(0) 编辑
/// <summary>  登录
        
/// </summary>
        
/// <param name="url"></param>
        
/// <param name="paramList"></param>
        
/// <returns></returns>

        public static string Login(String url, String paramList)
        
{
            HttpWebResponse res 
= null;
            
string strResult = "";
            
try
            
{
                HttpWebRequest req 
= (HttpWebRequest)WebRequest.Create(url);
                req.Method 
= "POST";
                req.ContentType 
= "application/x-www-form-urlencoded";
                req.AllowAutoRedirect 
= false;
                CookieContainer cookieCon 
= new CookieContainer();
                req.CookieContainer 
= cookieCon;
                StringBuilder UrlEncoded 
= new StringBuilder();
                Char[] reserved 
= '?''=''&' };
                
byte[] SomeBytes = null;
                
if (paramList != null)
                
{
                    
int i = 0, j;
                    
while (i < paramList.Length)
                    
{
                        j 
= paramList.IndexOfAny(reserved, i);
                        
if (j == -1)
                        
{
                            UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length 
- i)));
                            
break;
                        }

                        UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j 
- i)));
                        UrlEncoded.Append(paramList.Substring(j, 
1));
                        i 
= j + 1;
                    }

                    SomeBytes 
= Encoding.UTF8.GetBytes(UrlEncoded.ToString());
                    req.ContentLength 
= SomeBytes.Length;
                    Stream newStream 
= req.GetRequestStream();
                    newStream.Write(SomeBytes, 
0, SomeBytes.Length);
                    newStream.Close();
                }

                
else
                
{
                    req.ContentLength 
= 0;
                }


                res 
= (HttpWebResponse)req.GetResponse();
                cookieheader 
= req.CookieContainer.GetCookieHeader(new Uri(url));
                Stream ReceiveStream 
= res.GetResponseStream();
                Encoding encode 
= System.Text.Encoding.GetEncoding("GBK");
                StreamReader sr 
= new StreamReader(ReceiveStream, encode);
                Char[] read 
= new Char[256];
                
int count = sr.Read(read, 0256);
                
while (count > 0)
                
{
                    String str 
= new String(read, 0, count);
                    strResult 
+= str;
                    count 
= sr.Read(read, 0256);
                }

            }

            
catch (Exception e)
            
{
                strResult 
= e.ToString();
            }

            
finally
            
{
                
if (res != null)
                
{
                    res.Close();
                }

            }

            
return strResult;
        }

        
/// <summary>  获取页面HTML
        
/// </summary>
        
/// <param name="url"></param>
        
/// <param name="paramList"></param>
        
/// <returns></returns>

        public static string getPage(String url, String paramList)
        
{
            HttpWebRequest req 
= (HttpWebRequest)WebRequest.Create(url);
            req.Headers[
"If-None-Match"= "36d0ed736e88c71:d9f";
            req.Referer 
= "http://website/login.do";
            CookieContainer cookieCon 
= new CookieContainer();
            req.CookieContainer 
= cookieCon;
            req.CookieContainer.SetCookies(
new Uri(url), cookieheader);
            HttpWebResponse res 
= (HttpWebResponse)req.GetResponse();
            StreamReader sr 
= new StreamReader(res.GetResponseStream(),Encoding.Default);
            
string strResult = sr.ReadToEnd();
            sr.Close();
            
return strResult;
        }
调用:

        string postData = "userName=admin&password=pass&area=2006&Submit=%B5%C7+%C2%BC";            
        string strLogin, strResult;
        strLogin = Login("http://website/login.do", postData);

         strResult = getPage("http://website/tohjtree.do", "");
//输出
         this.webBrowser1.Document.Write(strResult);

posted @ 2008-03-14 16:55 网碾平 阅读(5321) 评论(2) 编辑