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(); }
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); }
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(); } }
private void Browser_FormClosed(object sender, FormClosedEventArgs e) { // Чет не срабатывает //System.Environment.Exit(0); DokanInit.End(); }
private void toolStripMenuItem1_Click(object sender, EventArgs e) { DokanInit.End(); Close(); }
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); } }