Пример #1
0
        public Browser()
        {
            InitializeComponent();

            // Важная процедура проверки установленности dokan
            if (!DokanInit.Test())
            {
                Log.Warn("Dokan not installed");
                if (DokanInit.InstallLib() == 0)
                {
                    Log.Warn("Dokan fail install?");
                    notifyIcon1.Visible = false;
                    Environment.Exit(0);
                }
            }

            // эта штка говорит что мы не показываем форму при запуске
            Visible = true;
            IsVisibilityChangeAllowed = true;

            DokanInit.End();

            ChangeDriverName();

            ToAuthVkPage();
        }
Пример #2
0
 protected override void WndProc(ref Message m)
 {
     if (m.Msg == WM_QUERYENDSESSION || m.Msg == WM_ENDSESSION || m.Msg == WM_SYSCOMMAND)
     {
         DokanInit.End();
     }
     base.WndProc(ref m);
 }
Пример #3
0
 private void notifyIcon1_DoubleClick(object sender, EventArgs e)
 {
     if (_hasUpdate)
     {
         CheckUpdate.Upgrade();
     }
     else if (DokanInit.IsWorking())
     {
         System.Diagnostics.Process.Start("explorer", Default.MountPoint + @":\\");
     }
     else
     {
         IsVisibilityChangeAllowed = true;
         Show();
         WindowState = FormWindowState.Normal;
         Focus();
     }
 }
Пример #4
0
 private void Browser_FormClosed(object sender, FormClosedEventArgs e)
 {
     // Чет не срабатывает
     //System.Environment.Exit(0);
     DokanInit.End();
 }
Пример #5
0
 private void toolStripMenuItem1_Click(object sender, EventArgs e)
 {
     DokanInit.End();
     Close();
 }
Пример #6
0
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            try
            {
                IsVisibilityChangeAllowed = true;

                Log.Debug("Document load completed: " + webBrowser1.Url.AbsoluteUri);
                if (_webBrowserLogoutWait == 1)
                {
                    HtmlElement logout = webBrowser1.Document?.GetElementById("logout_link");
                    if (logout != null)
                    {
                        Log.Debug("Document load completed have logout lonk: " + logout.GetAttribute("href"));
                        webBrowser1.Url       = new Uri(logout.GetAttribute("href"));
                        _webBrowserLogoutWait = 2;
                    }
                }
                else if (_webBrowserLogoutWait == 2 && webBrowser1.Url.AbsoluteUri.IndexOf("login", StringComparison.Ordinal) > -1)
                {
                    _webBrowserLogoutWait = 0;
                    ToAuthVkPage();
                    Show();
                    WindowState = FormWindowState.Normal;
                }
                else
                {
                    // Первый запуск не авторизовывает приложение
                    // https://oauth.vk.com/authorize?client_id=1234&display=popup&response_type=token&scope=audio,friends&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html
                    // и ожидаем ввода логина
                    // Когда вход осуществлен переадресация происходит заголовками и мы сразу получаем
                    // https://oauth.vk.com/blank.html
                    // Прикинь, если аккаунт в вк заблокировали то показывается
                    // https://oauth.vk.com/login?act=blocked

                    string       locationUrl = webBrowser1.Url.AbsoluteUri;
                    const string successUrl  = "https://oauth.vk.com/blank.html";
                    const string blockedUrl  = "https://oauth.vk.com/login?act=blocked";

                    if (locationUrl.Length >= blockedUrl.Length && locationUrl.Substring(0, blockedUrl.Length) == blockedUrl)
                    {
                        MessageBox.Show(Resources.Browser_webBrowser1_DocumentCompleted_Banned, Resources.Message_Error,
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Close();
                        return;
                    }

                    if (locationUrl.Length < successUrl.Length || locationUrl.Substring(0, successUrl.Length) != successUrl)
                    {
                        Show();
                        WindowState = FormWindowState.Normal;
                        return;
                    }
                    // все прошло ок
                    Hide();

                    string   fullString = (string)locationUrl.Split('#').GetValue(1);
                    string[] paramSrc   = fullString.Split('&');

                    Dictionary <string, string> sessionData = new Dictionary <string, string>();
                    for (int i = 0; i < paramSrc.Length; i++)
                    {
                        var curP = paramSrc[i].Split('=');
                        sessionData.Add(curP[0], curP[1]);
                    }

                    var api = VkapiLibrary.Instance;
                    api.AppId        = Default.VKAppId;
                    api.Expire       = Convert.ToInt32(sessionData["expires_in"]);
                    api.UserId       = Convert.ToInt32(sessionData["user_id"]);
                    api.AccessTokien = (string)sessionData["access_token"];

                    var apiResult = (JArray)Vkapi.Instance.StartTaskSync(new ApiQuery("users.get", new Dictionary <string, string> {
                        { "uids", sessionData["user_id"] }
                    }));
                    var user = apiResult[0].ToObject <SerializationObject.User>();

                    ChangeDriverName();
                    notifyIcon1.Text = @"VKDrive: " + user.FirstName + @" " + user.LastName;
#if !DEBUG
                    SendStats();
#endif
                    DokanInit.Start();
                }
            }
            catch (Exception ex)
            {
                Log.Fatal("webBrowser1_DocumentCompleted exception", ex);
                MessageBox.Show(ex.Message);
            }
        }