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

时间:2013-08-25 19:54:00

标签: c# visual-studio-2010 powerpoint desktop-application leap-motion

我正在尝试制作基于手势的PowerPoint幻灯片。 JavaScript肯定不会在这里工作,因为我希望我的幻灯片在为Windows打开特定的PowerPoint文件(.ppt)时工作。

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

  1. 我不确定在这里使用什么。是否有一些用于此目的的SDK?简单来说,如何在我们的系统上为PowerPoint文件编写一些自定义代码? Leap Motion apps can be developed with C#, C++, Python, JavaScript, Java, Objective-C

  2. Leap Motion device 的代码与上述代码集成。

  3. 如果您回复两点中的任何一点,那就没关系。很抱歉,我无法发布任何代码,因为我对系统本身的基于PowerPoint的编程完全不熟悉。

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

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

    更新

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

4 个答案:

答案 0 :(得分:8)

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

要开始使用它,你需要Visual Studio(看起来你需要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支持额外的手势,你可以按照相同的模式做一些事情。

答案 1 :(得分:2)

如果您的目标只是与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 :(得分:2)

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

  1. 基于LeapMotion API构建基本的C#应用​​程序(您可以使用SDK中的C# example app)。必须允许此应用程序在后台运行。它连接到LeapMotion并等待手势。它提供了一个.NET远程处理界面(请参阅here以获得一个简单的示例)并针对每个有趣的手势引发一个事件(请参阅here以获取具有远程处理的事件示例)。当您使用示例应用时,只需将SafeWriteLine(...)中的一些替换为引发相应事件。
  2. 使用C#构建办公室加载项(只需使用NetOffice,它是free)。此加载项从步骤1启动后台应用程序,连接远程处理并等待事件。
  3. 当加载项获取事件时,它会触发PowerPoint中的相应操作(例如presentation.GotoSlide(presentation.Slides.Count))。

答案 3 :(得分:0)

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

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