2009-11-18 131 views
5

快速的问题,我已经开发了特定的论坛C#WPF web浏览器,适用于Windows 7Windows 7任务栏进度

到目前为止任务栏我已经完成:

分页缩略图

跳转列表

图标叠加

现在,当WebBrowser在启动下载时使用IE引擎时,会显示进度对话框, t表示进度将反映在我的应用程序的任务栏按钮中。

这是不可能的吗?谢谢

+0

欢迎来到SO! Heres提示:在提问时使用更多标签。我帮你添加了一些。 –

+0

您是在问如何获得进度或如何将其放入任务栏? –

回答

3

我相信这是Scott Hanselman covered in one of his weekly source code blogs

不知道这是否是你正在寻找或没有。

+0

尽管这个答案已经有几年了,而且链接很有帮助,但是如果你在这里,在这个网站上发布了答案的重要部分,或者你的帖子风险被删除了,那会更好[参见常见问题解答多于一个链接'。](http://stackoverflow.com/faq#deletion)如果您愿意,您可能仍然包含链接,但仅作为“参考”。答案应该独立,不需要链接。 – Taryn

0

我知道如何将它放在任务栏中,我只需要捕获下载进度,以便我可以在任务栏中显示进度。下面是我如何显示导航的片段,文件副本显示时不需要代码,shell会自动选择它。

#region Background Worker 

    void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 
    { 
     this.TaskbarItemInfo.ProgressValue = (double)e.ProgressPercentage/100; 

    } 

    void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     if (e.Cancelled == true) 
     { 
      this.TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Paused; 
     } 
     else if (e.Error != null) 
     { 
      this.TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Error; 
     } 
     else 
     { 
      this.TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None; 
     } 
    } 

    void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
    { 
     for (int i = 1; i <= 100; i++) 
     { 
      Thread.Sleep(100); 

      this.backgroundWorker1.ReportProgress(i,i.ToString()); 
     } 
      } 
     } 
    } 

    #endregion 

所需导航所有这就是是:

private void Browser_Navigated(object sender, WebBrowserNavigatedEventArgs e) 
    { 
     if (backgroundWorker1.IsBusy == false) 
     { 
      backgroundWorker1.RunWorkerAsync(); 

      TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Normal; 
     } 

     if (tabControl1.TabPages.Count > 10 && tabControl1.SelectedTab != null) 
      UpdatePreviewBitmap(tabControl1.SelectedTab); 

,并从窗口加载事件采取:

 this.backgroundWorker1.WorkerReportsProgress = true; 
     this.backgroundWorker1.WorkerSupportsCancellation = true; 
     this.backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork); 
     this.backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted); 
     this.backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged); 

     // 
     TabbedThumbnail preview = new TabbedThumbnail(this.Handle, tabPage.Handle); 
     // 
     preview.TabbedThumbnailActivated += new EventHandler<TabbedThumbnailEventArgs>(preview_TabbedThumbnailActivated); 
     preview.TabbedThumbnailClosed += new EventHandler<TabbedThumbnailEventArgs>(preview_TabbedThumbnailClosed); 
     preview.TabbedThumbnailMaximized += new EventHandler<TabbedThumbnailEventArgs>(preview_TabbedThumbnailMaximized); 
     preview.TabbedThumbnailMinimized += new EventHandler<TabbedThumbnailEventArgs>(preview_TabbedThumbnailMinimized); 
     // 
     TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(preview); 
     // 
     tabControl1.SelectedTab = tabPage; 
     TaskbarManager.Instance.TabbedThumbnail.SetActiveTab(tabControl1.SelectedTab); 
     // 

     scrollEventAdded = false; 

希望这是有道理的。谢谢