public bool SaveDirect() { try { var provider = CoreImpl.applicationServiceProvider; var _UO = provider.GetService(CoreImpl.tyIBrowserManager); if (_UO == null) { return(false); } var browserManager = new IBrowserManager(_UO); var contentBrowser = browserManager.ActiveBrowser; if (contentBrowser == null) { return(false); } helpBrowse = new IHelpViewerBrowser(contentBrowser._UO); var meta = helpBrowse.TopicMetadata; this.Title = meta.HelpId; var ie = helpBrowse.WebBrowser; var location_Text = LoaderImpl.SaveLocation; if (string.IsNullOrEmpty(location_Text)) { location_Text = Environment.CurrentDirectory; } var id = meta.HelpId; var fname = EncodeAsFileName(id); location_Text = System.IO.Path.Combine(location_Text, fname + ".html"); var doc = (HTMLDocument)ie.Document; dynamic item = doc.getElementsByTagName("html"); var html = (string)item[0].outerHTML; System.IO.File.WriteAllText(location_Text, html, Encoding.UTF8); return(true); } catch (Exception ex) { LoaderImpl.ShowException(ex); return(false); } }
private void Real_Browser_LoadCompleted(object sender, NavigationEventArgs e) { try { // remove logo,copyright,annoy note dynamic doc = browser.Document; for ( ; ;) { dynamic item = doc.getElementsByClassName("OH_feedbacklink"); for (int i = 0; i < item.length; i++) { var _this = item[i]; var pr = _this.parentNode; if (pr == null) { continue; } pr.removeChild(_this); } if (item.length == 0) { break; } } for ( ; ;) { dynamic item = doc.getElementsByClassName("OH_disclaimersSection"); for (int i = 0; i < item.length; i++) { var _this = item[i]; var pr = _this.parentNode; if (pr == null) { continue; } pr.removeChild(_this); } if (item.length == 0) { break; } } for (; ;) { dynamic item = doc.getElementsByClassName("OH_CodeSnippetToolBarText"); if (item.length == 0) { break; } bool bk = true; for (int i = 0; i < item.length; i++) { var _this = item[i]; if (_this.style.display != "none") { bk = false; _this.style.display = "none"; } /*var pr = _this.parentNode; * if (pr == null) continue; * pr.removeChild(_this);*/ } if (bk) { break; } } if (e != null && !pAuto.IsChecked.GetValueOrDefault()) { LoaderImpl.Unmask(); return; } for (; !sFooter.IsChecked.GetValueOrDefault();) { dynamic item = doc.getElementsByClassName("OH_footer"); for (int i = 0; i < item.length; i++) { var _this = item[i]; var pr = _this.parentNode; if (pr == null) { continue; } pr.removeChild(_this); } if (item.length == 0) { break; } } for ( ; !sAlso.IsChecked.GetValueOrDefault();) { dynamic item = doc.getElementById("see_also"); if (item == null) { break; } var pr = item.parentNode; if (pr != null) { var sb = pr.nextSibling; if (sb != null && sb.tagName.ToLower() == "dl") { if (sb.parentNode != null) { sb.parentNode.removeChild(sb); } } if (pr.tagName.ToLower().StartsWith("h")) { if (pr.parentNode != null) { pr.parentNode.removeChild(pr); } } } } for ( ; !sRelated.IsChecked.GetValueOrDefault();) { dynamic item = doc.getElementById("related_topics"); if (item == null) { break; } var pr = item.parentNode; if (pr != null) { var sb = pr.nextSibling; if (sb != null && sb.tagName.ToLower() == "dl") { if (sb.parentNode != null) { sb.parentNode.removeChild(sb); } } if (pr.tagName.ToLower().StartsWith("h")) { if (pr.parentNode != null) { pr.parentNode.removeChild(pr); } } } } LoaderImpl.Unmask(); } catch (Exception ex) { LoaderImpl.Unmask(); LoaderImpl.ShowException(ex); } }
public static void Worker(string args) { System.Windows.MessageBox.Show(args); if (myTools != null) { return; } myTag = new object(); try { System.Windows.Forms.Application.EnableVisualStyles(); LoadSettings(); var appAssembly = Application.Current.GetType().Assembly; // init types CoreImpl.tyBrowserDockView = typeof(Microsoft.VisualStudio.Help.Viewer.DockViews.BrowserDockView); CoreImpl.tyIDockViewManager = appAssembly.GetType(IDockViewManager._FullName); CoreImpl.tyIBrowserManager = appAssembly.GetType(IBrowserManager._FullName); CoreImpl.tyIContentBrowser = appAssembly.GetType(IContentBrowser._FullName); // get ApplicationServiceProvider var pi = appAssembly.GetType(ApplicationServiceProvider._FullName).GetProperty("Instance", BindingFlags.Public | BindingFlags.Static); var _UO = pi.GetValue(null, null); CoreImpl.applicationServiceProvider = new ApplicationServiceProvider(_UO); Application.Current.MainWindow.PreviewKeyDown += MainWindow_KeyDown; var serviceUO = CoreImpl.applicationServiceProvider.GetService(CoreImpl.tyIDockViewManager); if (serviceUO != null) { try { var dockMgr = new IDockViewManager(serviceUO); AdjustHlpViwContextMenu(dockMgr.ActiveView); dockMgr.Activated += (aa, bb) => { AdjustHlpViwContextMenu(aa); }; } catch (Exception ex) { LoaderImpl.ShowException(ex); } } var ty = Application.Current.MainWindow.GetType(); var ftb = ty.GetField("viewerToolBar", BindingFlags.Instance | BindingFlags.NonPublic); if (ftb == null) { System.Windows.MessageBox.Show("viewerToolBar field is not found"); return; } var tb = ftb.GetValue(Application.Current.MainWindow) as FrameworkElement; if (tb == null) { System.Windows.MessageBox.Show("viewerToolBar instance not found"); return; } var fbd = tb.GetType().GetField("mainToolBar", BindingFlags.Instance | BindingFlags.NonPublic); if (fbd == null) { System.Windows.MessageBox.Show("viewerToolBar does not contain mainToolBar"); return; } var bd = fbd.GetValue(tb) as Border; if (bd == null) { System.Windows.MessageBox.Show("mainToolBar is not a Border"); return; } var wp = bd.Child as WrapPanel; if (bd == null) { System.Windows.MessageBox.Show("mainToolBar does not have a WrapPanel child"); return; } var mytb = new MainTool() { Margin = new Thickness(16, 0, 0, 0) }; wp.Children.Add(mytb); myTools = mytb; var fly = ty.GetField("LayoutRoot", BindingFlags.Instance | BindingFlags.NonPublic); if (fly == null) { System.Windows.MessageBox.Show("LayoutRoot field is not found"); return; } var layout = fly.GetValue(Application.Current.MainWindow) as Grid; if (layout == null) { System.Windows.MessageBox.Show("LayoutRoot is not a Grid"); return; } var ViewerStatusBar = layout.Children.OfType <FrameworkElement>().FirstOrDefault(d => d.GetType().Name == "ViewerStatusBar"); if (ViewerStatusBar != null) { var navi = new NaviTool(); navi.Height = ViewerStatusBar.ActualHeight; Grid.SetColumn(navi, Grid.GetColumn(ViewerStatusBar)); Grid.SetRow(navi, Grid.GetRow(ViewerStatusBar)); Grid.SetRowSpan(navi, Grid.GetRowSpan(ViewerStatusBar)); Grid.SetColumnSpan(navi, Grid.GetColumnSpan(ViewerStatusBar)); layout.Children.Remove(ViewerStatusBar); navi.StubContent = ViewerStatusBar; layout.Children.Add(navi); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }