Пример #1
0
        private const byte CFU_UNDERLINEHAIRLINE   = 0x0000000A;              /* (*) displayed as ordinary underline	*/

        #endregion

        #endregion

        #region ++ Constructeurs ++
        public WebViewerEx()
        {
            _liensVersHelpActifs = true;
            _navigationEnCour    = false;
            Navigating          += new WebBrowserNavigatingEventHandler(Navigation);
            Navigated           += new WebBrowserNavigatedEventHandler(WebViewerEx_Navigated);
        }
Пример #2
0
        /// <summary>
        /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed.
        /// <example>
        /// webbrowsernavigatedeventhandler.BeginInvoke(sender, e, callback);
        /// </example>
        /// </summary>
        public static IAsyncResult BeginInvoke(this WebBrowserNavigatedEventHandler webbrowsernavigatedeventhandler, Object sender, WebBrowserNavigatedEventArgs e, AsyncCallback callback)
        {
            if (webbrowsernavigatedeventhandler == null)
            {
                throw new ArgumentNullException("webbrowsernavigatedeventhandler");
            }

            return(webbrowsernavigatedeventhandler.BeginInvoke(sender, e, callback, null));
        }
Пример #3
0
        protected virtual void OnNavigated(WebBrowserNavigatedEventArgs e)
        {
            WebBrowserNavigatedEventHandler handler = (WebBrowserNavigatedEventHandler)this.Events[NavigatedEventKey];

            if (handler != null)
            {
                handler(this, e);
            }
        }
Пример #4
0
        protected virtual void OnNavigated(WebBrowserNavigatedEventArgs e)
        {
            WebBrowserNavigatedEventHandler navigatedEventHandler = (WebBrowserNavigatedEventHandler)this.Events[RadWebBrowserItem.NavigatedEventKey];

            if (navigatedEventHandler == null)
            {
                return;
            }
            navigatedEventHandler((object)this, e);
        }
Пример #5
0
        public QQLogon()
        {
            InitializeComponent();

            Uri uri = new Uri("http://ui.ptlogin2.qq.com/cgi-bin/login?appid=549000912&style=13&s_url=http://qun.qzone.qq.com/group");

            qqLogonPanel.Navigate(uri);
            WebBrowserNavigatedEventHandler handle = new WebBrowserNavigatedEventHandler(Wb_urlChange_HandlerAsync);

            qqLogonPanel.Navigated += handle;
        }
Пример #6
0
        private void OnWebBrowserNavigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            URL = webBrowser.Url.AbsoluteUri;
            WebBrowserNavigatedEventHandler handler = Navigated;

            if (handler != null)
            {
                handler(sender, e);
            }
            var menuItem = (ToolStripItem)Tag;

            Text = Title = menuItem.Text = webBrowser.Document.Title;
        }
 public void OnNavigated(WebBrowserNavigatedEventHandler handler)
 {
     _webBrowserNavigatedEventHandler = handler;
 }
Пример #8
0
        public void Open(string url, string method, string data, dynamic callback = null)
        {
            WebBrowserNavigateErrorEventHandler     fail      = null;
            WebBrowserDocumentCompletedEventHandler completed = null;
            WebBrowserNavigatedEventHandler         navigated = null;

            navigationType = "Other";
            var frameCount = 0;
            var done       = false;

            navigated = delegate(object sender, WebBrowserNavigatedEventArgs e)
            {
                browser.Document.Window.Error += delegate(object sender2, HtmlElementErrorEventArgs e2)
                {
                    e2.Handled = true;

                    if (OnError != null)
                    {
                        dynamic err = new ExpandoObject();
                        err.file = e2.Url.AbsoluteUri;
                        err.line = e2.LineNumber;

                        ObjectHelpers.DynamicInvoke(OnError, e2.Description, new dynamic[] { err });
                    }
                };
            };

            fail = new WebBrowserNavigateErrorEventHandler(delegate(object s, WebBrowserNavigateErrorEventArgs e)
            {
                browser.NavigateError     -= fail;
                browser.DocumentCompleted -= completed;
                browser.Navigated         -= navigated;

                if (callback != null)
                {
                    ObjectHelpers.DynamicInvoke(callback, "fail");
                }

                done = true;

                if (OnLoadFinished != null)
                {
                    ObjectHelpers.DynamicInvoke(OnLoadFinished, "fail");
                }
                navigationType = "Unknown";
            });



            completed = new WebBrowserDocumentCompletedEventHandler(delegate(object s, WebBrowserDocumentCompletedEventArgs e)
            {
                frameCount++;

                var complete = false;

                if (browser.Document != null)
                {
                    HtmlWindow win = browser.Document.Window;
                    if (!(win.Frames.Count > frameCount && win.Frames.Count > 0))
                    {
                        complete = true;
                    }
                }
                else
                {
                    complete = true;
                }


                if (complete)
                {
                    EvaluateAsync(ResourceHelpers.ReadResource("browser/bootstrap.js"));
                    browser.NavigateError     -= fail;
                    browser.DocumentCompleted -= completed;
                    frame              = browser.Document.Window;
                    browser.Navigated -= navigated;

                    var width    = browser.Document.Body.ScrollRectangle.Width;
                    var height   = browser.Document.Body.ScrollRectangle.Height;
                    browser.Size = new Size(width, height);

                    if (callback != null)
                    {
                        ObjectHelpers.DynamicInvoke(callback, "success");
                    }

                    done = true;

                    if (OnLoadFinished != null)
                    {
                        ObjectHelpers.DynamicInvoke(OnLoadFinished, "success");
                    }
                    navigationType = "Unknown";
                }
            });

            var headers = string.Empty;

            if (CustomHeaders != null)
            {
                foreach (var name in CustomHeaders.GetDynamicMemberNames())
                {
                    headers += string.Format("{0}: {1}\r\n", (string)name, CustomHeaders[name]);
                }
            }

            switch (method)
            {
            case "GET":
                browser.NavigateError     += fail;
                browser.DocumentCompleted += completed;
                browser.Navigated         += navigated;
                browser.Navigate(url, "", null, headers);
                break;

            case "POST":
                if (string.IsNullOrEmpty(data))
                {
                    data = " ";
                }
                browser.NavigateError     += fail;
                browser.DocumentCompleted += completed;
                browser.Navigated         += navigated;
                browser.Navigate(url, "", global::System.Text.Encoding.UTF8.GetBytes(data), headers);
                break;

            default:
                throw new Exception();
            }

            while (callback == null && !done)
            {
                Thread.Sleep(10);
                Application.DoEvents();
            }
        }
Пример #9
0
        async Task StartProcess()
        {
            try
            {
                documentComplete = new WebBrowserDocumentCompletedEventHandler((s, e) =>
                {
                    if (webLayout.DocumentText.Contains("res://ieframe.dll"))
                    {
                        tcs.SetException(new Exception("Lỗi không có kết nối internet"));
                        return;
                    }
                    if (!tcs.Task.IsCompleted)
                    {
                        HtmlDocument doc   = webLayout.Document;
                        HtmlElement head   = doc.GetElementsByTagName("head")[0];
                        HtmlElement script = doc.CreateElement("script");
                        script.SetAttribute("text",
                                            "window.alert = function(e){" +
                                            "if(e.indexOf('https://stackoverflow.com/') != -1)" +
                                            "{ window.location.replace(" + url + ");}" +
                                            "else {}}");
                        head.AppendChild(script);
                        webLayout.DocumentCompleted -= documentComplete;
                        tcs.SetResult(v);
                    }
                });

                documentNavigatedComplete = new WebBrowserNavigatedEventHandler((s, e) =>
                {
                    HtmlDocument doc   = webLayout.Document;
                    HtmlElement head   = doc.GetElementsByTagName("head")[0];
                    HtmlElement script = doc.CreateElement("script");
                    script.SetAttribute("text",
                                        "window.alert = function(e){" +
                                        "if(e.indexOf('Chuyển Khoản Thành Công') != -1) {}" +
                                        "else {window.location.replace('https://www.google.com.vn/');}}");
                    head.AppendChild(script);
                    webLayout.Navigated -= documentNavigatedComplete;
                });

                isFinishProcess = false;
                AccountData userAccount  = new AccountData();
                var         adminAccount = new AdminAccount();

                var process = checkAccountAdmin(ref adminAccount);
                do
                {
                    switch (process)
                    {
                    case "OpenWeb":
                        CreateSyncTask();
                        webLayout.Navigate(url);
                        await tcs.Task;
                        await Task.Delay(5000);

                        process = "Login";
                        if (webLayout.Url.ToString() == user_URL)
                        {
                            process = "AccessToDaily";
                            break;
                        }

                        if (webLayout.Url.ToString() != index_URL)
                        {
                            SendNotificationForError(
                                "Trang Web Không Truy Cập Được",
                                $"{web_name} không thể truy cập");

                            process = "Finish";
                            break;
                        }
                        break;

                    case "Login":
                        CreateSyncTask();
                        Login(adminAccount);
                        await tcs.Task;
                        await Task.Delay(5000);

                        if (webLayout.Url.ToString() == index_URL)
                        {
                            if (!Globals.isSentNotification_GD)
                            {
                                Globals.isSentNotification_GD = true;
                                SendNotificationForError("Account Admin Đăng Nhập Lỗi",
                                                         $"{web_name} : Account admin đăng nhập web bị lỗi");
                            }
                            process = "Finish";
                            break;
                        }
                        Globals.isSentNotification_GD = false;
                        process = "AccessToDaily";
                        break;

                    case "AccessToDaily":
                        CreateSyncTask();
                        AccessToDaily();
                        await tcs.Task;
                        await Task.Delay(5000);

                        if (webLayout.Url.ToString() != agencies_URL)
                        {
                            SendNotificationForError(
                                "Truy cập vào đại lý bị lỗi",
                                $"{web_name} : Trang đại lý bị lỗi");
                            process = "Finish";
                            break;
                        }

                        process = "SearchUser";
                        break;

                    case "SearchUser":
                        currentMessage = data.FirstOrDefault();
                        userAccount    = SearchUser();
                        if (userAccount == null)
                        {
                            // save record
                            SaveRecord($"Không tìm thấy user {web_name} : user id {currentMessage.Account}");

                            data.Remove(currentMessage);
                            if (data.Count == 0)
                            {
                                process = "Finish";
                                break;
                            }
                            process = "OpenWeb";
                            break;
                        }
                        process = "CheckAmountAccount";
                        break;

                    case "CheckAmountAccount":
                        var isAmountEnough = CheckAmountAccount();
                        await Task.Delay(3000);

                        if (!isAmountEnough)
                        {
                            if (!Globals.isSentNotification_GD)
                            {
                                Globals.isSentNotification_GD = true;
                                SendNotificationForError("Account không đủ số tiền tối thiểu",
                                                         $"{web_name} : Account admin không đủ số tiền tối thiểu");
                            }
                            process = "Finish";
                            break;
                        }
                        Globals.isSentNotification_GD = false;
                        process = "PayIn";
                        break;

                    case "PayIn":
                        PayIn(userAccount);
                        await Task.Delay(2000);

                        CreateSyncTask();
                        PayInSubmit();
                        webLayout.Navigated += documentNavigatedComplete;
                        await tcs.Task;
                        await Task.Delay(5000);

                        if (!webLayout.Url.ToString().Contains(agencies_URL))
                        {
                            var errorMessage = $"Cộng tiền account { currentMessage.Account } bị lỗi";
                            SaveRecord(errorMessage);
                            SendNotificationForError(
                                "Cộng tiền không thành công",
                                $"{web_name} : Cộng tiền account { currentMessage.Account } bị lỗi");
                        }
                        else
                        {
                            SaveRecord();
                            SendNotificationForError(
                                "Cộng tiền thành công",
                                $"{web_name} : Cộng tiền thành công account { currentMessage.Account }, " +
                                $"số tiền { currentMessage.Money }");
                        }

                        data.Remove(currentMessage);
                        if (data.Count == 0)
                        {
                            process = "Finish";
                            break;
                        }
                        process = "OpenWeb";
                        break;

                    case "Finish":
                        isFinishProcess = true;
                        break;
                    }
                } while (!isFinishProcess);
            }
            catch (Exception ex)
            {
                isFinishProcess = true;
                if (ex.Message.Contains("Lỗi không có kết nối internet"))
                {
                    DialogResult dialog = MessageBox.Show("Hãy kiểm tra internet và thử lại."
                                                          , "Mất kết nối internet", MessageBoxButtons.OK);
                    if (dialog == DialogResult.OK)
                    {
                        Application.ExitThread();
                    }
                }

                if (webLayout.Url.ToString().Contains("stackoverflow"))
                {
                    SendNotificationForError(
                        "Lỗi Có Người Đăng Nhập",
                        $"{web_name} : Có người đăng nhập ở máy khác");
                }
                else
                {
                    SendNotificationForError(
                        "Lỗi không xác định",
                        $"{web_name} : {ex.Message}");
                }
            }

            return;
        }