掛機軟件開發(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:視頻下載地址



        }
    }
}
相關文章
相關標籤/搜索