• 挂机软件开发(1)


    using System;
    using System.Windows.Forms;
    using zoyobar.shared.panzer.web.ib;
    using zoyobar.shared.panzer.web;
    using zoyobar.shared.panzer;
    using System.Drawing;//包含jquery1.6
    using System.Data.SQLite;
    using System.IO;
    using System.Data;
    //可操作javascript,webbrowser
    using System.Runtime.InteropServices;
    //netframework 4.0内置处理JSON对象
    //using System.Runtime.Serialization;
    //从服务器取得json数据
    using System.Net;
    using System.Web;
    using System.Web.Script.Serialization;
    
    
    
    
    //取得javascript变量值
    
    
    namespace tsgwy
    {
        [ComVisible(true)]
        public partial class FrmMain : Form
        {
            private readonly string homeurl = "http://passport.chinahrt.com/login.do";
            private DBDataSet ds;
            private DBDataSetTableAdapters.tbAdminTableAdapter tba;
            private bool loading = true;//等待加载完成
            private readonly IEBrowser ie;
    
            //可打开的最多网页数
            const int num = 10;
            private WebBrowser[] web = new WebBrowser[num];
    
            public FrmMain()
            {
                InitializeComponent();
    
    
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                dbload();
                for (int i = 0; i < num; i++)
                {
                    web[i] = new WebBrowser();
                }
    
                web[0].Dock = DockStyle.Fill;
                web[0].Navigate(new Uri(homeurl));
    
                tabControl1.TabPages[0].Controls.Add(web[0]);
                web[0].DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocumentCompleted);
            }
    
            //主窗体重绘,地址栏自动变换
            private void Form1_SizeChanged(object sender, EventArgs e)
            {
                combUrl.Size = new Size(this.panel4.Width - 95, 23);
            }
            //登录
            private void btnLogin_Click(object sender, EventArgs e)
            {
                //查找当前激活顶
    
                foreach (TabPage tp in tabControl1.TabPages)
                {
                    //如果当前顶为,选定的页
                    if (tabControl1.SelectedTab == tp)
                    {
                        //判断url是否为主页,不是导航到主页。
                        if (web[tabControl1.SelectedIndex].Url.ToString() != homeurl)
                        {
                            web[tabControl1.SelectedIndex].Navigate(homeurl);
                            if (web[tabControl1.SelectedIndex].ReadyState != WebBrowserReadyState.Complete)
                            {
                                while (loading)
                                {
                                    Application.DoEvents();
                                }
                            }
                        }
                        //改写tab标签
                        tabControl1.TabPages[tabControl1.SelectedIndex].Text = web[tabControl1.SelectedIndex].DocumentTitle;
                    }
                    //用户名、密码有一项为空,则设置值
                    if (string.IsNullOrEmpty(this.txtName.Text) || string.IsNullOrEmpty(this.txtPwd.Text))
                    {
                        this.txtName.Text = listView1.Items[0].SubItems[0].Text.ToString();
                        this.txtPwd.Text = listView1.Items[0].SubItems[1].Text.ToString();
                    }
    
    
                    //完成后,自动登录。
                    if (web[tabControl1.SelectedIndex].ReadyState == WebBrowserReadyState.Complete)
                    {
                        try
                        {
                            HtmlElement name = web[tabControl1.SelectedIndex].Document.GetElementById("loginName");
                            HtmlElement pwd = web[tabControl1.SelectedIndex].Document.GetElementById("loginPwd");
    
    
                            name.SetAttribute("value", this.txtName.Text.Trim());
                            pwd.SetAttribute("value", this.txtPwd.Text.Trim());
                            web[tabControl1.SelectedIndex].Document.InvokeScript("checkSubmit");
                        }
                        catch (Exception my)
                        {
                            MessageBox.Show("请登录到主页!");
    
                        }
    
    
                    }
    
                }
            }
            //保存用户信息
            private void btnSaveUser_Click(object sender, EventArgs e)
            {
                if (string.IsNullOrEmpty(this.txtName.Text))
                {
                    return;
                }
                if (string.IsNullOrEmpty(this.txtPwd.Text))
                {
                    return;
                }
                string name = this.txtName.Text.Trim();
                string pwd = this.txtPwd.Text.Trim();
                DBDataSet ds = new DBDataSet();
                DBDataSetTableAdapters.tbAdminTableAdapter tba = new DBDataSetTableAdapters.tbAdminTableAdapter();
                tba.Fill(ds.tbAdmin);
    
    
                tba.Insert(name, pwd);
    
                this.listView1.Items.Clear();
    
                this.txtName.Text = "";
                this.txtPwd.Text = "";
                dbload();
            }
            //数据加载
            private void dbload()
            {
                DBDataSet ds = new DBDataSet();
                DBDataSetTableAdapters.tbAdminTableAdapter tba = new DBDataSetTableAdapters.tbAdminTableAdapter();
                tba.Fill(ds.tbAdmin);
                foreach (DBDataSet.tbAdminRow rw in ds.tbAdmin.Rows)
                {
                    ListViewItem item = new ListViewItem(new string[] { "用户名", "密码" });
                    item.SubItems[0].Text = rw[0].ToString();
                    item.SubItems[1].Text = rw[1].ToString();
                    //listView1.Items.Insert(0, item);
                    this.listView1.Items.Add(item);
                }
    
            }
    
            //删除用户
            private void btnDelUser_Click(object sender, EventArgs e)
            {
                ds = new DBDataSet();
                tba = new DBDataSetTableAdapters.tbAdminTableAdapter();
                tba.Fill(ds.tbAdmin);
                string name = listView1.SelectedItems[0].SubItems[0].Text.ToString();
                tba.DeleteQuery(name);
                listView1.SelectedItems[0].Remove();
    
            }
            //双击直接登录
            private void listView1_DoubleClick(object sender, EventArgs e)
            {
    
                //第一列
                string x1 = this.listView1.SelectedItems[0].SubItems[0].Text.ToString();
    
                //第二列
                string x2 = this.listView1.SelectedItems[0].SubItems[1].Text.ToString();
                this.txtName.Text = x1;
                this.txtPwd.Text = x2;
                btnLogin_Click(sender, e);
            }
    
            #region 导航命令
            private void btnGoTO_Click(object sender, EventArgs e)
            {
                web[tabControl1.SelectedIndex].Navigate(this.combUrl.Text.Trim());
            }
    
            private void btnGoback_Click(object sender, EventArgs e)
            {
    
                web[tabControl1.SelectedIndex].GoBack();
    
            }
    
            private void btnGoF_Click(object sender, EventArgs e)
            {
    
                web[tabControl1.SelectedIndex].GoForward();
    
            }
    
            private void btnRef_Click(object sender, EventArgs e)
            {
                web[tabControl1.SelectedIndex].Refresh();
    
            }
    
            private void btnHome_Click(object sender, EventArgs e)
            {
                web[tabControl1.SelectedIndex].Navigate(new Uri(homeurl));
    
            }
            #endregion
    
            //网址加载后,地址栏刷新
            private void wbBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
            {
                combUrl.Text = web[tabControl1.SelectedIndex].Url.ToString();
                combUrl.Items.Add(combUrl.Text);
                tabControl1.TabPages[tabControl1.SelectedIndex].Text = web[tabControl1.SelectedIndex].DocumentTitle;
            }
    
    
            //按回车导航新地址
            private void combUrl_KeyUp(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                    btnGoTO_Click(sender, e);
            }
            //本窗口打开新地址
            private void wbBrowser_NewWindow(object sender, System.ComponentModel.CancelEventArgs e)
            {
                e.Cancel = true;
                try
                {
                    string url = this.web[tabControl1.SelectedIndex].Document.ActiveElement.GetAttribute("href");
                    this.web[tabControl1.SelectedIndex].Url = new Uri(url);
                }
                catch (Exception ee)
                {
    
                    throw ee;
                }
            }
            //自建导航类
            private void Navigate(string address)
            {
                if (string.IsNullOrEmpty(address)) return;
                if (address.Equals("about:blak")) return;
                if (!address.StartsWith("http://") && !address.StartsWith("https://"))
                {
                    address = "http://" + address;
                }
                try
                {
                    web[tabControl1.SelectedIndex].Navigate(new Uri(address));
    
                }
                catch (System.UriFormatException)
                {
    
                    return;
                }
            }
    
    
    
            //单击最后个tabpage新建Tab页
            private void tabControl1_Click(object sender, EventArgs e)
            {
                int n = tabControl1.TabCount;
                if (tabControl1.SelectedIndex == n - 1)
                {
                    TabPage tp = new TabPage();
                    tp.Controls.Add(web[tabControl1.SelectedIndex]);
                    web[tabControl1.SelectedIndex].Dock = DockStyle.Fill;
                    Navigate(combUrl.Text);
                    tabControl1.TabPages.Insert(n - 1, tp);
                    tabControl1.SelectTab(n - 1);
                    web[tabControl1.SelectedIndex].DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocumentCompleted);
    
                }
            }
    
            private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
            {
                int n = tabControl1.TabCount - 1;
                if (tabControl1.SelectedIndex != n)
                {
    
                }
    
            }
            //加载网页完成后的事件,多次用到
            private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                combUrl.Text = e.Url.ToString();
                tabControl1.SelectedTab.Text = web[tabControl1.SelectedIndex].DocumentTitle;
                loading = false;
            }
    
            //挂机,取消当前顶层焦点控制!可以失去焦点,继续播放
            private void tsbhandup_Click(object sender, EventArgs e)
            {
                //IEBrowser ie = new IEBrowser(web[tabControl1.SelectedIndex]);
    
                //普通变量交互SET 1:  .net数据写入页面中,并显示变量
                //ie.InstallScript("function showinfo(){document.body.innerHTML +='姓名:'+name+'   年龄:'+age;}");
    
                //ie.InstallTrace();//保证新变量能运行
                //ie.__Set("name", "'小明'");//字符串开需加单引号
                //ie.__Set("age", "10");
    
                //ie.InvokeScript("showinfo");
                //普通变量交互GET 2:  显示页面中的变量
                //ie.InstallScript("function getinfo(){if(age<=10){age+=10};document.body.innerHTML +='姓名:'+name+'   年龄:'+age;}");
                //// ie.InstallTrace();//保证新变量能运行
                //ie.InvokeScript("getinfo");
                //labIeGet.Text = string.Format("age={0}", ie.__Get<int>("age"));
    
                //普通变量交互Json变量 3:  Json的变量获取
                //先在页面中定义一个Json变量
    
    
    
    
                //普通变量交互Json变量 4:  写入Json的变量到页面
    
                //服务器Json时间地址:http://lms.chinahrt.com/course/lmsHeart_json.do?userId=b02109bd-6539-4ef7-a0c6-ef1a76cc54bc
                //返回:{"ret":0, "msg":"", "json":{"time":1375064355258}}
    
                //HttpWebRequest request =(HttpWebRequest)HttpWebRequest.Create("http://lms.chinahrt.com/course/lmsHeart_json.do?userId=b02109bd-6539-4ef7-a0c6-ef1a76cc54bc");
                //request.Timeout=5000;
                //request.Method="GET";
                //HttpWebResponse response=(HttpWebResponse)request.GetResponse();
                //StreamReader sr=new StreamReader(response.GetResponseStream());
                //string jsonstr=sr.ReadLine();
    
                //JavaScriptSerializer j = new JavaScriptSerializer();
                //string time = j.Deserialize<string>(jsonstr);
                //MessageBox.Show(jsonstr);
                //置于顶层显示
                //this.TopMost = true;
            }
            //直接学完
            private void tsbCompleted_Click(object sender, EventArgs e)
            {
    
    
                //labIeGet.Text = ie.__Get<string>("positiontime");
                // HtmlDocument doc = web[tabControl1.SelectedIndex].Document;
    
                #region 本方法已经实现c#执行现有javascript函数的功能,实现了“课程学习完毕”,但并未真的学习完毕
                //doc.InvokeScript("doLMSSetValue",new object[]{ "cmi.core.lesson_status", "completed" });
                //doc.InvokeScript("doLMSCommit");
                //doc.InvokeScript("doLMSFinish");
    
                #endregion
    
                #region 试着调用jwplay功能 方法一用webbrowser执行函数
    
                HtmlDocument doc = web[tabControl1.SelectedIndex].Document.Window.Frames[3].Document.Window.Frames[1].Document;//选择到media.htm
                //for (int i = 0; i < doc.Window.Frames.Count; i++)
                //{
                //    MessageBox.Show(doc.Window.Frames[i].Document.Url.ToString());
                //}
                // HtmlDocument doc = web[tabControl1.SelectedIndex].Document.Window.Frames["1"].Document;
                //doc.InvokeScript("flv.scormplay");
                doc.InvokeScript("onComplete");
    
    
                #endregion
    
            }
    
            private void toolStripButton3_Click(object sender, EventArgs e)
            {
                //HtmlDocument doc = web[tabControl1.SelectedIndex].Document;
                //string userId = doc.GetElementById("userId").GetAttribute("value");
                //string userName = doc.GetElementById("userNmae").GetAttribute("value");
                //string entitId = doc.GetElementById("entitId").GetAttribute("value");
                //string courseId = doc.GetElementById("courseId").GetAttribute("value");
                //string itemIndex = doc.GetElementById("itemIndex").GetAttribute("value");
                //string toWait = doc.GetElementById("toWait").GetAttribute("value");
                //string exit = doc.GetElementById("exit").GetAttribute("value");
                //labIeGet.Text = userId + "----" + userName + "----" + entitId + "----" + courseId + "----" + itemIndex + "----" + toWait + "----" + exit;
    
    
    
                //todo:浏览过的网址存盘ctrl+w+t
    
                //todo:双击删除当前tab 或加X按键
    
                //todo:视频下载地址
    
    
    
            }
        }
    }
    

      

  • 相关阅读:
    FORM触发器执行顺序
    Invoke和BeginInvoke理解
    理解AppDomain
    BackgroundWorker学习笔记
    NLog类库使用探索——编程配置
    NLog类库使用探索——详解配置
    NLog类库的使用探索——认识配置+实习小感悟
    深入探讨WPF的ListView控件
    深入理解IOC模式及Unity框架
    网络通信之 字节序转换原理与网络字节序、大端和小端模式
  • 原文地址:https://www.cnblogs.com/hbjohnsan/p/3225523.html
Copyright © 2020-2023  润新知