WebBrowser控件应用:播放PPT文件

原文:WebBrowser控件应用:播放PPT文件

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

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

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

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其他的属性里面,能找到一个base的docm对象,但是也无法使用)。

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);

时间: 2024-09-19 09:05:40

WebBrowser控件应用:播放PPT文件的相关文章

windows form中webbrowser控件访问本地html无法播放音频!

问题描述 在windows桌面应用程序中,加入webbrowser控件,访问本地html文件,html中有js脚本播放音频,运行如下:html中js脚本代码片段如下:不知各位是否有方法解决? 解决方案 解决方案二:顶,别沉了,问题还没解决呢!解决方案三:顶啊,顶啊,求助!解决方案四:我顶--你个肺啊!解决方案五:可能是Webbrowser控件不支持高版本的jQuery解决方案六:之前我也尝试过使用Webbrowser访问本地HTML,图片(也在本地保存)都不能显示

C#窗体如何用WebBrowser控件下载压缩包文件??

问题描述 我想要用WebBrowser控件点击一个按钮下载文件按钮的源码是:<iframeid="exportFrame"style="postition:absolute;display:none;"src="/PublicAccess/template/stat_for_jquery/export_frame.jsp"></iframe>这个按钮用鼠标点击后会有弹出下载文件的对话框.

webbrowser控件

问题描述 本人想使用webbrowser控件显示和编辑excel文件,新建form1窗体,添加webbrowser控件,窗体加载时打开excel文件,一切正常,但是这时从本地磁盘打开excel文件时,excel打不开了,请问有什么方法没有 解决方案 解决方案二:报什么错误,截个图呗,你想我们建议你重装office么解决方案三:没有提示文件正在使用中????你的webbrowser加载的是excel文件还是excel文件的内容?解决方案四:首先感谢2位的回复,我是想在窗体中嵌入控件,然后打开exc

请大神推荐一款适合于多媒体信息发布的控件或播放器!!!急!!!

问题描述 请大神推荐一款适合于多媒体信息发布的控件或播放器!!!急!!! [以下描述可能略口水话,我只是想描述尽可能清楚... 之前看到一款CS版的多媒体信息发布程序,他的核心是编辑节目,可以把任一音频.视频.甚至PPT.Word等文件通过上传的方式放置在类似一张画布上,可以任意放置位置,并且可以自定义大小.编辑完发布后可以由一款播放器播放,并且可以实现轮播.按时间顺序播放.插播消息和节目这些功能. 现在上头有规定要用BS来做一个类似的信息发布系统,请问有合适的插件推荐吗?没有太合适的也请指导下

在MFC应用中深入定制WebBrowser控件(转)

web|webbrowser控件 正如VC ++ 6.0的演示程序MFCIE所示,用应用程序向导创建一个具有Web导航能力的MFC应用可谓轻而易举.本文在此基础上,进一步讨论两个问题:资源自包含的实现,上下文菜单以及快捷键的完全控制. 一.资源自包含及res协议 所谓的资源自包含,指的是在最终产品中HTML文档(包括相关资源如脚本.图片)成为执行文件的一部分,就象其它资源(如应用程序图标)一样,而不是以独立文件形式分发. 资源自包含不仅使产品分发更为方便,而且在最终用户面前隐藏了更多的实现细节,

在VB中使用IE的 WebBrowser控件改进界面设计

web|webbrowser控件|设计 在VB中使用IE的 WebBrowser控件 改进界面设计 在程序设计中,如何设计出美观.实用,有个性的界面是每个程序设计者在界面设计中追求的目标.随着Windows XP的推出,各种与众不同的华丽界面越来越被程序设计者和软件使用者所认同. 利用Windows中的WebBrowser控件,可以把华丽的网页设计技术应用到界面设计中去,例如微软著名的MSN浏览器的许多界面其实就是一个Web页,Windows XP中的帮助中心.Microsoft Encarta

浅析c#中WebBrowser控件的使用方法

以下是对c#中WebBrowser控件的使用方法进行了详细的分析介绍,需要的朋友参考下   首先先来简单介绍一下webbrowser控件,这个控件是可以实现在form窗体中添加网页内容的.如图,我在form中加入了百度api,(百度地图api调用博客里有讲) 使用这个控件其实很简单 (1)第一步只要在form_load中输入 复制代码 代码如下: webBrowser1.Navigate(Application.StartupPath + " /map.html");//引号中为网页代

获取input表签的值-在webbrowser控件中获取文本框的值

问题描述 在webbrowser控件中获取文本框的值 复制授权码 请问高手们怎么才能获取到input标签的值呢 相关文章 javaweb-value为空,如何获取文本框的值? javascript-在js中 如何用Jquery 获取一个文本框中的值 文本框中ID=A js文本框-js获取文本框的值,有默认值 javascript-如何获取HTML网页密码输入框的值? jquery怎么让循环的两个文本框的值相加 servlet-想通过href链接传递文本框的值,该怎么得到文本框的值 textbox

Webbrowser控件史上最强技巧全集

原文:Webbrowser控件史上最强技巧全集 Webbrowser控件史上最强技巧全集 VB调用webbrowser技巧集 1.获得浏览器信息: Private Sub Command1_Click() WebBrowser1.Navigate "http://www.applevb.com" End Sub Private Sub Command2_Click() Dim oWindow Dim oNav Set oWindow = WebBrowser1.Document.par