首页 文章

使用跳跃动作为PowerPoint编写自定义代码?

提问于
浏览
10

我想做一个 gesture based PowerPoint slideshow . JavaScript肯定不会在这里工作,因为我希望我的幻灯片工作时,为Windows打开特定的PowerPoint文件(.ppt) .

我用谷歌搜索,在Leap Motion论坛上发布了一个问题,但是徒劳无功 . 我主要担心的是:

如果你回答这两点中的任何一点都没关系 . 对不起,我无法发布任何代码,因为我对系统本身的基于PowerPoint的编程完全不熟悉 .

我对任何能让我完成任务的语言(C,C#,C,Java和Objective-C)持开放态度 . 有一些信息/代码的sugesstions肯定会有所帮助 .

我是PHPJavaScript开发人员 . 我希望我很清楚,不会被误解 .

更新:

我找到LEAP Motion Controller Add-ins for Microsoft Office 2010/2013 (C#) .

4 回答

  • 8

    您找到的LEAP Motion Controller Add-ins for Microsoft Office可能是将控制器与Powerpoint集成的最佳方式 .

    要开始使用它,你需要2012年) . Microsoft有一个Office Development in Visual Studio的概述页面 .

    按照Configuring a Computer to Develop Office Solutions页面上的说明进行操作 .

    下载Leap SDK for Windows,然后解压缩,然后在项目GestureLib.NET4.0的Visual Studio中,添加对LeapCSharp.NET4.0 dll的引用

    对GestureListener.cs做一个简单的修复(在第44行使用IsEmpty) .

    之后,您应该能够在Visual Studio中运行LEAP Motion Controller Add-in . 当你这样做时它会启动Powerpoint .

    “VSTO”是您在此处使用的技术的名称,所以更多的是Google的“VSTO插件powerpoint” .

    source code for the Add-In开始,看起来你应该在Powerpoint的功能区上看到一个按钮,用于启动和停止Leap .

    看看ThisAddIn.cs,一旦启动(通过按功能区上的按钮),控制器应该分别通过移动到下一个/上一个幻灯片来响应左右手势: -

    if (direction.ToString() == "Right")
                {
                    Application.ActivePresentation.SlideShowWindow.View.Next();
                    LastGesture = DateTime.Now;
                }
                if (direction.ToString() == "Left")
                {
                    Application.ActivePresentation.SlideShowWindow.View.Previous();
                    LastGesture = DateTime.Now;
                }
    

    GestureLib支持其他手势,您可以按照相同的模式执行某些操作 .

  • 0

    如果您的目标只是与PowerPoint演示文稿交互,那么一个简单的解决方案可能是使用BetterTouchTool .

    它专为OS X设计,与Leap Motion Controller一起使用,它允许您将手势(由LM控制器捕获)映射到键盘快捷键,只要它是configured correctly,它就可以在后台运行时工作 .

    基本上,应该可以在右箭头键上按下X手指向右滑动 - 这会将演示文稿推进到下一张幻灯片 . 等等 .

    但是,如果您正在寻找程序化挑战/希望将其用于Airspace的应用程序,那么您可以使用类似Apache POI的Java API .

    这是一个更复杂的解决方案,但它确实有它将在OS X上运行的好处 - 并且需要你使用一些代码:) .

    似乎最简单的解决方案是遵循exporting the slides in to images的示例 . 您现在拥有一组图像 - 每个PowerPoint幻灯片一个 . 这为您提供了很多选择,例如

    • 您可以将此数据视为内存数据库(和Web服务),然后返回到PHP和JS的舒适区域,并使用Leap Motion Controller的JS API捕获手势,从根本上驱动在线图片库 .

    • 您可以使用Java API开发纯Java解决方案,以从Leap Motion Controller捕获手势并使用Swing / JavaFX或使用JSF在浏览器中显示数据 .

  • 2

    一个非常简单的解决方案可能如下所示:

    • 基于LeapMotion API构建基本的C#应用程序(您可以使用来自SDK的C# example app) . 必须允许此应用程序在后台运行 . 它连接到LeapMotion并等待手势 . 它提供了一个.NET远程处理接口(参见here以获得一个简单的示例)并为每个有趣的手势引发一个事件(请参阅here以获取具有远程处理的事件示例) . 当您使用示例应用程序时,只需将一些 SafeWriteLine(...) 替换为引发相应的事件即可 .

    • 使用C#构建办公室加载项(只需使用NetOffice,它是free) . 此加载项从步骤1启动后台应用程序,连接远程处理并等待事件 .

    • 当加载项获取事件时,它会触发PowerPoint中的相应操作(例如, presentation.GotoSlide(presentation.Slides.Count) ) .

  • 2

    PowerPoint和所有办公工具都支持visual basic .net宏 . 只需为您的ppt文件编写一个vb宏,该文件识别手势并触发页面更改操作 . 这就够了 .

    如果你愿意,可以在你的vb.net宏中集成跳跃动作的C#代码

相关问题