精华内容
下载资源
问答
  • 原文:WebBrowser控件应用:播放PPT文件一开始想的是用webform来做,用iframe加载文件,把ppt文件另存成htm,然后播放。 可是后来发现,的程序不大容易控制,所以改用winform。 在winform下也有不同的选择,首先...
    原文:WebBrowser控件应用:播放PPT文件

    一开始想的是用webform来做,用iframe加载文件,把ppt文件另存成htm,然后播放。 可是后来发现,的程序不大容易控制,所以改用winform

    winform下也有不同的选择,首先可以直接生成一个OfficePPTAppellation对象,然后随你怎么播放都可以了,还能动态编辑。不过对于小项目,觉得这样有点麻烦了。后来就选择使用webbrowder控件来播放。

    WebBrowser控件真是个好玩意,出了htm,很多格式都没问题。图片啊,word啊什么的都能跑。Ppt自然也可以,flashavi也行(嵌入一次就好了), 除了第一次播放的时候有个询问是否打开,以后播放的问题不大。

    Webbrowser控件之所以能播放,其实还是调用的客户端上安装的组件。

    但是在真正做的时候就遇到一个问题:每次播放的PPT都只到第二页,然后就不能自动循环播放了。另存了pps文件,也是不行。后来发现,只要用鼠标点击一次下一页,其他就没有问题了。

    解决的办法有两个

    1:调试为什么停下来不播放了,解决根本。

       OnNavigating事件里面发现,每次播放ppt时的地址居然是这样的:path/xx.ppt#3 后边的3就是当前页号。这个倒是和播放htm传个id什么的类似。根据这个信息,主动调用到某一个页面是没有问题了。这是个意外的发现。继续调试。从页面第一次加载,看起来一切正常,就是播放到第二个之后停止自动播放。

        根据传地址的格式,我尝试一开始就播放第二页,可是结果一样,第三页的时候停止。看来,可不是从第几页开始的问题,而是他就只能播放到第二页,然后停止。

        这时候我想看看能不能通过webbrowser所加载的组建来处理。通常情况下,比如加载一个htm页面,那么webbrowser.Document对象就是htm的内容,然后可以遍历整个htm的对象,做一些操作。那么,如果webbrowser加载的是PPT的话,这个Document属性是什么呢?是否可以通过这个对象来执行ppt播放呢?他应该提供这样恶API的。

        于是跟踪看看,结果发现它什么也不是,是个null。在webbrowser中找不到播放ppt的对象,也就是无法调用其api了(在webbrowser其他的属性里面,能找到一个basedocm对象,但是也无法使用)。

    2:模拟鼠标点击,也算是解决了。

       第一种方法不能解决,就只有下x一点,模拟鼠标点击了。在每次加载完PPT之后,模拟鼠标点击“下一页”。这个按钮就在整个webbrowser控件的右下角。

       模拟方法比较简单,就是引入user32.dll,然后组装一下就好了。

       这是个简单的代码:

           public class VirtualMouse

        {

            [DllImport("user32.dll")]

            static extern bool SetCursorPos(int X, int Y);

            [DllImport("user32.dll")]

            static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);

            [Flags]

            public enum MouseEventFlag : uint

            {

               Move = 0x0001,

                LeftDown = 0x0002,

                LeftUp = 0x0004,

                RightDown = 0x0008,

                RightUp = 0x0010,

                MiddleDown = 0x0020,

                MiddleUp = 0x0040,

                XDown = 0x0080,

                XUp = 0x0100,

                Wheel = 0x0800,

                VirtualDesk = 0x4000,

                Absolute = 0x8000

            }

            public void SetCursorPosition(int x, int y)

            {

                VirtualMouse.SetCursorPos(x, y);

            }

            public void MouseEvent(MouseEventFlag flag)

            {

                mouse_event(flag, 0, 0, (uint)0, (UIntPtr)0);

            }

        

        }

       剩下的问题就简单了,直接计算一下那个按钮的位置,然后模拟点击,done

       VirtualMouse vm = new VirtualMouse();

                vm.SetCursorPosition(x, y);

                vm.MouseEvent(VirtualMouse.MouseEventFlag.LeftDown);

                System.Threading.Thread.Sleep(500);

                vm.MouseEvent(VirtualMouse.MouseEventFlag.LeftUp);

    posted on 2014-06-14 13:21 NET未来之路 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/3788163.html

    展开全文
  • 为什么其他都可以拦截到,就淘宝的怎么都拦截获取不到啊。求助。怎么拦截淘宝的json 回传的xls文件 下载到指定默认的位置 看到了很多类似帖子,但都没看到一个有正确的解决办法 求助啊
  • 1 用WebBrowser控件object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">object>button onClick="WebBrowser.ExecWB(4,1)"> 另存为...button> 
    1 用WebBrowser控件
    <object id="WebBrowser" width=0 height=0
                classid
    ="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>
    <button onClick="WebBrowser.ExecWB(4,1)">
                另存为...
    </button>
     
    2  定义一个名为"tableExcel"的表单,再定义一个按钮来onClick。
    对JS中的excel.xls可以改为.doc等形式
    <script type="text/javascript"> 
    function saveCode(obj) 
              
    var winname = window.open('''_blank''top=10000'); 
              
    var strHTML = document.all.tableExcel.innerHTML; 
              winname.document.open(
    'text/html''replace'); 
              winname.document.writeln(strHTML); 
              winname.document.execCommand(
    'saveas','','excel.xls'); 
              winname.close(); 
    }
     
    </script> 

    3 将页面中指定表格的数据在Excel中打开, 使用ActiveXObject
    <SCRIPT   LANGUAGE= "javascript" >  
    function AutomateExcel() {  

        
    var oXL = new ActiveXObject( "Excel.Application");   //创建应该对象  
        var oWB = oXL.Workbooks.Add();                       //新建一个Excel工作簿
        var oSheet = oWB.ActiveSheet;                        //指定要写入内容的工作表为活动工作表
        var table = document.getElementById("data");                       //指定要写入的数据源的id
        var hang = table.rows.length;                        //取数据源行数
        var lie = table.rows(0).cells.length;                //取数据源列数

        
    //Add table headers going cell by cell.  
        for (i=0;i <hang;i++{//在Excel中写行
        for (j=0;j <lie;j++{//在Excel中写列
            //定义格式
            oSheet.Cells(i+1,j+1).Font.Bold = true;//加粗
            oSheet.Cells(i+1,j+1).Font.Size = 10;//字体大小
            oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText;//向单元格写入值
        }
      
        }
     
         
        oXL.Visible 
    = true;  
        oXL.UserControl 
    = true;  
    }
      
    </SCRIPT>


    4 定义一个名为"tableID"的表单,再用一个按钮onClick
    <script type="text/javascript">
                
    function table2xls() {  
                
              
    function String.prototype.Trim() {
                  
    return this.replace(/(^s*)|(s*$)/g,"");
              }
      
          
                 
    try {  
                
    var e = document.getElementById("tableID");
                
    var s = "";
                
                
    for (var j=0; j<e.rows.length; j++{  
                  
    if (e.rows[0].cells[0].innerText.Trim() == ""{  
                      
    for (var i=1; i<e.rows[j].cells.length; i++)  
                        s 
    += e.rows[j].cells[i].innerText.Trim() +" ";  
                  }
     else {  
                      
    for (var i=0; i<e.rows[j].cells.length; i++)  
                    s 
    += e.rows[j].cells[i].innerText.Trim() +" ";  
                     }

                     
                  s 
    += " ";  
                }

                  
                
    var xlsWindow = window.open("","","width=0,height=0");  
                xlsWindow.document.write(s);  
                xlsWindow.document.close();  
                xlsWindow.document.execCommand(
    'Saveas',true,'%homeDrive%/Date.txt')  
                xlsWindow.close(); 
              }
    catch(e){}  
          }

    </script>
    展开全文
  • 在vs2003上就试图做过,苦于经常会有这种情况出现:当自治的浏览器遇到弹出窗口时无法捕获新的弹出窗口,于是乎新的弹出窗口仍旧用ie(或其他系统默认浏览器)打开,在研究vs2005的WebBrowser控件时发现有NewWindow...

    引言
    很早就有搞一个浏览器的想法了,在vs2003上就试图做过,苦于经常会有这种情况出现:当自治的浏览器遇到弹出窗口时无法捕获新的弹出窗口,于是乎新的弹出窗口仍旧用ie(或其他系统默认浏览器)打开,在研究vs2005的WebBrowser控件时发现有NewWindow事件,于是乎兴奋不已,决定用这个分页浏览器体验一下vs2005。
    实现功能
    预览图如下:
    当前浏览器的"另存为","打印","打印御览","页面设置",刷新,前进,后退等等。几乎都是控件封装好了的,没有几句代码。
    浏览器的分页功能。当浏览器有NewWindow激发时产生新的一页。主要依靠NewWindow事件。
    当前页面的状态。例如标题,状态栏等。
    实现过程以及关键点
    新建一个vs2005的windows applaction项目
    界面
    一个MenuStrip实现最上面的菜单。
    两个ToolStrip分别是工具栏和地址栏。
    一个TabControl也就是浏览器的主体了,它的每个TabPage就是每一个分页了。
    一个StatusStrip也就是状态栏了。
    另外为了使窗体大小变化时控件也随着变化注意使用控件的dock属性。
    搭成如下界面:
    顺便说一句和vs2003不同的是vs2005把例如
    this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
    this.saveasToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
    this.printToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.printPreToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
    this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    这些通过我们拖拽控件,系统生成的界面代码分离出来统一放在叫*.Designer.cs文件里了,详见事例代码中的Form1.Designer.cs文件。
    辅助方法
    #region //辅助方法
    /// <summary>
    /// 当在浏览器地址栏敲"回车"时当前浏览器重定向到指定url(tscbUrl.Tex)
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void tscbUrl_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Enter)
    {
    newCurrentPageUrl(tscbUrl.Text);
    }
    }
    /// <summary>
    /// 新建空白页
    /// </summary>
    private void newPage()
    {
    tscbUrl.Text = "about:blank";
    TabPage mypage = new TabPage();
    WebBrowser tempBrowser = new WebBrowser();
    tempBrowser.Navigated +=
    new WebBrowserNavigatedEventHandler(tempBrowser_Navigated);
    tempBrowser.NewWindow +=
    new CancelEventHandler(tempBrowser_NewWindow);
    tempBrowser.ProgressChanged +=
    new WebBrowserProgressChangedEventHandler(tempBrowser_ProgressChanged);
    tempBrowser.StatusTextChanged +=
    new EventHandler(tempBrowser_StatusTextChanged);
    tempBrowser.Dock = DockStyle.Fill;
    mypage.Controls.Add(tempBrowser);
    tabControl1.TabPages.Add(mypage);
    tabControl1.SelectedTab = mypage;
    }
    /// <summary>
    /// 临时浏览器进度变化事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    void tempBrowser_ProgressChanged(object sender,
    WebBrowserProgressChangedEventArgs e)
    {
    toolStripProgressBar1.Maximum = (int)e.MaximumProgress;
    toolStripProgressBar1.Value = (int)e.CurrentProgress;
    }
    /// <summary>
    /// 新建一页并定向到指定url
    /// </summary>
    /// <param name="address">新一页的浏览器重新定向到的url</param>
    private void newPage(string address)
    {
    TabPage mypage = new TabPage();
    WebBrowser tempBrowser = new WebBrowser();
    tempBrowser.Navigated +=
    new WebBrowserNavigatedEventHandler(tempBrowser_Navigated);
    tempBrowser.NewWindow += new CancelEventHandler(tempBrowser_NewWindow);
    tempBrowser.StatusTextChanged +=
    new EventHandler(tempBrowser_StatusTextChanged);
    tempBrowser.ProgressChanged +=
    new WebBrowserProgressChangedEventHandler(tempBrowser_ProgressChanged);
    tempBrowser.Url = getUrl(address);
    tempBrowser.Dock = DockStyle.Fill;
    mypage.Controls.Add(tempBrowser);
    tabControl1.TabPages.Add(mypage);
    }
    /// <summary>
    /// 获取当前浏览器
    /// </summary>
    /// <returns>当前浏览器</returns>
    private WebBrowser getCurrentBrowser()
    {
    WebBrowser currentBrowser = (WebBrowser)tabControl1.SelectedTab.Controls[0];
    return currentBrowser;
    }
    /// <summary>
    /// 处理字符串为合法url
    /// </summary>
    /// <param name="address"></param>
    /// <returns></returns>
    private Uri getUrl(string address)
    {
    string tempaddress = address;
    if ((!address.StartsWith("http://")) &&
    (!address.StartsWith("https://")) && (!address.StartsWith("ftp://")))
    {
    tempaddress = "http://" + address;
    }
    Uri myurl;
    try
    {
    myurl = new Uri(tempaddress);
    }
    catch
    {
    myurl = new Uri("about:blank");
    }
    return myurl;
    }
    /// <summary>
    /// 截取字符串为指定长度
    /// </summary>
    /// <param name="oldstring"></param>
    /// <returns></returns>
    private string newstring(string oldstring)
    {
    string temp;
    if (oldstring.Length < TITLE_COUNT)
    {
    temp = oldstring;
    }
    else
    {
    temp = oldstring.Substring(0, TITLE_COUNT);
    }
    return temp;
    }
    /// <summary>
    /// 设置"前进","后退"button的可用状态
    /// </summary>
    private void setStatusButton()
    {
    backButton.Enabled = getCurrentBrowser().CanGoBack;
    forwordButton.Enabled = getCurrentBrowser().CanGoForward;
    }
    #endregion
    说明:其中getCurrentBrowser()是获取当前页面的浏览器,这里把它叫当前浏览器,即getCurrentBrowser()为获取当前浏览器。
    菜单栏
    #region//菜单栏
    /// <summary>
    /// 另存为
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void saveasToolStripMenuItem_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().ShowSaveAsDialog();
    }
    /// <summary>
    /// 打印
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void printToolStripMenuItem_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().ShowPrintDialog();
    }
    /// <summary>
    /// 打印御览
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void printPreToolStripMenuItem_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().ShowPrintPreviewDialog();
    }
    /// <summary>
    /// 关闭浏览器
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
    Application.Exit();
    }
    /// <summary>
    /// 页面设置
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void pageSetupToolStripMenuItem_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().ShowPageSetupDialog();
    }
    /// <summary>
    /// 属性设置
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void propeToolStripMenuItem_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().ShowPropertiesDialog();
    }
    #region//关于
    private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
    {
    AboutBox1 myabout = new AboutBox1();
    myabout.Show();
    }
    private void tipToolStripMenuItem_Click(object sender, EventArgs e)
    {
    MessageBox.Show("小提示:双击分页标题即可关闭当前页面。");
    }
    #endregion
    #endregion
    说明:其中文件菜单的功能大都是WebBrowser控件封装好的仅仅是用上文提到的getCurrentBrowser()获取一下当前浏览器罢了。
    工具栏
    #region//工具栏
    /// <summary>
    /// 后退
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void backButton_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().GoBack();
    setStatusButton();
    }
    /// <summary>
    /// 前进
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void forwordButton_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().GoForward();
    setStatusButton();
    }
    /// <summary>
    /// 停止
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void stopButton_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().Stop();
    }
    /// <summary>
    /// 刷新
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void refreshButton_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().Refresh();
    }
    /// <summary>
    /// 定向到主页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void homeButton_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().GoHome();
    }
    /// <summary>
    /// 搜索
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void searchButton_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().GoSearch();
    }
    /// <summary>
    /// 打印
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void printButton_Click(object sender, EventArgs e)
    {
    getCurrentBrowser().Print();
    }
    /// <summary>
    /// 新建空白页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void newButton_Click(object sender, EventArgs e)
    {
    newPage();
    }
    /// <summary>
    /// 使当前的浏览器定位到给定url
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void gotoButton_Click(object sender, EventArgs e)
    {
    newCurrentPageUrl(tscbUrl.Text);
    }
    #endregion
    说明:和菜单栏实现的功能类似,也是一些简单的调用,仅仅是表现形式不同。
    初始化
    #region//初始化
    /// <summary>
    /// 初始化
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void Form1_Load(object sender, EventArgs e)
    {
    initMainForm();
    }
    /// <summary>
    /// 初始化浏览器
    /// </summary>
    private void initMainForm()
    {
    TabPage mypage = new TabPage();
    WebBrowser tempBrowser = new WebBrowser();
    tempBrowser.Navigated +=
    new WebBrowserNavigatedEventHandler(tempBrowser_Navigated);
    tempBrowser.NewWindow +=
    new CancelEventHandler(tempBrowser_NewWindow);
    tempBrowser.StatusTextChanged +=
    new EventHandler(tempBrowser_StatusTextChanged);
    tempBrowser.ProgressChanged +=
    new WebBrowserProgressChangedEventHandler(tempBrowser_ProgressChanged);
    tempBrowser.Dock = DockStyle.Fill;
    tempBrowser.GoHome();//和新建空白页不同
    mypage.Controls.Add(tempBrowser);
    tabControl1.TabPages.Add(mypage);
    }
    #endregion
    说明:分页浏览器初始化时要定向到主页,虽然我们的浏览器暂时没有提供设置主页的功能。
    临时浏览器事件
    #region//临时浏览器事件
    /// <summary>
    /// 临时浏览器状态变化事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    void tempBrowser_StatusTextChanged(object sender, EventArgs e)
    {
    WebBrowser myBrowser = (WebBrowser)sender;
    if (myBrowser != getCurrentBrowser())
    {
    return;
    }
    else
    {
    toolStripStatusLabel1.Text = myBrowser.StatusText;
    }
    }
    /// <summary>
    /// 在当前页面上重新定向
    /// </summary>
    /// <param name="address">url</param>
    private void newCurrentPageUrl(String address)
    {
    getCurrentBrowser().Navigate(getUrl(address));
    }
    /// <summary>
    /// 临时浏览器产生新窗体事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    void tempBrowser_NewWindow(object sender, CancelEventArgs e)
    {
    //获取触发tempBrowser_NewWindow事件的浏览器
    WebBrowser myBrowser = (WebBrowser)sender;
    //获取触发tempBrowser_NewWindow事件的浏览器所在TabPage
    TabPage mypage = (TabPage)myBrowser.Parent;
    //通过StatusText属性获得新的url
    string NewURL = ((WebBrowser)sender).StatusText;
    //生成新的一页
    TabPage TabPageTemp = new TabPage();
    //生成新的tempBrowser
    WebBrowser tempBrowser = new WebBrowser();
    //临时浏览器定向到新的url
    tempBrowser.Navigate(NewURL);
    tempBrowser.Dock = DockStyle.Fill;
    //为临时浏览器关联NewWindow等事件
    tempBrowser.NewWindow +=
    new CancelEventHandler(tempBrowser_NewWindow);
    tempBrowser.Navigated +=
    new WebBrowserNavigatedEventHandler(tempBrowser_Navigated);
    tempBrowser.ProgressChanged +=
    new WebBrowserProgressChangedEventHandler(tempBrowser_ProgressChanged);
    tempBrowser.StatusTextChanged+=
    new EventHandler(tempBrowser_StatusTextChanged);
    //将临时浏览器添加到临时TabPage中
    TabPageTemp.Controls.Add(tempBrowser);
    //将临时TabPage添加到主窗体中
    this.tabControl1.TabPages.Add(TabPageTemp);
    //使外部无法捕获此事件
    e.Cancel = true;
    }
    /// <summary>
    /// 临时浏览器定向完毕
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void tempBrowser_Navigated(object sender,
    WebBrowserNavigatedEventArgs e)
    {
    tscbUrl.Text = getCurrentBrowser().Url.ToString();
    WebBrowser mybrowser = (WebBrowser)sender;
    TabPage mypage=(TabPage)mybrowser.Parent;
    //设置临时浏览器所在tab标题
    mypage.Text= newstring(mybrowser.DocumentTitle);
    }
    #endregion
    说明:临时浏览器实际上是用程序的方式先new出一个tempBrowser然后添加到一个分页中去。其中这个tempBrowser我称它为临时浏览器。其中void tempBrowser_NewWindow(object sender, CancelEventArgs e){..}事件是比较重要的,我认为它是整个程序的核心部分。
    tabControl1事件
    #region//tabControl1事件
    /// <summary>
    /// 切换tab
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {
    WebBrowser mybor = (WebBrowser)tabControl1.SelectedTab.Controls[0];
    if (mybor.Url != null)
    {
    //地址输入框
    tscbUrl.Text = mybor.Url.ToString();
    tabControl1.SelectedTab.Text = newstring(mybor.DocumentTitle);
    }
    else
    {
    tscbUrl.Text = "about:blank";
    tabControl1.SelectedTab.Text = "空白页";
    }
    setStatusButton();
    }
    /// <summary>
    /// 关闭当前tab
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void tabControl1_DoubleClick(object sender, EventArgs e)
    {
    //仅仅剩下一个tab时返回
    if (tabControl1.TabPages.Count <= 1)
    {
    tabControl1.SelectedTab.Text = "空白页";
    getCurrentBrowser().Navigate("about:blank");
    }
    else
    {
    //先将tabControl1隐藏然后remove掉目标tab(如果不隐藏则出现闪烁,即系统自动调转到tabControl1的第一个tab然后跳会。)最后显示tabControl1。
    tabControl1.Visible = false;
    WebBrowser mybor = getCurrentBrowser();
    //释放资源
    mybor.Dispose();
    mybor.Controls.Clear();
    this.tabControl1.TabPages.Remove(this.tabControl1.SelectedTab);
    //重新设置当前tab
    tabControl1.SelectedTab = tabControl1.TabPages[tabControl1.TabPages.Count - 1];
    tabControl1.Visible = true;
    }
    }
    #endregion
    说明:当双击当前Tabpage从而关闭当前页面时,tabControl1 会首先定位到第一个tab然后再定位到指定的Tabpage上,我采取隐藏tabControl1-处理-显示tabControl1思路解决此问题。
    总结
    分页浏览器所谓"分页",从实现上讲就是"控件的动态添加",当前浏览器产生新窗体时,先new出一个TabPage,再new一个WebBrowser,把这个WebBrowser加载了一些事件以后添加到先前的这个TabPage上,然后把这个TabPage添加到"主窗体"tabControl1中。
    不足之处
    最大的不足:
    用((WebBrowser)sender).StatusText无法捕获的url(例如StatusText 为"javascript:void(0)")目前无法解决这也是某些莫名其妙的问题的出处。另外某些脚本不支持。其他一些罪状让我们共同罗列…

     

     

    展开全文
  • 一、【文件(F)】菜单中的命令的实现 1、〖打开〗命令的实现 [格式]:document.execCommand("open") [说明]这跟VB等编程设计中的webbrowser控件中的命令有些相似,大家也可依此琢磨琢磨。 [举例]在<body>...
    下面我们就来看看如何用javascript代码实现浏览器菜单命令(以下代码在Windows XP下的浏览器中调试通过)。
      一、【文件(F)】菜单中的命令的实现
      1、〖打开〗命令的实现
      [格式]:document.execCommand("open")
      [说明]这跟VB等编程设计中的webbrowser控件中的命令有些相似,大家也可依此琢磨琢磨。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=document.execCommand("open")>打开</a>
      2、〖使用 记事本 编辑〗命令的实现
      [格式]:location.replace("view-source:"+location)
      [说明]打开记事本,在记事本中显示该网页的源代码。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=location.replace("view-source:"+location)>使用 记事本 编辑</a>
      3、〖另存为〗命令的实现
      [格式]:document.execCommand("saveAs")
      [说明]将该网页保存到本地盘的其它目录!
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=document.execCommand("saveAs")>另存为</a>
      4、〖打印〗命令的实现
      [格式]:document.execCommand("print")
      [说明]当然,你必须装了打印机!
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=document.execCommand("print")>打印</a>
      5、〖关闭〗命令的实现
      [格式]:window.close();return false
      [说明]将关闭本窗口。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=window.close();return false)>关闭本窗口</a>

      二、【编辑(E)】菜单中的命令的实现
      〖全选〗命令的实现
      [格式]:document.execCommand("selectAll")
      [说明]将选种网页中的全部内容!
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=document.execCommand("selectAll")>全选</a>

      三、【查看(V)】菜单中的命令的实现
      1、〖刷新〗命令的实现
      [格式]:location.reload() 或 history.go(0)
      [说明]浏览器重新打开本页。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=location.reload()>刷新</a>
      或加入:<a href="#" οnclick=history.go(0)>刷新</a>
      2、〖源文件〗命令的实现
      [格式]:location.replace("view-source:"+location)
      [说明]查看该网页的源代码。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=location.replace("view-source:"+location)>查看源文件</a>
      3、〖全屏显示〗命令的实现
      [格式]:window.open(document.location,"url","fullscreen")
      [说明]全屏显示本页。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=window.open(document.location,"url","fullscreen")>全屏显示</a>

      四、【收藏(A)】菜单中的命令的实现
      1、〖添加到收藏夹〗命令的实现
      [格式]:window.external.AddFavorite(’url’, ’“网站名”)
      [说明]将本页添加到收藏夹。
      [举例]在<body></body>之间加入:
      <a href="java script:window.external.AddFavorite(’http://oh.jilinfarm.com', ’胡明新的个人主页’)">添加到收藏夹</a>
      2、〖整理收藏夹〗命令的实现
      [格式]:window.external.showBrowserUI("OrganizeFavorites",null)
      [说明]打开整理收藏夹对话框。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=window.external.showBrowserUI("OrganizeFavorites",null)>整理收藏夹</a> 
            3、设为首页的代码
            <span οnclick="var strHref=window.location.href;this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.zhinest.com');" style="CURSOR: hand">设为首页</span>


      五、【工具(T)】菜单中的命令的实现
      〖internet选项〗命令的实现
      [格式]:window.external.showBrowserUI("PrivacySettings",null)
      [说明]打开internet选项对话框。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=window.external.showBrowserUI("PrivacySettings",null)>internet选项</a>

      六、【工具栏】中的命令的实现
      1、〖前进〗命令的实现
      [格式]history.go(1) 或 history.forward()
      [说明]浏览器打开后一个页面。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=history.go(1)>前进</a>
      或加入:<a href="#" οnclick=history.forward()>前进</a>
      2、〖后退〗命令的实现
      [格式]:history.go(-1) 或 history.back()
      [说明]浏览器返回上一个已浏览的页面。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=history.go(-1)>后退</a>
      或加入:<a href="#" οnclick=history.back()>后退</a>
      3、〖刷新〗命令的实现
      [格式]:document.reload() 或 history.go(0)
      [说明]浏览器重新打开本页。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=location.reload()>刷新</a>
      或加入:<a href="#" οnclick=history.go(0)>刷新</a>
      
      七、其它命令的实现
      〖定时关闭本窗口〗命令的实现
      [格式]:settimeout(window.close(),关闭的时间)
      [说明]将关闭本窗口。
      [举例]在<body></body>之间加入:
      <a href="#" οnclick=settimeout(window.close(),3000)>3秒关闭本窗口</a>

      如果大家还整理出其他用javascript实现的命令,不妨投稿来和大家分享。
      【附】为了方便读者,下面将列出所有实例代码,你可以把它们放到一个html文件中,然后预览效果。
      <a href="#" οnclick=document.execCommand("open")>打开</a><br>
      <a href="#" οnclick=location.replace("view-source:"+location)>使用 记事本 编辑</a><br>
      <a href="#" οnclick=document.execCommand("saveAs")>另存为</a><br>
      <a href="#" οnclick=document.execCommand("print")>打印</a><br>
      <a href="#" οnclick=window.close();return false)>关闭本窗口</a><br>
      <a href="#" οnclick=document.execCommand("selectAll")>全选</a><br>
      <a href="#" οnclick=location.reload()>刷新</a> <a href="#" οnclick=history.go(0)>刷新</a><br>
      <a href="#" οnclick=location.replace("view-source:"+location)>查看源文件</a> <br>
      <a href="#" οnclick=window.open(document.location,"url","fullscreen")>全屏显示</a> <br>
      <a href="java script:window.external.AddFavorite(’http://homepage.yesky.com', ’天极网页陶吧’)">添加到收藏夹</a> <br>
      <a href="#" οnclick=window.external.showBrowserUI("OrganizeFavorites",null)>整理收藏夹</a> <br>
      <a href="#" οnclick=window.external.showBrowserUI("PrivacySettings",null)>internet选项</a> <br>
      <a href="#" οnclick=history.go(1)>前进1</a> <a href="#" οnclick=history.forward()>前进2</a><br>
      <a href="#" οnclick=history.go(-1)>后退1</a> <a href="#" οnclick=history.back()>后退2</a><br>
      <a href="#" οnclick=settimeout(window.close(),3000)>3秒关闭本窗口</a><br>

    转自http://www.yourblog.org/

    关于打印的最新收集的代码
    <OBJECT id="WebBrowser" height="0" width="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
         <PARAM NAME="ExtentX" VALUE="27">
         <PARAM NAME="ExtentY" VALUE="27">
         <PARAM NAME="ViewMode" VALUE="0">
         <PARAM NAME="Offline" VALUE="0">
         <PARAM NAME="Silent" VALUE="0">
         <PARAM NAME="RegisterAsBrowser" VALUE="0">
         <PARAM NAME="RegisterAsDropTarget" VALUE="1">
         <PARAM NAME="AutoArrange" VALUE="0">
         <PARAM NAME="NoClientEdge" VALUE="0">
         <PARAM NAME="AlignLeft" VALUE="0">
         <PARAM NAME="NoWebView" VALUE="0">
         <PARAM NAME="HideFileNames" VALUE="0">
         <PARAM NAME="SingleClick" VALUE="0">
         <PARAM NAME="SingleSelection" VALUE="0">
         <PARAM NAME="NoFolders" VALUE="0">
         <PARAM NAME="Transparent" VALUE="0">
         <PARAM NAME="ViewID" VALUE="{0057D0E0-3573-11CF-AE69-08002B2E1262}">
         <PARAM NAME="Location" VALUE="">
        </OBJECT>
        <input class="Button" οnclick="document.all.WebBrowser.ExecWB(6,1)" type="button" value="打印">
        <input class="Button" οnclick="document.all.WebBrowser.ExecWB(6,6)" type="button" value="直接打印">
        <input class="Button" οnclick="document.all.WebBrowser.ExecWB(8,1)" type="button" value="页面设置">
        <input class="Button" οnclick="document.all.WebBrowser.ExecWB(7,1)" type="button" value="打印预览">
        <input class="Button" id="back" type="button" value="返回" οnclick="javaScript:window.close();"
         style="CURSOR:hand">
    使用这个OBJECT 打印还可以参见  javascript 技巧 ( 02-23 20:38) ,那里有更多的说明和例子

    转载于:https://www.cnblogs.com/sutengcn/archive/2005/12/08/292909.html

    展开全文
  • 一般情况下,如果不是特别的打印,需要借助打印控件,如loopod WebBrowse是一个简单的浏览器程序,支持打印,后退,前进,刷新,另存为,保存等功能,可以到网上搜一下方法,在这里,我们来说下,怎么使用它打印 ...
  • 把网页另存为图片,记得最早知道这个功能是用“世界之窗”浏览器的时候发现的,好像很久前的事情了。一直不知其原理。 今日上班没事,突然想到了这个问题,于是乎在vs里敲下“Webbrowser1.” 然后就逐个逐个的看有...
  • webbrowser控件navigate到某个页面。可以使用webbrowser.document.invoke来调用document里的javascript。我的目的是要把页面保存下来,我一开始用的是document.execcommand方法。这个函数接受很多参数,对应浏览器...
  • 用C#写了一个下载网络图片的程序,比较简单,原理: 使用WebBrowser控件来打开URL,然后,遍历WebBrowser中的所有的Image即可,同时,另存为的时候,可以从网络下载图片,保存到本地.  【网通】 点击这里下载全部源程序 ...
  • Javascript命令大全

    千次阅读 2006-12-11 21:00:00
    说明]这跟VB等编程设计中的webbrowser控件中的命令有些相似,大家也可依此琢磨琢磨。 [举例]在之间加入: 打开 2、〖使用 记事本 编辑〗命令的实现 [格式]:location.replace("view-source:"+location) [说明]...
  • 这个是由于ie7.0的bug引起的,这个ieframe.dll是vb中WebBrowser 调用的控件,将以下内容复制到记事本,然后另存为1.reg,并双击导入即可。Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOTTypeLib{EAB22...
  • 实例029 利用MMControl控件播放AVI动画 64 实例030 满屏播放AVI文件 65 实例031 视频画中画 66 实例032 宣传视频 66 2.2 资源提取与画面捕捉 68 实例033 提取FLV文件中的视频资源 68 实例034 USB摄像头视频...
  • 实例029 利用MMControl控件播放AVI动画 64 实例030 满屏播放AVI文件 65 实例031 视频画中画 66 实例032 宣传视频 66 2.2 资源提取与画面捕捉 68 实例033 提取FLV文件中的视频资源 68 实例034 USB摄像头视频...
  • VB网络编程实例

    千次下载 热门讨论 2007-05-29 15:46:04
    ◆ 178.htm 启动拨号网络中的连接 ◆ 179.htm 浅谈HTTP协议(二)--返回值 ◆ 180.htm 浅谈HTTP协议(一)--结构 ◆ 181.htm 如何利用 WebBrowser 控件显示 .GIF 动画? ◆ 182.htm 如何...
  • JavaScript网页特效范例宝典源码

    千次下载 热门讨论 2013-09-04 10:40:38
    实例068 根据下拉菜单的值显示不同控件 112 实例069 分级下拉列表 113 2.3 单选按钮组 114 实例070 不提交表单获取单选按钮的值 114 实例071 选中单选按钮后显示其他表单元素 116 实例072 通过单选按钮控制其他表单...

空空如也

空空如也

1 2
收藏数 23
精华内容 9
关键字:

webbrowser控件另存