{"id":105,"date":"2009-10-27T10:00:00","date_gmt":"2009-10-27T10:00:00","guid":{"rendered":"http:\/\/knightware.net\/blog\/?p=105"},"modified":"2009-10-27T10:00:00","modified_gmt":"2009-10-27T10:00:00","slug":"powerpoint-2007-network-controller","status":"publish","type":"post","link":"https:\/\/www.knightware.net\/?p=105","title":{"rendered":"PowerPoint 2007 Network Controller"},"content":{"rendered":"<p><strong><\/strong><\/p>\n<p><strong><font color=\"#ff0000\">Update:&#160; <\/font><\/strong><em><font color=\"#ff0000\">The add-in described in this post is no longer available.&#160; The concept of controlling PowerPoint over a network overlaps with&#160; functionality used in Vista\u2019s multi-screen background generation product, CanvasMaster, released in 2001.<\/font> <\/em><\/p>\n<p>I\u2019ve managed to create&#160; an add-in for PowerPoint 2007 that allows presentations to be controlled over the network.&#160; The app is pretty basic, but is particularly useful for automating demos or integrating PowerPoint content playback with other systems.&#160; Below is a screenshot of the add-in toolbar:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px\" title=\"PowerPointtoolbar_thumb6\" border=\"0\" alt=\"PowerPointtoolbar_thumb6\" src=\"http:\/\/www.knightware.net\/wp-content\/uploads\/2010\/03\/PowerPointtoolbar_thumb6.jpg\" width=\"244\" height=\"60\" \/> <\/p>\n<p>As it\u2019s name suggests, the little light bulb labeled \u2018Control Enabled&#8217; toggles the add-in on or off.&#160; When enabled, the add-in will listen for network requests on the UDP port configured under the \u2018Configure\u2019 icon.&#160; When a packet is received, it is parsed by the network command processor and the enclosed command is executed.&#160; The \u2018Supported Commands\u2019 icon on the toolbar opens a dialog which shows the available commands for the installed version of the add-in.&#160; At the time of this writing (build 1.0.6), the available commands are as follows:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px\" title=\"Commands_thumb5\" border=\"0\" alt=\"Commands_thumb5\" src=\"http:\/\/www.knightware.net\/wp-content\/uploads\/2010\/03\/Commands_thumb5.jpg\" width=\"244\" height=\"178\" \/> <\/p>\n<p>Pretty simple, eh?&#160; While its true that the generic control protocol in this add-in lends itself to pretty much any network enabled controller, I originally started working on the concept as a solution for us internally to tightly integrate PowerPoint presentation playback with <a href=\"https:\/\/www.vistasystems.net\/what_is_spyder\/x20_video_processor.aspx\" target=\"_blank\" rel=\"noopener\">Spyder<\/a> scripting loops at trade shows.&#160; The first attempts didn\u2019t really go anywhere, as the available PowerPoint interop capabilities from Visual Studio were fairly cryptic.<\/p>\n<p>A month or two ago I was emailing with a friend over at InformationsTeknik (Hi Rene!) who was looking to build the same sort of application, and so I made an unfinished sample project that had this basic functionality.&#160; A few sleepless nights later, and voila, I have it wrapped up into a redistributable installer.<\/p>\n<p>I was hoping to have my website finished enough to share a link to the associated project page, but it still has a little way to go, and so while I\u2019m using my site to host the installer download, I\u2019ll have to come back and update this page later with a link to a full-blown project page.&#160; In the mean time you can download from the link below:<\/p>\n<p><font color=\"#808080\">Download the PowerPoint 2007 Network Controller (Version 1.0.6)<\/font><\/p>\n<p>&#160;<\/p>\n<h3><font color=\"#0080ff\">Control Client \/ Test Utility Application<\/font><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; margin: 0px 20px 0px 0px; display: inline; border-top: 0px; border-right: 0px\" title=\"clientapp_thumb2\" border=\"0\" alt=\"clientapp_thumb2\" align=\"left\" src=\"http:\/\/www.knightware.net\/wp-content\/uploads\/2010\/03\/clientapp_thumb2.jpg\" width=\"244\" height=\"120\" \/>When the PowerPoint network controller is installed, a client application will be added to the start menu which can be used to send commands to a machine running the PowerPoint add-in.&#160; This can be either the local machine or another PC on the network.&#160; To run this application, look in the programs folder under the start menu for \u2018PowerPoint Network Control\u2019.&#160; A debug window on the right side of the application shows transmit and receive messages in real-time; you\u2019ll notice that every command sent to the PowerPoint add-in will result in a response.&#160; Users building custom control applications to interact with the add-in can use this window to see the specific responses that will be returned from the add-in for any given command. <\/p>\n<\/p>\n<h3><font color=\"#0080ff\">Using Spyder to Control PowerPoint<\/font><\/h3>\n<p>Well if you\u2019ve read this far into the blog and you have a Spyder system, this will be a little bonus.&#160; Spyder can easily control PowerPoint when used with the network controller add-in by simply creating a few network command function keys.&#160; The screen shots below should be self-explanatory; a network function key is generated to \u2018wrap\u2019 each of the available control commands.&#160; These function keys can be executed directly, or (more importantly) can be linked into script cues to tightly couple command key recalls with the PowerPoint content.&#160; It\u2019s like having a SourceMaster for PowerPoint! <\/p>\n<p><em><strong>Big Disclaimer:<\/strong>&#160; This software is not maintained or supported by my employer, Vista Systems.&#160; Please do not try to contact Vista for technical support for this application.&#160; Post any questions or comments on this blog post, and I\u2019ll try to get back to you as time permits.&#160; I\u2019ve used this software quite a few times now, and it\u2019s worked flawlessly.&#160; If your planning to use it for anything \u2018mission critical\u2019, make sure you <u>do your own adequate testing<\/u> in your environment before going live with it.<\/em><\/p>\n<table border=\"0\" cellspacing=\"5\" cellpadding=\"2\" width=\"457\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"216\" align=\"center\">\n<h5 align=\"center\">Next Slide Function Key<\/h5>\n<\/td>\n<td valign=\"top\" width=\"224\" align=\"center\">\n<h5 align=\"center\">Previous Slide Function Key<\/h5>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"216\"><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px\" title=\"FunctionKeyNext_thumb6\" border=\"0\" alt=\"FunctionKeyNext_thumb6\" src=\"http:\/\/www.knightware.net\/wp-content\/uploads\/2010\/03\/FunctionKeyNext_thumb6.jpg\" width=\"203\" height=\"127\" \/><\/td>\n<td valign=\"top\" width=\"224\"><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px\" title=\"FunctionKeyPrevious_thumb7\" border=\"0\" alt=\"FunctionKeyPrevious_thumb7\" src=\"http:\/\/www.knightware.net\/wp-content\/uploads\/2010\/03\/FunctionKeyPrevious_thumb7.jpg\" width=\"206\" height=\"129\" \/><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"216\">&#160;<\/td>\n<td valign=\"top\" width=\"224\">&#160;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"216\">\n<h5 align=\"center\">Home Function Key<\/h5>\n<\/td>\n<td valign=\"top\" width=\"224\">&#160;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"216\"><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px\" title=\"FunctionKeyHome_thumb8\" border=\"0\" alt=\"FunctionKeyHome_thumb8\" src=\"http:\/\/www.knightware.net\/wp-content\/uploads\/2010\/03\/FunctionKeyHome_thumb8.jpg\" width=\"212\" height=\"132\" \/><\/td>\n<td valign=\"top\" width=\"224\">&#160;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><font color=\"#0080ff\"><\/font>&#160;<font color=\"#0080ff\">What\u2019s Next for this Project?<\/font><\/h3>\n<p>I think it makes pretty clear sense to add the ability to load, start, and stop presentations remotely using network clients communicating through the add-in.&#160; Currently the add-in requires that the PowerPoint presentation being controlled be manually started before the commands will work.&#160; If you have ideas about how to make this better, or have any comments about the project, post them in the comments for this post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Update:&#160; The add-in described in this post is no longer available.&#160; The concept of controlling PowerPoint over a network overlaps with&#160; functionality used in Vista\u2019s multi-screen background generation product, CanvasMaster, released in 2001. I\u2019ve managed to create&#160; an add-in for PowerPoint 2007 that allows presentations to be controlled over the network.&#160; The app is pretty [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-105","post","type-post","status-publish","format-standard","hentry","category-software"],"_links":{"self":[{"href":"https:\/\/www.knightware.net\/index.php?rest_route=\/wp\/v2\/posts\/105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.knightware.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.knightware.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.knightware.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.knightware.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=105"}],"version-history":[{"count":0,"href":"https:\/\/www.knightware.net\/index.php?rest_route=\/wp\/v2\/posts\/105\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.knightware.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.knightware.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.knightware.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}