<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows and .NET Programming </title><link>http://blogs.msdn.com/b/cobold/</link><description>Programming Debugging WinDBG</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.21163 (Build: 5.6.583.21163)</generator><item><title>Building a large text file editor – Part II</title><link>http://blogs.msdn.com/b/cobold/archive/2012/03/02/building-a-large-text-file-editor-part-ii.aspx</link><pubDate>Fri, 02 Mar 2012 15:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10276531</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10276531</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2012/03/02/building-a-large-text-file-editor-part-ii.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7750.image5.png"&gt;&lt;/a&gt;In the &lt;a title="previous post" href="http://blogs.msdn.com/b/cobold/archive/2012/01/25/building-a-large-text-file-editor-part-i.aspx"&gt;previous post&lt;/a&gt; I created a class that was going to be used as an interface between a large file editor and the file on the disk.&lt;/p&gt;
&lt;p&gt;Since then I've been implementing the user interface and, obviously, the RevisionStream also needed some readjustment. Here are some major changes that were done:&lt;/p&gt;
&lt;p&gt;- detecting encoding of text file&lt;/p&gt;
&lt;p&gt;- support for Unicode (2-bytes characters)&lt;/p&gt;
&lt;p&gt;- some bugs related to addition and deletion&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Until now I've managed to repair most of the visible bugs but I'm pretty sure there are some also remaining. Which is why, apart from the UserControl that holds the large file editor, I've also created a Form for testing the control. The source code is available so everyone interested and go ahead and fix the bugs they discover. I will also appreciate if you post comments with feedback.&lt;/p&gt;
&lt;p&gt;The UserControl LargeTextBox contains a RichTextBox and a vertical scroll bar.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/6114.image1.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/6114.image1.png" width="242" height="220" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Apart from the RevisionStream, the LargeTextBox control also contains:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- &amp;nbsp;long topPosition; // The position in the changed stream of first line in RTB&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- char[][] displayedLines; // The list of currently displayed text lines&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- int[] lineLengths; // The list of lengths of currently displayed text lines&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The most delicate part of the whole process is to detect the changes done by the user in the RichTextBox and update them in the Revision Stream. This is implemented in the method SynchDifferences where the cached lines are compared with the lines from the RichTextBox and Insertions and Deletions are added accordingly.&lt;/p&gt;
&lt;p&gt;Let's see how this works on an Excel file. I create a Workbook with as many rows as Excel allows, namely 1,048,576. I saved this to Book2.xlsx and extracted the sheet1.xml. I then indented the XML to make more human-readable and loded it into the editor.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7357.image2.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7357.image2.png" width="310" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7144.image3.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7144.image3.png" width="473" height="266" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I then scrolled down to row 511,386 and added a new cell on the B column with the value of "0".&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/2063.image4.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/2063.image4.png" width="473" height="271" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I saved the XML as sheet2.xml and then renamed it back to sheet1.xml (minor&amp;nbsp;bug remaining - can't save to same file name). After repackaging the file in Excel, here's the result:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7750.image5.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7750.image5.png" width="312" height="117" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10276531" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-27-65-31/LFETester.zip" length="98366" type="application/zip" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/sample/">sample</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/RichTextBox/">RichTextBox</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Large+File+Editor/">Large File Editor</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/RevisionStream/">RevisionStream</category></item><item><title>Building a large text file editor – Part I</title><link>http://blogs.msdn.com/b/cobold/archive/2012/01/25/building-a-large-text-file-editor-part-i.aspx</link><pubDate>Wed, 25 Jan 2012 10:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10260473</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10260473</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2012/01/25/building-a-large-text-file-editor-part-i.aspx#comments</comments><description>&lt;p&gt;The purpose of this series of two blog posts is to illustrate how an editor for large files can be implemented. The first part will address the model behind the editor whereas the second part will include an actual UserControl that allows users to view and edit large files.&lt;/p&gt;
&lt;p&gt;The basic idea behind a large file viewer is that you can&amp;rsquo;t load a very large file into a TextBox or RichTextBox control because the memory usage as well as the time to load the file will be enormous. Moreover, the user can only see a very small portion of the file on the screen at once, so it doesn&amp;rsquo;t make sense to load all the data in the file at once.&lt;/p&gt;
&lt;p&gt;As such, what is needed from a large file viewer is to only display some small parts of the file in order to fill at least a screen. This is pretty straightforward and will be addressed in the second post. What is a bit more complex is to enable the user to edit the file (i.e. make insertions and deletions). The problem with editing the file is that edits need to be taken into account when computing the position in the stream. If the user deletes say the first 10 characters and then wants to read two characters at offset 4, what actually needs to be read is the two characters at offset 14 from the original file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Original string: "0123456789abcdefgh"&lt;/li&gt;
&lt;li&gt;String after deleting 10 characters: "abcdefgh"&lt;/li&gt;
&lt;li&gt;Character at offset 4 (zero-based): "e"&lt;/li&gt;
&lt;li&gt;Offset in initial string: 14.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Obviously, things get more complicated when the user starts to randomly delete and insert text at various locations in the file.&lt;/p&gt;
&lt;p&gt;The solution I&amp;rsquo;m proposing is the class RevisionStream (see attached code). This class is wrapper around the FileStream class and supports four public methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AddDeletion&lt;/strong&gt; &amp;ndash; the caller signals that a deletion has been made by the user&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AddInsertion&lt;/strong&gt; &amp;ndash; the caller signals that the user has inserted some text&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read&lt;/strong&gt; &amp;ndash; reads some bytes from the revised stream&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SaveTo&lt;/strong&gt; &amp;ndash; saves revised stream to file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The basic idea behind this approach is that normally the largest part of the text will remain identical to the original stream and only some minor changes will be done by the user. So it makes sense to leave the original text on disk and only load to memory the parts that we need together with the changes the user makes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/0143.RevStream.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/0143.RevStream.png" width="326" height="251" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Under the hood, the RevisionStream uses a list of Segments. A segment is either a reference to a contiguous section of the original text or a newly added text. The really difficult part is to adjust the segments from the RevisionStream when an insertion or a deletion is made.&lt;/p&gt;
&lt;p&gt;Getting back to the previous example, the RevisionStream initially contains all the text from the original file, which is "0123456789abcdefgh". The list of segments will contain only one segment, [0, 17] (where 17 = the offset of the last character).&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Scenario #1&lt;/strong&gt;&lt;/span&gt;: The user deletes the first 10 characters&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Resulting list of segments: [10, 17]. &lt;br /&gt;Resulting string: "abcdefgh"&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Scenario #2&lt;/strong&gt;&lt;/span&gt;: The user deletes the character &amp;lsquo;b&amp;rsquo;, which is located at offset 11.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Resulting list of segments: [0, 10], [12, 17]. &lt;br /&gt;Resulting string: "0123456789acdefgh".&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Scenario #3&lt;/strong&gt;&lt;/span&gt;: The user deletes the character &amp;lsquo;b&amp;rsquo;, which is located at offset 11, and writes "ZZZ" at the same offset.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Resulting list of segments: [0, 10],["ZZZ"],[12, 17]. &lt;br /&gt;Resulting string: "0123456789aZZZcdefgh".&lt;/p&gt;
&lt;p&gt;The real challenge here is to deal with all the possible scenarios of deleting and inserting text (delete from more consecutive segments, delete at end of segment, etc.). Hopefully I&amp;rsquo;ve covered all the possible scenarios in the implementations of the private methods AdjustForInsertion and AdjustForDeletion but if you find any case that hasn&amp;rsquo;t been covered, please post a comment here.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;There&amp;rsquo;s still some work to do here: using only long indices to ensure really large files can be read, making the Insertions encoding-independent, etc. However, up to this point, we can go ahead and build a pretty decent Large File Editor based on this Revision Stream.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10260473" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-26-04-73/RevisionStream_2E00_cs" length="20594" type="application/octet-stream" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Large+File+Editor/">Large File Editor</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/RevisionStream/">RevisionStream</category></item><item><title>Monitoring when registry keys are modified</title><link>http://blogs.msdn.com/b/cobold/archive/2011/11/29/monitoring-when-registry-keys-are-modified.aspx</link><pubDate>Tue, 29 Nov 2011 16:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10242453</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10242453</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/11/29/monitoring-when-registry-keys-are-modified.aspx#comments</comments><description>&lt;p&gt;Let&amp;rsquo;s say you want to see where a certain setting from Word Options is saved in Registry.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;The easiest method is using Process Monitor.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Add a filter on Process Name and Operation, start Word and that&amp;rsquo;s that:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7446.filters.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7446.filters.png" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;If we uncheck &amp;ldquo;Allow background saves&amp;rdquo; from Word Options &amp;ndash; Advanced &amp;ndash; Save, this is what appears in Process Monitor:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/1106.RegSEtVal.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/1106.RegSEtVal.png" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;The problem with Process Monitor is that we can&amp;rsquo;t leave it running for a long time because the page file will become too large and it will not be able to continue the capture.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;So the alternative is Registry Auditing.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;What we need to do is:&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Run the following command from Command Prompt:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;auditpol /set /subcategory:"Registry" /success:enable&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Note: if the OS has a different language pack, the name &amp;ldquo;Registry&amp;rdquo; might differ. For instance, on a German Windows, the name is &amp;ldquo;Registrierung&amp;rdquo;. To see what the name of the subcategory is you can run:&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-family: courier new,courier;"&gt;auditpol /list /subcategory:*&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Open Registry Editor and navigate to the key which we want to audit (HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word)&lt;br /&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Right-click on the key and choose &amp;ldquo;Permissions&amp;hellip;&amp;rdquo;&lt;br /&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Click &amp;ldquo;Advanced&amp;rdquo; and switch to the Auditing tab&lt;br /&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add a user or group and select Access: Set Value&lt;br /&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Apply settings&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Now the registry changes are visible in the Event Viewer under Windows Logs\Security:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/5148.eventv.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/5148.eventv.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;More detailed information on this topic:&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://support.microsoft.com/kb/921469"&gt;http://support.microsoft.com/kb/921469&lt;/a&gt; How to use Group Policy to configure detailed security auditing settings for Windows Vista-based and Windows Server 2008-based computers in a Windows Server 2008 domain, in a Windows Server 2003 domain, or in a Windows 2000 domain.&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://technet.microsoft.com/en-us/library/cc755264(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/cc755264(WS.10).aspx&lt;/a&gt; Auditpol set&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://support.microsoft.com/kb/324739"&gt;http://support.microsoft.com/kb/324739&lt;/a&gt;&amp;nbsp;How to use Group Policy to audit registry keys in Windows Server 2003&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10242453" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cobold/archive/tags/monitor/">monitor</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Word/">Word</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/registry/">registry</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Process+Monitor/">Process Monitor</category></item><item><title>Back to school - Office art geometry</title><link>http://blogs.msdn.com/b/cobold/archive/2011/10/31/back-to-school-office-art-geometry.aspx</link><pubDate>Mon, 31 Oct 2011 13:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10231640</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10231640</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/10/31/back-to-school-office-art-geometry.aspx#comments</comments><description>&lt;p&gt;Let's start off with the following observation- the following two shapes have the same Left and Top coordinates:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/3414.rot0.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/3414.rot0.png" width="334" height="241" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/3108.rot50.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/3108.rot50.png" width="332" height="235" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What's different is obviously the rotation. What Office saves for a shape is the Left and Top coordinates together with a Rotation. So the Top coordinate, for instance, is not necessarily&amp;nbsp;the uppermost part of a shape.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So let's solve the following problem: to which shape is the following arrow pointing?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7673.arrow.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7673.arrow.png" width="323" height="182" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input data:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Arrow:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Left = &amp;nbsp;98.74763&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Top = 67.08575&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Width = 162&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Height = 60&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rotation = 45&lt;/p&gt;
&lt;p&gt;Upper shape:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 264&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Top =&amp;nbsp;36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Width = 168&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Height =&amp;nbsp;72&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rotation = 0&lt;/p&gt;
&lt;p&gt;Lower&amp;nbsp;shape:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Left = 264&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Top = 114&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Width = 168&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Height = 72&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rotation = 0&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The code for computing the "From" and "To" points:&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt; public static void GetFromAndTo(RectangleF bounds, double rot, &lt;br /&gt; ref PointF from, ref PointF to)&lt;br /&gt; {&lt;br /&gt; &lt;br /&gt; double La, Ta, Wa, Ha, alpha;&lt;br /&gt; La = bounds.Left;&lt;br /&gt; Ta = bounds.Top;&lt;br /&gt; Wa = bounds.Width;&lt;br /&gt; Ha = bounds.Height;&lt;br /&gt; &lt;br /&gt; alpha = (rot * Math.PI) / 180;&lt;br /&gt; &lt;br /&gt; from.X = (float)(La + Wa * (1 - Math.Cos(alpha)) / 2);&lt;br /&gt; from.Y = (float)(Ta + (Ha / 2) - (Wa * Math.Sin(alpha)) / 2);&lt;br /&gt; to.X = (float)(La + Wa * (1 + Math.Cos(alpha)) / 2);&lt;br /&gt; to.Y = (float)(Ta + (Ha / 2) + (Wa * Math.Sin(alpha)) / 2);&lt;br /&gt; }&lt;br /&gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;The "From" point&amp;nbsp;has coordinates: (122.512 ; 39.8101) and the "To" point&amp;nbsp;has coordinates:(237.0633 ; 154.3614)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7140.arrow-_2D00_-Copy.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65/7140.arrow-_2D00_-Copy.png" width="367" height="213" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;What needs to be determined now is the distance between the "To" point and each rectangle. For that, we'll need to determine where the segment between "To" and the center of the rectangle intersects the bounds of the rectangle.&lt;/p&gt;
&lt;p&gt;The line between "To" and the center intersects the bounds in found points at most. So we'll need to determine which one of&amp;nbsp;these&amp;nbsp;points is inside the bounds and between "To" and the center.&lt;/p&gt;
&lt;p&gt;We start off by computing the line equation for the line that contains "To" and the center (Y = m * X + b). Then we find out the intersection by substituting the points on the bounds (e.g. Y = Top or X = Left + Width).&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;//Line equation between point and center&lt;br /&gt; double m = (cen.Y - src.Y) / (cen.X - src.X);&lt;br /&gt; double b = cen.Y - (cen.X * m);&lt;br /&gt; &lt;br /&gt; PointF[] pis = new PointF[4];&lt;br /&gt; pis[0] = new PointF((float)((bounds.Top - b) / m), bounds.Top);&lt;br /&gt; pis[1] = new PointF((float)(bounds.Left + bounds.Width), (float)((bounds.Left + bounds.Width) * m + b));&lt;br /&gt; pis[2] = new PointF((float)((bounds.Top + bounds.Height - b) / m), (float)(bounds.Top + bounds.Height));&lt;br /&gt; pis[3] = new PointF(bounds.Left, (float)(bounds.Left * m + b));&lt;br /&gt; sqdist = double.NaN;&lt;br /&gt; &lt;br /&gt; //Select the intersection with the bounds which is inside the bounds and between the two points&lt;br /&gt; for (int i = 0; i &amp;lt; 4; ++i)&lt;br /&gt; {&lt;br /&gt; &lt;br /&gt; if (IsInsideAndBetwen(pis[i], src, cen, bounds))&lt;br /&gt; {&lt;br /&gt; sqdist = Math.Pow(src.X - pis[i].X, 2) + Math.Pow(src.Y - pis[i].Y, 2);&lt;br /&gt; &lt;br /&gt; return;&lt;br /&gt; }&lt;br /&gt; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The method IsInsideAndBetween(pi, src,cen, bounds) returns true if pi is between cen and src and if pi is inside the bounds.&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt; private bool IsInsideAndBetwen(PointF pi, PointF src, PointF cen, RectangleF bounds)&lt;br /&gt; {&lt;br /&gt; &lt;br /&gt; if (pi.X &amp;lt; bounds.Left ||&lt;br /&gt; pi.X &amp;gt; bounds.Left + bounds.Width ||&lt;br /&gt; pi.Y &amp;lt; bounds.Top ||&lt;br /&gt; pi.Y &amp;gt; bounds.Top + bounds.Height)&lt;br /&gt; return false; //It's outside bounds&lt;br /&gt; &lt;br /&gt; if (cen.X == pi.X)&lt;br /&gt; {&lt;br /&gt; if ((src.Y - cen.Y) / (pi.Y - cen.Y) &amp;lt; 1)&lt;br /&gt; return false;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; else&lt;br /&gt; if (cen.Y == pi.Y)&lt;br /&gt; {&lt;br /&gt; if ((src.X - cen.X) / (pi.X - cen.X) &amp;lt; 1)&lt;br /&gt; return false;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; if ((src.X - cen.X) / (pi.X - cen.X) &amp;lt; 1 ||&lt;br /&gt; (src.Y - cen.Y) / (pi.Y - cen.Y) &amp;lt; 1)&lt;br /&gt; return false; //It's not between the two points.&lt;br /&gt; &lt;br /&gt; return true;&lt;br /&gt; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;span style="font-size: xx-small;"&gt;Disclaimer: Sample &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;Code is provided for the purpose of illustration only and is not intended to be&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;used in a production environment. THIS SAMPLE CODE AND ANY RELATED INFORMATION&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. We grant You a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;nonexclusive, royalty-free right to use and modify the Sample Code and to&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;reproduce and distribute the object code form of the Sample Code, provided&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;that. You agree: (i) to not use Our name, logo, or trademarks to market Your&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;software product in which the Sample Code is embedded; (ii) to include a valid&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;copyright notice on Your software product in which the Sample Code is embedded;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;and (iii) to indemnify, hold harmless, and defend Us and Our suppliers from and&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;against any claims or lawsuits, including attorneys&amp;rsquo; fees, that arise or result&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;from the use or distribution of the Sample Code&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10231640" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/office+art/">office art</category></item><item><title>Using DDE in C# for Office automation</title><link>http://blogs.msdn.com/b/cobold/archive/2011/07/26/using-dde-in-c-for-office-automation.aspx</link><pubDate>Tue, 26 Jul 2011 12:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10189840</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10189840</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/07/26/using-dde-in-c-for-office-automation.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Looking for some code samples how to pass DDE messages from a .NET program I found out that there&amp;lsquo;s a great library already in place that facilitates working with DDE: the NDde project from Codeplex: &lt;a title="http://ndde.codeplex.com/" href="http://ndde.codeplex.com/"&gt;http://ndde.codeplex.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, I just needed to make one call and including a new DLL into my code would have been too much.&lt;/p&gt;
&lt;p&gt;So I just created a sample C# program derived from the NDde code that imports only the necessary functions from the Win32 API to pass an Open DDE message to Excel for opening a workbook.&lt;/p&gt;
&lt;p&gt;&lt;code class="csharp"&gt;Workbook wb = DDEHelper.OpenWorkbook(_excel, args[0]);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code class="csharp"&gt;&lt;/code&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Compilation:&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="cplusplus"&gt;D:\Projects\DDE&amp;gt;csc /r:C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\&lt;/code&gt;&lt;code class="cplusplus"&gt;14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll DDEOpen.cs&lt;/code&gt;&lt;/pre&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;&lt;/code&gt;&amp;nbsp;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10189840" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-18-98-40/DDEOpen_2E00_cs" length="6405" type="application/octet-stream" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/excel/">excel</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/DDE/">DDE</category></item><item><title>Using .NET library in VBA</title><link>http://blogs.msdn.com/b/cobold/archive/2011/06/01/using-net-library-in-vba.aspx</link><pubDate>Wed, 01 Jun 2011 14:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10170327</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10170327</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/06/01/using-net-library-in-vba.aspx#comments</comments><description>&lt;p&gt;Three easy steps for exporting .NET functionality to VBA:&lt;/p&gt;
&lt;p&gt;1. Write a source file:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Runtime.InteropServices;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
&lt;br /&gt;
namespace InteropTest&lt;br /&gt;
{&lt;br /&gt;
    [Guid("BEB2C62D-5646-4B08-81DF-670314BFEE4A")]&lt;br /&gt;
    public class InteropTestClass&lt;br /&gt;
    {&lt;br /&gt;
        public void Help()&lt;br /&gt;
        {&lt;br /&gt;
            MessageBox.Show("Hello From .NET!");&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The GUID needs to be unique.&lt;/p&gt;
&lt;p&gt;2. Generate a strong key to sign the assembly:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;sn -k MyKey.snk &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;3. Compile the C# file using CSC:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;csc /target:library /out:tstint.dll MyClass.cs /keyfile:MyKey.snk&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We now have a DLL that can be exported to another machine with the .NET Framework installed. On the target machnie, the assembly needs to be registered:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: courier new,courier;"&gt;regasm tstint.dll /codebase /tlb:tstint.tlb&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now the library can be used in Office by selecting it from the list of references in VBA:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65-metablogapi/0118.image_5F00_60CD21D3.png"&gt;&lt;img height="130" width="146" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65-metablogapi/5808.image_5F00_thumb_5F00_2C88D2C0.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10170327" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/vba/">vba</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/COM/">COM</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/compile/">compile</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/library/">library</category></item><item><title>Recovering the pictures from a PPT file</title><link>http://blogs.msdn.com/b/cobold/archive/2011/05/13/recovering-the-pictures-from-a-ppt-file.aspx</link><pubDate>Fri, 13 May 2011 14:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10164212</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10164212</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/05/13/recovering-the-pictures-from-a-ppt-file.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The PPT file format is &lt;a target="_blank" href="http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx"&gt;very well documented&lt;/a&gt; as per Microsoft&amp;rsquo;s Open Specification Promise. However, accessing any part of a PPT file isn&amp;rsquo;t really a snap.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve created a small C# program which parses the \Pictures stream from a PPT file. For that, one needs to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extract the Pictures stream from the PPT OLE storage&lt;/li&gt;
&lt;li&gt;Parse the stream according to the OfficeArtFBSE format&lt;/li&gt;
&lt;li&gt;Extract all the binary pictures according to format: WMF, EMF, PNG, JPG &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65-metablogapi/8156.image_5F00_3EADEB10.png"&gt;&lt;img height="451" width="583" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65-metablogapi/5428.image_5F00_thumb_5F00_29AC42D0.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This can be used for damaged PPT files where the shapes that contain pictures can&amp;rsquo;t be viewed anymore.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10164212" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-16-42-12/ParsePictures.zip" length="18454" type="application/zip" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Storage/">Storage</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Extract/">Extract</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OLE/">OLE</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/repair/">repair</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/PPT/">PPT</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Pictures/">Pictures</category></item><item><title>Complex editing of XLSX files</title><link>http://blogs.msdn.com/b/cobold/archive/2011/04/29/complex-editing-of-xlsx-files.aspx</link><pubDate>Fri, 29 Apr 2011 09:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10159415</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10159415</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/04/29/complex-editing-of-xlsx-files.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Editing Excel OpenXML documents using the OpenXML 2.0 SDK offers better performace and improved supportability compared to normal Office automation (e.g. VBA). There are also great examples on the Internet to get started: &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/bb508943.aspx"&gt;Office Open XML Formats: Inserting Values into Excel 2007 Cells&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What I haven&amp;rsquo;t found until now is some clarifications as to how one can edit multiple Excel cells without corrupting the workbook. This is what I&amp;rsquo;m presenting in this blog post.&lt;/p&gt;
&lt;p&gt;The fact is that whenever rows and cells need to be added to an Excel worksheet, they need to be sorted upon insertion. Take for instance the XML for the following worksheet where A1 = 1, B1 = 2 and B2 = 3. Here is the only way the XML should be saved like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65-metablogapi/7750.image_5F00_60C32A4A.png"&gt;&lt;img height="181" width="244" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65-metablogapi/6170.image_5F00_thumb_5F00_06F55DD6.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If we inserted say cell B1 before cell A1, Excel would show a corruption error when opening the XLSX.&lt;/p&gt;
&lt;p&gt;The program that I&amp;rsquo;m attaching here does exactly this: the input is a worksheet, a row and a column and the output is a modified worksheet that contains the row and the cell required for that cell to be edited.&lt;/p&gt;
&lt;p&gt;Other useful features:&lt;/p&gt;
&lt;p&gt;- Convert column index to colum name (e.g. 28 to AB)&lt;/p&gt;
&lt;p&gt;- Get the column index from cell reference (e.g. AB23 to 28)&lt;/p&gt;
&lt;p&gt;- Selecting cells based on argument value using LINQ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sample edited worksheet:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65-metablogapi/7752.image_5F00_6046D188.png"&gt;&lt;img height="192" width="417" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-65-metablogapi/3173.image_5F00_thumb_5F00_1D1B535B.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note: The sample program does not create a blank workbook, you will need to save one from Excel and pass the full path and the name of the worksheet to the program. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10159415" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-15-94-15/ModifyWorksheet.zip" length="7783" type="application/zip" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OpenDoc/">OpenDoc</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/XLSX/">XLSX</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/modify/">modify</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/excel/">excel</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/corrupted/">corrupted</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/workbook/">workbook</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/repair/">repair</category></item><item><title>Indenting XML files</title><link>http://blogs.msdn.com/b/cobold/archive/2011/03/17/indenting-xml-files.aspx</link><pubDate>Thu, 17 Mar 2011 12:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10142602</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10142602</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/03/17/indenting-xml-files.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The operation of indenting XML files is pretty trivial when using the classes from the System.XML namespace. However, I often find myself trying to read canonical XML code from files. As such, a created a very simple tool that converts XML files to indented XML.&lt;/p&gt;
&lt;p&gt;All you need to do is to drag and drop an XML file into the WPF window and there you have it!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/8032.image_5F00_705C42D5.png"&gt;&lt;img height="150" width="392" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/0624.image_5F00_thumb_5F00_5EDBBC30.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the difference:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/6087.image_5F00_1C88A3ED.png"&gt;&lt;img height="219" width="325" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/6428.image_5F00_thumb_5F00_19FF722F.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10142602" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-14-26-02/Canonical.zip" length="6550" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/XML/">XML</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/WPF/">WPF</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/canonical/">canonical</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/indent/">indent</category></item><item><title>List styles in Word document with preview</title><link>http://blogs.msdn.com/b/cobold/archive/2011/03/14/list-styles-in-word-document-with-preview.aspx</link><pubDate>Mon, 14 Mar 2011 15:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10140793</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10140793</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/03/14/list-styles-in-word-document-with-preview.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The sample code from my previous &lt;a href="http://blogs.msdn.com/b/cobold/archive/2011/02/25/listing-styles-in-word-document.aspx"&gt;post&lt;/a&gt; does a pretty good job listing the styles in a Word document. However, having a preview of these styles makes it a lot easier to spot the subtle differences than by using the Description object.&lt;/p&gt;
&lt;p&gt;For generating a preview of the styles I used some code posted by &lt;a target="_blank" href="http://social.msdn.microsoft.com/Forums/en-IE/worddev/thread/ee9e0d28-0f1e-467f-8d1d-1a86b2db2878"&gt;L Webber on MSDN&lt;/a&gt; for manipulating clipboard. I&amp;rsquo;ve also added the functionality of finding out the clipboard format in which Word copies PNG and saving the content of the clipboard to a local file.&lt;/p&gt;
&lt;p&gt;The result:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/5483.image_5F00_0DDCCED5.png"&gt;&lt;img height="416" width="476" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/5504.image_5F00_thumb_5F00_2E53E8BA.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Note: please make sure to recompile the VBA proeject before running (simply open the VBE window) in order to avoid crashes.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10140793" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-14-07-93/listStylesWithPreview.doc" length="187904" type="application/octet-stream" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/DOCX/">DOCX</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/sample/">sample</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/vba/">vba</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Word/">Word</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/styles/">styles</category></item><item><title>Listing styles in Word document</title><link>http://blogs.msdn.com/b/cobold/archive/2011/02/25/listing-styles-in-word-document.aspx</link><pubDate>Fri, 25 Feb 2011 13:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10134038</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10134038</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/02/25/listing-styles-in-word-document.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When dealing with Styles in Word you can never have too much control. This is when a listing of the existing styles and their descriptions helps a lot.&lt;/p&gt;
&lt;p&gt;Happily VBA provides a powerful way of getting details about a certain style through the Description member of the Style class. Based on this I&amp;rsquo;ve built a small VBA script that generates an HTML list of the existing styles in the active document.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/5633.image_5F00_1C33C981.png"&gt;&lt;img height="385" width="433" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/2161.image_5F00_thumb_5F00_1E9CAFA5.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The number formatting for list styles is also included.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/3250.image_5F00_09CAB725.png"&gt;&lt;img height="311" width="443" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/5707.image_5F00_thumb_5F00_4C5A529D.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;See also: &lt;a href="http://office.microsoft.com/en-us/word-help/understanding-paragraph-character-list-and-table-styles-HA001187614.aspx" title="http://office.microsoft.com/en-us/word-help/understanding-paragraph-character-list-and-table-styles-HA001187614.aspx"&gt;http://office.microsoft.com/en-us/word-help/understanding-paragraph-character-list-and-table-styles-HA001187614.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10134038" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-13-40-38/listStyles.doc" length="129024" type="application/msword" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/vba/">vba</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/list/">list</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Word/">Word</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/styles/">styles</category></item><item><title>Brushing up on the WPF and Windows 7 Jump Lists</title><link>http://blogs.msdn.com/b/cobold/archive/2011/02/11/brushing-up-on-the-wpf-and-windows-7-jump-lists.aspx</link><pubDate>Fri, 11 Feb 2011 15:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10128085</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10128085</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/02/11/brushing-up-on-the-wpf-and-windows-7-jump-lists.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is just a summary on the new Windows 7 features and how these can be implemented in .NET. There is plenty documentation on both Windows Presentation Foundation and the Windows 7 SDK but actually implementing a solution is a bit harder.&lt;/p&gt;
&lt;p&gt;So here we have it: a WPF application that create Jump Lists with shortcuts to other programs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/1856.screen_5F00_28390BDB.png"&gt;&lt;img height="596" width="478" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/6758.screen_5F00_thumb_5F00_438D9C77.png" alt="screen" border="0" title="screen" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Programming with the Windows 7 APIs is described in good detail on the following MSDN magazine site: &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd942846.aspx" title="http://msdn.microsoft.com/en-us/magazine/dd942846.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/dd942846.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is also a great .NET SDK for accessing the Windows 7 API: &lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack" title="http://code.msdn.microsoft.com/WindowsAPICodePack"&gt;http://code.msdn.microsoft.com/WindowsAPICodePack&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10128085" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-12-80-85/WPFJumpList.zip" length="34539" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/WPF/">WPF</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Jump+List/">Jump List</category></item><item><title>XML Highlight in RichTextBox</title><link>http://blogs.msdn.com/b/cobold/archive/2011/01/31/xml-highlight-in-richtextbox.aspx</link><pubDate>Mon, 31 Jan 2011 11:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10122280</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10122280</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2011/01/31/xml-highlight-in-richtextbox.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Recently I&amp;rsquo;ve been looking for some piece of code that would perform XML highlighting in a Rich Text Box. The Internet provides several free samples and several commercial samples but I wasn&amp;rsquo;t really satisfied with what I found, mainly because it involved using an XMLTextReader object, which does not help for WYSWYG editing of the XML file.&lt;/p&gt;
&lt;p&gt;So I created a simple C# function that formats the text content from a RichTextBox:&lt;/p&gt;
&lt;p&gt;public static void HighlightRTF(RichTextBox rtb)&lt;/p&gt;
&lt;p&gt;The complexity is roughly O( n ), where n is the number of characters in the XML file.&lt;/p&gt;
&lt;p&gt;Here is the result:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/7608.image_5F00_4B088F2B.png"&gt;&lt;img height="239" width="617" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/0434.image_5F00_thumb_5F00_7E247CFA.png" alt="image" border="0" title="image" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll find the function in the text attachment.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10122280" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-12-22-80/highlightRTF.txt" length="4243" type="text/plain" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/XML/">XML</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/RichTextBox/">RichTextBox</category></item><item><title>Create metafile from icon and label</title><link>http://blogs.msdn.com/b/cobold/archive/2010/12/22/create-metafile-from-icon-and-label.aspx</link><pubDate>Wed, 22 Dec 2010 09:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108037</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10108037</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/12/22/create-metafile-from-icon-and-label.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;Going further on the Windows Metafile problematic from a &lt;a target="_blank" href="http://blogs.msdn.com/b/cobold/archive/2010/08/23/emf-untangled.aspx"&gt;previous post&lt;/a&gt;, I&amp;rsquo;ve created a sample code for illustration a pretty useful functionality from OLE.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;What the OLE function implemented here does is to generate a metafile with the icon and label for a specific file:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/5280.clip_5F00_image002_5F00_4A8E6533.jpg"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;img height="101" width="86" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/5518.clip_5F00_image002_5F00_thumb_5F00_1F865161.jpg" alt="clip_image002" border="0" title="clip_image002" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;The way to do this is:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;1. Call SHGetFileInfo to get the HICON associated to a specific extension&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;2. Call OleMetafilePictFromIconAndLabel for generating a metafile from a label and an icon&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;3. Call CopyMetaFile to save the memory metafile to a WMF file&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;Attached you can find the CPP and EXE for this sample.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;MSDN documentation for this function:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;"&gt;http://msdn.microsoft.com/en-us/library/ms683934(VS.85).aspx&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108037" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-10-80-37/cmf.zip" length="11292" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/C_2B002B00_/">C++</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OLE/">OLE</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/EMF/">EMF</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/EMF_2B00_/">EMF+</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/SHGetFileInfo/">SHGetFileInfo</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OleMetafilePictFromIconAndLabel/">OleMetafilePictFromIconAndLabel</category></item><item><title>DLL Injection</title><link>http://blogs.msdn.com/b/cobold/archive/2010/10/22/dll-injection.aspx</link><pubDate>Fri, 22 Oct 2010 11:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10079428</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10079428</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/10/22/dll-injection.aspx#comments</comments><description>&lt;p&gt;In a previous &lt;a href="http://blogs.msdn.com/b/cobold/archive/2010/09/06/extra-events-for-excel.aspx"&gt;post&lt;/a&gt;, I was discussing the idea of adding more events to Excel by adding a window hook.&lt;/p&gt;  &lt;p&gt;Under the hood, the idea is that we can load a DLL in the Excel process simply by transforming that DLL into a COM add-in, which is automatically loaded by Excel.&lt;/p&gt;  &lt;p&gt;This post covers the situation of programs that don’t implement an add-in mechanism so loading a DLL into their process requires DLL injection.&lt;/p&gt;  &lt;p&gt;The topic of DLL injection has been covered in various other articles [&lt;a href="http://research.microsoft.com/apps/pubs/default.aspx?id=68568"&gt;1&lt;/a&gt;][&lt;a href="http://www.thehackerslibrary.com/?p=659"&gt;2&lt;/a&gt;], so this post is mainly a summary and a sample of the basic mechanism for DLL injection.&lt;/p&gt;  &lt;p&gt;We need to create a DLL that attaches a Windows hook when loaded. We then need to load this DLL through DLL injection in the address space of the target program.&lt;/p&gt;  &lt;p&gt;So the basic steps are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a DLL&lt;/li&gt;    &lt;li&gt;In the DllMain method of the DLL attach a windows hook which will log some CBT messages&lt;/li&gt;    &lt;li&gt;Start the target process&lt;/li&gt;    &lt;li&gt;Allocate some memory in the address space of the target process&lt;/li&gt;    &lt;li&gt;Write the path to the DLL in the allocated memory&lt;/li&gt;    &lt;li&gt;Call the LoadLibrary function from the kernel32 library in the target process passing the allocated memory as an argument. This will load the library specified by the written path.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Notes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Step 4: Uses VirtualAllocEx&lt;/li&gt;    &lt;li&gt;Step 5: Uses WriteProcessMemory&lt;/li&gt;    &lt;li&gt;Step 6: Uses CreateRemoteThread with the address of the LoadLibrary function taken from GetProcAddress&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As mentioned in the following &lt;a href="http://blogs.msdn.com/b/vcblog/archive/2007/01/16/spy-internals.aspx"&gt;post&lt;/a&gt;, this is the main idea behind monitoring software such as Spy++ or other profiles.&lt;/p&gt;  &lt;p&gt;A very cool implementation was done in: &lt;a title="http://easyhook.codeplex.com/" href="http://easyhook.codeplex.com/"&gt;http://easyhook.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10079428" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-07-94-28/MyInject.zip" length="102723" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/C_2B002B00_/">C++</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Hook/">Hook</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/SetWindowsHookEx/">SetWindowsHookEx</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/DLL/">DLL</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/monitor/">monitor</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/injection/">injection</category></item><item><title>Extra Events for Excel</title><link>http://blogs.msdn.com/b/cobold/archive/2010/09/06/extra-events-for-excel.aspx</link><pubDate>Mon, 06 Sep 2010 08:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10058421</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10058421</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/09/06/extra-events-for-excel.aspx#comments</comments><description>&lt;p&gt;As a developer of Automation solutions for Microsoft Office one might feel the need of some extra events. Quoting from the &lt;a href="http://msdn.microsoft.com/en-us/library/bb149135(office.12).aspx"&gt;MSDN&lt;/a&gt; VBA Object Model reference, here is the list of events from the Excel.Application object:&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb225813(office.12).aspx"&gt;AfterCalculate Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb238800(office.12).aspx"&gt;CalculationDone Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb242002(office.12).aspx"&gt;NewWorkbook Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237636(office.12).aspx"&gt;SheetActivate Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237645(office.12).aspx"&gt;SheetBeforeDoubleClick Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237657(office.12).aspx"&gt;SheetBeforeRightClick Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237669(office.12).aspx"&gt;SheetCalculate Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237681(office.12).aspx"&gt;SheetChange Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237684(office.12).aspx"&gt;SheetDeactivate Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237692(office.12).aspx"&gt;SheetFollowHyperlink Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237700(office.12).aspx"&gt;SheetPivotTableUpdate Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237710(office.12).aspx"&gt;SheetSelectionChange Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237728(office.12).aspx"&gt;WindowActivate Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237737(office.12).aspx"&gt;WindowDeactivate Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb237742(office.12).aspx"&gt;WindowResize Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb210512(office.12).aspx"&gt;WorkbookActivate Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb210517(office.12).aspx"&gt;WorkbookAddinInstall Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb210519(office.12).aspx"&gt;WorkbookAddinUninstall Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb223990(office.12).aspx"&gt;WorkbookAfterXmlExport Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb223993(office.12).aspx"&gt;WorkbookAfterXmlImport Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb223998(office.12).aspx"&gt;WorkbookBeforeClose Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224004(office.12).aspx"&gt;WorkbookBeforePrint Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224006(office.12).aspx"&gt;WorkbookBeforeSave Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224012(office.12).aspx"&gt;WorkbookBeforeXmlExport Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224018(office.12).aspx"&gt;WorkbookBeforeXmlImport Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224025(office.12).aspx"&gt;WorkbookDeactivate Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224029(office.12).aspx"&gt;WorkbookNewSheet Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224037(office.12).aspx"&gt;WorkbookOpen Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224041(office.12).aspx"&gt;WorkbookPivotTableCloseConnection Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224045(office.12).aspx"&gt;WorkbookPivotTableOpenConnection Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb238801(office.12).aspx"&gt;WorkbookRowsetComplete Event&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb224050(office.12).aspx"&gt;WorkbookSync Event&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What if these events are not enough?&lt;/p&gt;
&lt;p&gt;The best solution would obviously be if Microsoft extended the Object Model so as to include the needed events. This is pretty hard due to the large number of the possible application events (think for instance about the event &amp;ldquo;Sheet After Follow Hyperlink Success&amp;rdquo; &amp;ndash; imaginary event triggered when a hyperlink has been clicked and the target web site can be reached)&lt;/p&gt;
&lt;p&gt;My solution is to use &lt;a href="http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx"&gt;Windows hooks&lt;/a&gt; [link to SetWindowsHookEx]. The idea is that many actions are triggered by Windows messages sent to or by windows in Office applications. I couldn&amp;rsquo;t find any public reference of the way Office applications react to windows messages but we can see this using the tool Spy++ that gets installed together with Visual Studio. Side note: the following blog post from the designer of Spy++ offers some insights about how the tool was built.&lt;/p&gt;
&lt;p&gt;The most obvious message that can be tapped is the &lt;a href="http://msdn.microsoft.com/en-us/library/ms632621(VS.85).aspx"&gt;WM_ENABLE&lt;/a&gt; message sent received when a window gets enabled or disabled when a modal dialog is shown. This is not particular to Office applications, other applications have the same behavior (e.g. Notepad).&lt;/p&gt;
&lt;p&gt;My first attempt was to intercept this message in VBA by basically adding a hook that calls a VBA function when a message is received. The problems with this approach are:&lt;/p&gt;
&lt;p&gt;1) A hook of type WH_CALLWNDPROC is added for all messages reaching the Window&amp;rsquo;s main procedure, no only for WM_ENABLE. We&amp;rsquo;ll then have to check in the function what message was received and only care about WM_ENABLE&lt;/p&gt;
&lt;p&gt;2) Invoking the VBA function is really slow. The approach actually works but, because the number of messages received by the window is enormous, Excel will basically hang because of the amount of VBA code it will need to execute.&lt;/p&gt;
&lt;p&gt;As such, I decided to include this in a COM add-in, which obviously works a lot faster. Event with the Visual Studio Wizard, building a COM add-in directly from the IDTExtensibility2&amp;nbsp; interface is not really a piece of cake. Luckily there are some cool samples that helped me easily implement the Ribbon custom UI and the button click event handler:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee941475.aspx"&gt;Building a C++ Add-in for Outlook 2010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx"&gt;Using RibbonX with C++ and ATL&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Having these samples as start point, I can go ahead and add a Window hook when the button gets pressed.&lt;/p&gt;
&lt;p&gt;myHook = SetWindowsHookEx(WH_CALLWNDPROC,GetWinProc , (HINSTANCE)NULL, GetCurrentThreadId());&lt;/p&gt;
&lt;p&gt;In the callback, I can simply check is a WM_ENABLE message was sent to the main Excel Application window:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;LRESULT CALLBACK GetWinProc(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;__in&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt; code,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;__in&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;WPARAM wParam,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;__in&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;LPARAM lParam&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (code &amp;lt; 0) &lt;span style="color: green;"&gt;// do not process message &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; CallNextHookEx(myHook, code, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;wParam, lParam); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;CWPSTRUCT *cwp = (CWPSTRUCT*)lParam;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;(cwp-&amp;gt;message == WM_ENABLE){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;((&lt;span style="color: blue;"&gt;long&lt;/span&gt;)(XLApp-&amp;gt;Hwnd) == (&lt;span style="color: blue;"&gt;long&lt;/span&gt;)(cwp-&amp;gt;hwnd)){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;(cwp-&amp;gt;wParam)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MessageBoxW(NULL,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;L&lt;span style="color: #a31515;"&gt;"Window enabled"&lt;/span&gt;, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;L&lt;span style="color: #a31515;"&gt;"Message from ExcelHook"&lt;/span&gt;, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MB_OK | MB_ICONINFORMATION); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 4;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MessageBoxW(NULL,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;L&lt;span style="color: #a31515;"&gt;"Window disabled"&lt;/span&gt;, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;L&lt;span style="color: #a31515;"&gt;"Message from ExcelHook"&lt;/span&gt;, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MB_OK | MB_ICONINFORMATION); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; CallNextHookEx(myHook, code, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;wParam, lParam); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A sample usage scenario: closing the Print dialog. When I press CTRL-P the print dialog is opened but before that, I see a message from my add-in, &amp;ldquo;Window disabled&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;After closing the Print dialog, I see a message from the add-in: &amp;ldquo;Window enabled&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/1070.image_5F00_4.png"&gt;&lt;img height="371" width="548" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/6685.image_5F00_thumb_5F00_1.png" alt="image" border="0" title="image" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Cool huh? :)&lt;/p&gt;
&lt;p&gt;As future development, we have many possibilities as there are many other messages that can be intercepted&amp;nbsp;. MSDN has the list of other windows messages we can intercept using the hooks: &lt;a href="http://msdn.microsoft.com/en-us/library/ff468922(VS.85).aspx" title="http://msdn.microsoft.com/en-us/library/ff468922(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/ff468922(VS.85).aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10058421" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-05-84-21/HookExcel.zip" length="27811" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/2007/">2007</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/excel/">excel</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Hook/">Hook</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Add_2D00_in/">Add-in</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/SetWindowsHookEx/">SetWindowsHookEx</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Events/">Events</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/COM/">COM</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/WM_5F00_ENABLE/">WM_ENABLE</category></item><item><title>EMF+ Untangled</title><link>http://blogs.msdn.com/b/cobold/archive/2010/08/23/emf-untangled.aspx</link><pubDate>Mon, 23 Aug 2010 11:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10053081</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10053081</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/08/23/emf-untangled.aspx#comments</comments><description>&lt;p&gt;A common belief regarding the EMF format, at least as it appears by browsing technical blog posts, is that this format was never documented by Microsoft and that there are many unknown facts about it. This opinion is wrong, as the format has complete publicly available specifications posted on &lt;a href="http://msdn.microsoft.com/en-us/library/cc230724(PROT.10).aspx"&gt;MSDN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That being said, I do admit that the documentation for how EMF can be used is pretty scarce and, from a developer&amp;rsquo;s point of view, the expectations would be to have an SDK or something similar that would help parsing EMF and would create a bijection between the binary format and a class structure.&lt;/p&gt;
&lt;p&gt;This post will not go as far as propose an SDK but will hopefully represent a first step into this direction.&lt;/p&gt;
&lt;h3&gt;First takeaway &amp;ndash; listing EMF records and objects&lt;/h3&gt;
&lt;p&gt;The attached program (EMF Lister) will parse an EMF+ file and will list all the records from a binary perspective.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/7245.emflister_5F00_2.png"&gt;&lt;img height="198" width="578" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-28-65-metablogapi/3443.emflister_5F00_thumb.png" alt="emflister" border="0" title="emflister" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Achieving this is not really rocket-science, as we have &lt;a href="http://msdn.microsoft.com/en-us/library/ms142060(VS.90).aspx"&gt;a method&lt;/a&gt; from the Graphics class that enumerates the EMF records of a Graphics object.&lt;/p&gt;
&lt;h2&gt;Second takeaway &amp;ndash; generating an EMF file&lt;/h2&gt;
&lt;p&gt;A very easy way demonstrated with this sample code is to create an EMF using the drawing methods for a Graphics object.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take the following record from the sample EMF file:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;FillRects 49152(16 bytes) EE 82 EE FF 01 00 00 00 00 00 00 00 80 02 E0 01&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was generated from the C# method:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;g.FillRectangle(Brushes.Violet, 0, 0, width, height);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;(where width = 640, height = 480).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Checking the specifications for the &lt;a href="http://msdn.microsoft.com/en-us/library/cc230936(v=PROT.10).aspx"&gt;FillRects&lt;/a&gt; record, we can see how the two link together:&lt;/p&gt;
&lt;p&gt;EE 82 EE FF and the Flags: 49152 = define the Brush being used for filling rectangles.&lt;/p&gt;
&lt;p&gt;01 00 00 00 = number of rectangles (one rectangle). &lt;/p&gt;
&lt;p&gt;00 00, 00 00, 80 02/ 0x280, E0 01/ 0x1E0 = 0, 0, 640, 480 &amp;ndash; the left, top, width and height of the rectangle.&lt;/p&gt;
&lt;p&gt;For more details regarding how brushes and pens are saved, please check the EMF+ object &lt;a href="http://msdn.microsoft.com/en-us/library/cc231005(v=PROT.10).aspx"&gt;specifications&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;========================&lt;/p&gt;
&lt;p&gt;Using the EMF Lister:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Usage: EMFLister.exe &amp;lt;EMF input&amp;gt; [TXT output]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;for parsing EMF input&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;EMFLister.exe&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;for generating the sample.EMF file in the current folder&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Additional information:&lt;/p&gt;
&lt;p&gt;There is a very useful Codeplex project that (among other features) converts XAML to EMF: &lt;a href="http://xamltoys.codeplex.com/" title="http://xamltoys.codeplex.com/"&gt;http://xamltoys.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10053081" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-05-30-81/EMFLister.zip" length="6342" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/EMF/">EMF</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/EMF_2B00_/">EMF+</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/EMF+lister/">EMF lister</category></item><item><title>OLElsTool - Working with OLE storages</title><link>http://blogs.msdn.com/b/cobold/archive/2010/06/04/olelstool-working-with-ole-storages.aspx</link><pubDate>Fri, 04 Jun 2010 06:21:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10019846</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10019846</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/06/04/olelstool-working-with-ole-storages.aspx#comments</comments><description>&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;I&amp;rsquo;m posting here a tool that can be used for viewing and modifying OLE storage.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;The syntax is as follows:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 9pt;"&gt;Usage: OLElsTool.exe &amp;lt;File_In&amp;gt; &amp;lt;Options&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 9pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;-L: list&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 9pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;-X &amp;lt;part&amp;gt; &amp;lt;toFile&amp;gt;: extract part&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 9pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;-M &amp;lt;part&amp;gt; &amp;lt;fromFile&amp;gt;: modify part&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;Sample usage: say we copy an Excel range and paste it into Word using Paste Special, as Link, Microsoft Excel Worksheet Object.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;If we now save as DOC, the Excel object will be embedded as an EMF picture. Using this tool, we can view the contents of the OLE container using:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 9pt;"&gt;OLElsTool.exe Sample.doc -L &amp;gt; lst.txt&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;In the output file, we can see the field: &lt;/span&gt;&lt;span style="mso-special-character: footnote-separator;"&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&amp;nbsp;&amp;hearts;EPRINT&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;To extract it, use:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 9pt;"&gt;OLElsTool.exe Sample.doc &amp;ndash;X  &amp;hearts;EPRINT picture.emf&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;Note: &lt;span style="font-family: Times New Roman;"&gt; &amp;hearts;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;EPRINT contains a non-alphanumeric character (0x03) that can be input by copy-pasting from the listing file (lst.txt).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;Provided is the whole Visual Studio 2008 solution. It is written in Visual C++ using the Win32 API for working with OLE Storage.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0pt 0pt 10pt;"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10019846" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-01-98-46/OLElsTool.zip" length="110829" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/modify/">modify</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OLElsTool/">OLElsTool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Storage/">Storage</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Extract/">Extract</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/C_2B002B00_/">C++</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OLE/">OLE</category></item><item><title>OpenDoc tool unveiled</title><link>http://blogs.msdn.com/b/cobold/archive/2010/06/02/opendoc-tool-unveiled.aspx</link><pubDate>Wed, 02 Jun 2010 07:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10018699</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=10018699</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/06/02/opendoc-tool-unveiled.aspx#comments</comments><description>&lt;p&gt;After the previous blog posts with the OpenDoc tool, I&amp;rsquo;ve learned that, while this tool can be very helpful, it also raises a lot of questions mainly because it lacks proper documentation.&lt;/p&gt;
&lt;p&gt;As such, I&amp;rsquo;ve decided to post the source code giving everybody who is interested the liberty of modifying it to suit their needs.&lt;/p&gt;
&lt;p&gt;It goes without saying that this source code is provided &amp;ldquo;as-is&amp;rdquo; with no support or warranty from Microsoft. However, I am personally interested in any feedback you might have regarding this tool.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10018699" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-01-86-99/OpenDocFull.zip" length="9054" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/XPath/">XPath</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OpenDoc/">OpenDoc</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/XLSX/">XLSX</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/DOCX/">DOCX</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category></item><item><title>OpenDoc tool reloaded</title><link>http://blogs.msdn.com/b/cobold/archive/2010/04/02/opendoc-tool-reloaded.aspx</link><pubDate>Fri, 02 Apr 2010 12:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9989495</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=9989495</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/04/02/opendoc-tool-reloaded.aspx#comments</comments><description>&lt;P&gt;In a previous &lt;A href="http://blogs.msdn.com/cobold/archive/2010/03/08/working-with-openxml-documents.aspx" target=_blank mce_href="http://blogs.msdn.com/cobold/archive/2010/03/08/working-with-openxml-documents.aspx"&gt;post&lt;/A&gt;, I described a tool for editing OpenXML documents from a managed context.&lt;/P&gt;
&lt;P&gt;I've added three more features for some common tasks:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;STRONG&gt;1. Remove a part&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Syntax:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;OpenDoc.exe -r &amp;lt;Input file&amp;gt; &amp;lt;Part&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Sample usage scenarios&lt;/U&gt;: removing the calculation chain, removing unwanted resources, removing slides, worksheets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;STRONG&gt;2. Remove all attributes&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Syntax:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;OpenDoc.exe -t &amp;lt;Input file&amp;gt; &amp;lt;Part&amp;gt; &amp;lt;XPath&amp;gt; removeAttibutes&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Sample usage scenarios&lt;/U&gt;: fixing corrupt elements.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The attached archive shows a sample usage: repairing an Excel workbook by:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;removing the calcChain.xml part&lt;/LI&gt;
&lt;LI&gt;removing the calcChain relationship&lt;/LI&gt;
&lt;LI&gt;removing the shared formulas from cell entries&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The batch looks like this:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;-t Corruptible.xlsm /xl/worksheets/sheet1.xml //n:sheetData/n:row/n:c/n:f[@t='shared'] removeAttributes&lt;BR&gt;-r Corruptible.xlsm /xl/_rels/workbook.xml.rels //n:Relationship[@Target='calcChain.xml']&lt;BR&gt;-r Corruptible.xlsm /xl/calcChain.xml&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;@Update 04/22/2010: Fixed but with long file names in batch mode&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9989495" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-98-94-95/Test.zip" length="13207" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/XPath/">XPath</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OpenDoc/">OpenDoc</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category></item><item><title>Working with OpenXML documents</title><link>http://blogs.msdn.com/b/cobold/archive/2010/03/08/working-with-openxml-documents.aspx</link><pubDate>Mon, 08 Mar 2010 16:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9974859</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=9974859</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/03/08/working-with-openxml-documents.aspx#comments</comments><description>&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-theme-font: minor-latin; mso-bidi-font-family: Calibri"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The default format for saving Excel, Word and PowerPoint documents has luckily changed since Office 2007 to the Open XML formats.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-theme-font: minor-latin; mso-bidi-font-family: Calibri"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;There is good documentation available for these formats on:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;MSDN: Introduction to the Office 2007 file formats:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa338205.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa338205.aspx"&gt;&lt;FONT color=#0000ff&gt;http://msdn.microsoft.com/en-us/library/aa338205.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-theme-font: minor-latin; mso-bidi-font-family: Calibri"&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;FONT size=3&gt;MSDN – sample code: &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Editing Excel cell values from .NET code:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb332058.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb332058.aspx"&gt;&lt;FONT color=#0000ff&gt;http://msdn.microsoft.com/en-us/library/bb332058.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-theme-font: minor-latin; mso-bidi-font-family: Calibri"&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: DE" lang=DE&gt;&lt;FONT size=3&gt;ECMA: &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: DE" lang=DE&gt;ECMA 376 Standard:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;A href="http://www.ecma-international.org/publications/standards/Ecma-376.htm" mce_href="http://www.ecma-international.org/publications/standards/Ecma-376.htm"&gt;&lt;SPAN style="mso-ansi-language: DE" lang=DE&gt;&lt;FONT color=#0000ff&gt;http://www.ecma-international.org/publications/standards/Ecma-376.htm&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: DE" lang=DE&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: DE" lang=DE&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The following tool makes it very easy to view and modify Open XML documents.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The basic syntax is:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;STRONG&gt;OpenDoc.exe &amp;lt;mode&amp;gt; &amp;lt;Input file&amp;gt; &amp;lt;Part&amp;gt; &amp;lt;XPath&amp;gt; [Value] [Attribute]&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;What the tools enables one to do is to select specific nodes from a part of an Open XML document and display its value and attribute, modify the value or attributes and to delete a node.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The easiest way to work with it is the batch mode:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;STRONG&gt;OpenDoc.exe –b &amp;lt;Path to batch file&amp;gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;A batch file is any text file that contains processing commands one per line.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Here is a sample batch file:&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA0CD 1.0pt; mso-border-themecolor: accent1; mso-yfti-tbllook: 1152; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-themetint: 191" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 12.45pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 280.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #a7bfde; HEIGHT: 12.45pt; BORDER-TOP: #7ba0cd 1pt solid; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 127" vAlign=top width=374&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; mso-bidi-font-weight: bold"&gt;&lt;FONT size=3&gt;-sn Book1.xlsx /xl/worksheets/sheet1.xml //n:sheetData/n:row/n:c[@r='D1']/n:v&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 13.45pt; mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 280.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 13.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191" vAlign=top width=374&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; mso-bidi-font-weight: bold"&gt;&lt;FONT size=3&gt;-m Book1.xlsx /xl/worksheets/sheet1.xml //n:sheetData/n:row/n:c[@r='D1']/n:v 20&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 12.45pt; mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 280.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #a7bfde; HEIGHT: 12.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 127; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191" vAlign=top width=374&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; mso-bidi-font-weight: bold"&gt;&lt;FONT size=3&gt;-sn Book1.xlsx /xl/worksheets/sheet1.xml //n:sheetData/n:row/n:c[@r='D1']/n:v&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 12.45pt; mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 280.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 12.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191" vAlign=top width=374&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; mso-bidi-font-weight: bold"&gt;&lt;FONT size=3&gt;-r Book1.xlsx /xl/worksheets/sheet1.xml //n:sheetData/n:row/n:c[@r='C1']&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 13.45pt; mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 280.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #a7bfde; HEIGHT: 13.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 127; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191" vAlign=top width=374&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; mso-bidi-font-weight: bold"&gt;&lt;FONT size=3&gt;-sa Book1.xlsx /xl/workbook.xml //n:sheets/n:sheet[@name='Sheet2']&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 13.45pt; mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 280.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 13.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191" vAlign=top width=374&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; mso-bidi-font-weight: bold"&gt;&lt;FONT size=3&gt;-m Book1.xlsx /xl/workbook.xml //n:sheets/n:sheet[@name='Sheet2'] MySheet name&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;What the six sample commands do is as follows:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Display the XML of the node corresponding to address D1 from the XML part of the first worksheet from Book1.xlsx&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Modifies the value of this node to 20 (the cell D1 will show 20 now in Excel)&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Displays the same node again with the updated value&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Remove the XML node for cell C1&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Shows the attributes of sheet entry with the attribute ‘name’ equals ‘Sheet2’&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Modifies the value of attribute ‘name’ of the worksheet entry for Sheet2 with the value ‘MySheet’. If we open the workbook in Excel now, the name of the second sheet will be the one we’ve just assigned.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;FONT size=3 face=Calibri&gt;Command reference:&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA0CD 1.0pt; mso-border-themecolor: accent1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-themetint: 191" class=MsoTableMediumShading1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumShading1Accent1"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 16.2pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #4f81bd; HEIGHT: 16.2pt; BORDER-TOP: #7ba0cd 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; COLOR: white; FONT-SIZE: 12pt; mso-themecolor: background1"&gt;Command&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #4f81bd; HEIGHT: 16.2pt; BORDER-TOP: #7ba0cd 1pt solid; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; COLOR: white; FONT-SIZE: 12pt; mso-themecolor: background1"&gt;Meaning&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 15.3pt; mso-yfti-irow: 0"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 15.3pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; FONT-SIZE: 12pt"&gt;-sn; -showNode&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 15.3pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; FONT-SIZE: 12pt"&gt;Displays the XML content of the selected node&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 16.2pt; mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; HEIGHT: 16.2pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 132" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; FONT-SIZE: 12pt"&gt;-sa; -showAtt&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; HEIGHT: 16.2pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; FONT-SIZE: 12pt"&gt;Displays the attributes of the selected node&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 8.65pt; mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 8.65pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; FONT-SIZE: 12pt"&gt;-m; -modify&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 8.65pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; FONT-SIZE: 12pt"&gt;Modifies the Inner XML or the attribute value of the selection&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 8.65pt; mso-yfti-irow: 3; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; HEIGHT: 8.65pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 132" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; FONT-SIZE: 12pt"&gt;-r; -remove&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 142.8pt; PADDING-RIGHT: 5.4pt; HEIGHT: 8.65pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" vAlign=top width=190&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Cordia New','sans-serif'; FONT-SIZE: 12pt"&gt;Removes the selected XML node&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The XPath argument must evaluate to a legal XPath expression.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Example: //n:sheets/n:sheet[@name='Sheet2']&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The reason why “n:” is used for qualifying every node name is linked to the XML namespaces that all the internal XML files inside an Open XML document are declared in. The namespace will be automatically resolved by the tool.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The download from the attachment contains the EXE, the sample XLSX and the sample batch file.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;In order to run the program, the .NET Framework 3.5 is required.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9974859" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-97-48-59/OpenDoc.zip" length="13502" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/XPath/">XPath</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/OpenDoc/">OpenDoc</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/XLSX/">XLSX</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/view/">view</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/DOCX/">DOCX</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/modify/">modify</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/processing/">processing</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/PPTX/">PPTX</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/-net/">.net</category></item><item><title>External links in Excel files</title><link>http://blogs.msdn.com/b/cobold/archive/2010/03/05/external-links-in-excel-files.aspx</link><pubDate>Fri, 05 Mar 2010 16:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9973606</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=9973606</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/03/05/external-links-in-excel-files.aspx#comments</comments><description>&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;FONT color=#365f91 size=5 face=Cambria&gt;Topic&lt;/FONT&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This is a post that contains a tool for analyzing the external links in an Excel Workbook.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The tool is intended to provide information regarding the linked workbooks, the cells from a workbook that contain external links, as well as the target worksheets and cells.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;It will generate an XML report like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;version&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;?&amp;gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;workbook&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;Testing.xls&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;numberOfLinks&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;4&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;link&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;XXXX.xlsm&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;link&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;link&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;YYYY.xlsm&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;link&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;link&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ZZZZ.xlsm&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;link&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;link&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;TTTT.xlsm&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;link&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;oldLinks&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;oldLink&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;C:\Test\Sites\XXXX.xlsm&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;oldLink&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;oldLink&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;C:\Test\Sites\YYYY.xlsm&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;oldLink&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;oldLink&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;C:\Test\Sites\ZZZZ.xlsm&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;oldLink&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;oldLink&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;C:\Test\Sites\TTTT.xlsm&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;oldLink&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;oldLinks&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;reference&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;toWb&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;XXXX.xlsm&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;fromSheet&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Sheet1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;toSheet&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Sheet2&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;cell&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;from&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;$G$10&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;to&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;S$32&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;cell&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;from&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;$H$10&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;to&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;T$32&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;…&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The input workbook can be both XLS and XLSX/XLSM format (Office Automation is used).&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;You also have the option to replace the external links in a workbook by specifying a path where the target workbooks are located and then pressing the "Fix" button. This is very useful for changing the location of a workbook with lots of external links. (see &lt;A href="http://support.microsoft.com/kb/328440"&gt;http://support.microsoft.com/kb/328440&lt;/A&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;To access all functionalities, open the file in Excel 2007 and choose the second tab from the ribbon. There is a single button there.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;You can freely modify the VBA code (and I'll be very thankful if you provide feedback and/or bug reports).&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Enjoy!&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;A title=Download href="http://blogs.msdn.com/cobold/attachment/9973606.ashx" target=_blank mce_href="http://blogs.msdn.com/cobold/attachment/9973606.ashx"&gt;Download&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9973606" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-97-36-06/AnalyseLinks.xlsm" length="42998" type="application/octet-stream" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Tool/">Tool</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/XML/">XML</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/sample/">sample</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/report/">report</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/external+links/">external links</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/vba/">vba</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/2007/">2007</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/excel/">excel</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/kb328440/">kb328440</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/code/">code</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/macro/">macro</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/2003/">2003</category><category domain="http://blogs.msdn.com/b/cobold/archive/tags/analyze/">analyze</category></item><item><title>Collecting crash dumps</title><link>http://blogs.msdn.com/b/cobold/archive/2010/03/01/collection-crash-dumps.aspx</link><pubDate>Mon, 01 Mar 2010 13:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9970825</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=9970825</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/03/01/collection-crash-dumps.aspx#comments</comments><description>&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;FONT color=#365f91&gt;Introduction&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Getting near to the cause of an application crash once one has a crash dump is one of the easiest debugging tasks. The main problem in these cases is how to actually acquire a crash dump. This post discusses some basic scenarios for getting a crash dump.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;To test the basic scenarios, we’ll use an application where crash occur no so randomly as in real-life – the CrashMe application from &lt;A href="http://windbg.info/" mce_href="http://windbg.info/"&gt;http://windbg.info/&lt;/A&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;All one needs to do to make this application crash is to press one of the buttons from the “Crash Actions” group like “Stack overflow” or “Division by NULL”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;FONT color=#365f91&gt;Using the Windows error reporting mechanism&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Windows has its own error reporting mechanism which detects when an application is crashing and attaches a debugger automatically. The details about this are provided in:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;A href="http://support.microsoft.com/kb/103861" mce_href="http://support.microsoft.com/kb/103861"&gt;http://support.microsoft.com/kb/103861&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;In short: there is the registry key: &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;The default value of this is: DRWTSN32 -p %ld -e %ld –g . This will change if you install other software, like, for instance, Visual Studio.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;FONT color=#365f91&gt;Using ADPlus from Debugging tools for Windows (CDB)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;The Adplus script is very useful when one can easily reproduce a crash. This comes with the Debugging Tools for Windows (which include WinDBG, CDB and other debugging tools).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;The newest version of Debugging Tools for Windows is part of the Windows Driver Kit 7.1.0, release 26&lt;SUP&gt;th&lt;/SUP&gt; February 2010: &lt;A href="http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx" mce_href="http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx"&gt;http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;For the old Adplus script, we just need the following steps:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;a)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Get the PID of the application that will crash using “tasklist” from Command Prompt or the PID column from Task Manager (Processes -&amp;gt; View -&amp;gt; Select columns…)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;b)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;From Command Prompt, run: &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;cscript adplus.vbs –crash –p [PID]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;This will attach the CDB debugger to the crashing process and will collect 1&lt;SUP&gt;st&lt;/SUP&gt; chance Mini Dumps and 2&lt;SUP&gt;nd&lt;/SUP&gt; chance full dumps for the attached process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;The dumps will normally be stored in the same folder where Adplus is installed into a special folder. The DMP files will have meaningful names like:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;PID-3792__CRASHME.EXE__2nd_chance_IntegerDivide__full_0db0_2010-03-01_13-43-42-677_0ed0.dmp&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Obviously, there are a lot of options available for Adplus. Just run it without any argument and you’ll see the whole range of options.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Note:&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;The newest version of Debugging Tools for Windows contains an executable for Adplus as well as the old version Adplus_old.vbs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;FONT color=#365f91&gt;Using WinDBG&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;WinDBG provides more or less the same functionality as CDB with regards to collecting crash dumps. You can configure the exception handling in the debugger to break only for on 2&lt;SUP&gt;nd&lt;/SUP&gt; chance exceptions (check the WinDBG help).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; tab-stops: 202.4pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;To get a dump from WinDBG you will need to run the command .dump. Sample usage:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; tab-stops: 202.4pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;.dump /mfh /u C:\crash.dmp&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; tab-stops: 202.4pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;The /u switch is very useful because it appends the date, time and PID to the name of the generated dump file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;FONT color=#365f91&gt;What to do when the crashing process will be started in the future&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;An application crash is not always as easily reproducible as the ones from the CrashMe application. The special case when you know that a certain application will crash but don’t know under which circumstances can be handled in at least two ways:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo2"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;a)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Configuring the Windows Error Reporting to collect a customized dump when an application crashes. Here is a sample how to configure CDB to get dumps when any application crashes in Windows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Set the following registry values of the key: &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;Debugger = "C:\Debuggers\cdb.exe" -p %ld -e %ld -g -c "~*k;.dump /mfh /u C:\Dumps\crash.dmp;.kill;qd"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;Auto = “1”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;U&gt;Notes: &lt;o:p&gt;&lt;/o:p&gt;&lt;/U&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;-“C:\Debuggers\cdb.exe” is the path to the CDB debugger, which might vary depending on the installation path of Debugging Tools for Windows.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;-%ld will be provided by Windows and represents the PID of the process where the 2&lt;SUP&gt;nd&lt;/SUP&gt; chance exception occurs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;- After the crash is collected, the crashing process is killed (this is specified by passing a custom command to CDB using the –c switch).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo2"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;b)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Monitoring for a certain process to start and to crash:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;adplus.exe -crash -pmn notepad -o C:\Dumps&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;The parameter passed to adplus in –pmn is the name of the process to monitor and the parameter after –o is the directory where the DMP files will be collected.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;FONT color=#365f91&gt;What to do when the crashing process uses a custom resiliency mechanism&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Microsoft Office uses a custom resiliency mechanism for handling exceptions. It automatically calls Doctor Watson and disregards the Windows Error Reporting.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;To work around this, the easiest thing to do is to rename the registry key:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PCHealth\&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;ErrorReporting\DW\Installed&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;To&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PCHealth\&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;ErrorReporting\DW\_Installed&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-bidi-font-family: Calibri"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 10pt; mso-bidi-theme-font: minor-latin; mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;This way Office will not be able to pass the exceptions to DW and Windows will be able to handle them. Please be careful with this change as it is not a supported scenario. The Office Dr. Watson buckets are very useful for collecting mini dumps from customers and identifying critical problems (so please click on Send next time you see a “Send”/”Don’t send” dialog popping up).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9970825" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cobold/archive/tags/crash+dump+adplus+adplus-exe+WER+DW+_2D00_pmn+CDB+collect+dumps+-dump/">crash dump adplus adplus.exe WER DW -pmn CDB collect dumps .dump</category></item><item><title>Create Smart Document solutions in .NET Framework 2.0</title><link>http://blogs.msdn.com/b/cobold/archive/2010/01/10/create-smart-document-solutions-in-net-framework-2-0.aspx</link><pubDate>Sun, 10 Jan 2010 15:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9946235</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=9946235</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2010/01/10/create-smart-document-solutions-in-net-framework-2-0.aspx#comments</comments><description>Creating a managed Smart Document project or Add-in for Office 2003 is a bit of a headache because of the many configuration problems one might encounter. 
&lt;P&gt;Here is a short summary of the prerequisites of such a project on a target system:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #4BACC6 1.0pt; mso-border-themecolor: accent5; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableLightShadingAccent5 border=1 cellSpacing=0 cellPadding=0 class="MsoTableLightShadingAccent5"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 15.6pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 275.95pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15.6pt; BORDER-TOP: #4bacc6 1pt solid; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5" vAlign=top width=368&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;What to install&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.7pt; mso-yfti-irow: 0"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 275.95pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.7pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=368&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;Microsoft Office 2003 with the following features enabled:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold; mso-fareast-font-family: 'Times New Roman'"&gt;Microsoft Office Excel -&amp;gt; .NET Programmability Support&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold; mso-fareast-font-family: 'Times New Roman'"&gt;Office Tools -&amp;gt;Microsoft Forms 2.0 .NET Programmability Support&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold; mso-fareast-font-family: 'Times New Roman'"&gt;Office Tools -&amp;gt; Smart Tag .NET Programmability &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.7pt; mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 275.95pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.7pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=368&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Why?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.7pt; mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 275.95pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.7pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=368&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;There are some DLLs in the following folder which are required for Office to be able to load managed solutions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;c:\Program Files\Microsoft Office\Office11&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.7pt; mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 275.95pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.7pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=368&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Explanation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.7pt; mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 275.95pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.7pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=368&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;Office 2003 uses the OTKLoadr.dll library to load Visual Studio customizations, smart documents and smart tags.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #4BACC6 1.0pt; mso-border-themecolor: accent5; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableLightShadingAccent5 border=1 cellSpacing=0 cellPadding=0 class="MsoTableLightShadingAccent5"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 15.3pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15.3pt; BORDER-TOP: #4bacc6 1pt solid; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;What to install&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 0"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;Office 2003 PIAs (Primary Interop Assemblies)&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Why?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;This will add the Smart Tag Library to the GAC&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Explanation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;Managed code that implements the ISmartDocument interface requires a reference to the Microsoft.Office.Interop.SmartTag namespace. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;See: &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa195478(office.11).aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa195478(office.11).aspx"&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1"&gt;&lt;FONT face=Calibri&gt;http://msdn.microsoft.com/en-us/library/aa195478(office.11).aspx&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;Download for Office 2003 PIA:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad&amp;amp;displaylang=en&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #4BACC6 1.0pt; mso-border-themecolor: accent5; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableLightShadingAccent5 border=1 cellSpacing=0 cellPadding=0 class="MsoTableLightShadingAccent5"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 15.3pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15.3pt; BORDER-TOP: #4bacc6 1pt solid; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;What to install&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 0"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;VSTOR 2005 SE&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Why?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;The VSTO runtime automatically installs the newest version of OTKLOADR.DLL and additionally adds the CLR Lockback registry key ([HKEY_CURRENT_USER\Software\Classes\Interface\{000C0601-0000-0000-C000-000000000046}]). This enables Office 2003 to run .NET 2.0 code, as initially Office 2003 could not do this.&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Explanation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 252.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=337&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;Download for VSTOR 2005 SE&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=f5539a90-dc41-4792-8ef8-f4de62ff1e81&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=f5539a90-dc41-4792-8ef8-f4de62ff1e81&amp;amp;displaylang=en"&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1"&gt;&lt;FONT face=Calibri&gt;http://www.microsoft.com/downloads/details.aspx?familyid=f5539a90-dc41-4792-8ef8-f4de62ff1e81&amp;amp;displaylang=en&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;Alternately, one can install the KB907417, which includes the newest version OTKLoadr, and set up the registry key manually.&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #4BACC6 1.0pt; mso-border-themecolor: accent5; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableLightShadingAccent5 border=1 cellSpacing=0 cellPadding=0 class="MsoTableLightShadingAccent5"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 15.3pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 275.2pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15.3pt; BORDER-TOP: #4bacc6 1pt solid; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5" vAlign=top width=367&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;What to install&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 0"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 275.2pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=367&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;Extensibility fix&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 275.2pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=367&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Why?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 275.2pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=367&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;Adds the Extensibility.dll to the GAC.&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 275.2pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=367&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Explanation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 23.4pt; mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 275.2pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 23.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=367&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;This is included in the extensibilityMSM,msi file from KB 908002. &lt;B&gt;&lt;A href="http://support.microsoft.com/kb/908002"&gt;http://support.microsoft.com/kb/908002&lt;/A&gt;&lt;/B&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;The IDTExtensibility2 interface is required for all add-ins and automation projects (it includes events like loading, unloading, updating)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/extensibility.idtextensibility2.aspx"&gt;&lt;FONT face=Calibri&gt;http://msdn.microsoft.com/en-us/library/extensibility.idtextensibility2.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #4BACC6 1.0pt; mso-border-themecolor: accent5; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableLightShadingAccent5 border=1 cellSpacing=0 cellPadding=0 class="MsoTableLightShadingAccent5"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 15.3pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15.3pt; BORDER-TOP: #4bacc6 1pt solid; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;What to install&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 0"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri&gt;.NET Framework Runtime 1.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Why?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;See the explanation for “FullTrust”&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Explanation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 0.5in; mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 0.5in; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;Download:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;&lt;A title=http://www.microsoft.com/downloads/details.aspx?familyid=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;amp;displaylang=en href="http://www.microsoft.com/downloads/details.aspx?familyid=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;amp;displaylang=en&lt;o:p&gt;&lt;/o:p&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #4BACC6 1.0pt; mso-border-themecolor: accent5; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableLightShadingAccent5 border=1 cellSpacing=0 cellPadding=0 class="MsoTableLightShadingAccent5"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 15.3pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15.3pt; BORDER-TOP: #4bacc6 1pt solid; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;What to install&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 0"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri&gt;.NET Framework 2.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Why?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;Obviously, the code is written in .NET 2.0 and requires the framework&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Explanation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 0.5in; mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 0.5in; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;Download:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;amp;displaylang=en&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #4BACC6 1.0pt; mso-border-themecolor: accent5; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableLightShadingAccent5 border=1 cellSpacing=0 cellPadding=0 class="MsoTableLightShadingAccent5"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 15.3pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15.3pt; BORDER-TOP: #4bacc6 1pt solid; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;What to install&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 0"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;The installed DLL should be added to the “FullTrust” zone for both .NET 1.1 and .NET 2.0&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Why?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;Automation code that is executed via the OTKLoadr appears to follow the permission guidelines of .NET 1.1. However, as the solution most likely contains code whose call stack go through the&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;.NET 2.0 Framework (e.g. a simple MessageBox.Show()) , the code needs to be trusted also by the .NET 2.0 Framework&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="COLOR: black; mso-themecolor: text1"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.45pt; mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; HEIGHT: 14.45pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-right-themecolor: accent5; mso-border-left-themecolor: accent5" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Explanation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 0.5in; mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 278.05pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d2eaf1; HEIGHT: 0.5in; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #4bacc6 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent5; mso-background-themecolor: accent5; mso-background-themetint: 63" vAlign=top width=371&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold"&gt;&lt;FONT face=Calibri&gt;Add the DLL to the Full Trust zone using the CASPol tool from the .NET Framework:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1"&gt;C:\Windows\Microsoft.NET\Framework\v2.0.50727\ and&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1"&gt;C:\Windows\Microsoft.NET\Framework\v1.1.4322\&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1"&gt;CASPol.exe –ag My_Computer_Zone –url “C:\Users\[Username\Local Settings\Application Data\Microsoft\Schemas\[NameSpace]\[Name].DLL” FullTrust&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 9pt; mso-themecolor: text1; mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Here is a sample Visual Studio 2008 project which creates a very basic Smart Document DLL in .NET 2.0. It also contains the manifest and a sample schema:&lt;/P&gt;
&lt;P&gt;&lt;A title=SmartDocument.ZIP href="http://blogs.msdn.com/cobold/attachment/9946235.ashx" target=_blank mce_href="http://blogs.msdn.com/cobold/attachment/9946235.ashx"&gt;SmartDocument.ZIP&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9946235" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-94-62-35/SmartDocument.ZIP" length="3694" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/cobold/archive/tags/Smart+Document+-NET+2-0+908002+KB908002+KB/">Smart Document .NET 2.0 908002 KB908002 KB</category></item><item><title>WinDBG Tutorial - Part 3</title><link>http://blogs.msdn.com/b/cobold/archive/2009/09/18/windbg-tutorial-part-3.aspx</link><pubDate>Fri, 18 Sep 2009 18:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9896828</guid><dc:creator>Costin Boldisor</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cobold/rsscomments.aspx?WeblogPostID=9896828</wfw:commentRss><comments>http://blogs.msdn.com/b/cobold/archive/2009/09/18/windbg-tutorial-part-3.aspx#comments</comments><description>&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Just short piece of information about Remote Debugging.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Remote Debugging actually means connecting the debugger on one computer to a process on another computer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Typical scenario: PC 1 has a program that needs to be debugged. PC 2 does the debugging.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v:shape style="Z-INDEX: 4; POSITION: absolute; MARGIN-TOP: 20.45pt; WIDTH: 70.5pt; HEIGHT: 70.5pt; VISIBILITY: visible; MARGIN-LEFT: 9.4pt; mso-wrap-style: square; mso-wrap-distance-left: 9pt; mso-wrap-distance-top: 0; mso-wrap-distance-right: 9pt; mso-wrap-distance-bottom: 0; mso-position-horizontal: absolute; mso-position-horizontal-relative: text; mso-position-vertical: absolute; mso-position-vertical-relative: text" id=_x0000_s1030 type="#_x0000_t75"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;v:imagedata o:title="" src="file:///C:\Users\cobold\AppData\Local\Temp\1\msohtmlclip1\01\clip_image001.wmz"&gt;&lt;/v:imagedata&gt;&lt;?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" /&gt;&lt;w:wrap type="square"&gt;&lt;/w:wrap&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/v:shape&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/cobold/attachment/9896828.ashx" mce_src="http://blogs.msdn.com/cobold/attachment/9896828.ashx"&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Advantages:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;PC 1 might not have symbols and sources for debugging (e.g. PC 1 is user of application, PC 2 is application vendor)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;PC 1 can be installed in a virtual machine&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;PC 2 can debug &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;kernel crashes&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;There are multiple ways of connecting the two PCs (which is normal, as multiple transport protocols are supported), but here is a quick-start for the most typical: via TCP/IP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Steps:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-theme-font: minor-latin" lang=EN-US&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Setup PC 1 as debugging Server:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt 36pt" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If the WinDBG is already started on PC 1, open the Command window and write:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 34.8pt; MARGIN: 0cm 0cm 0pt 36pt" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-ansi-language: EN-US" lang=EN-US&gt;.server &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;tcp:port=&lt;SPAN style="COLOR: red"&gt;4001&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt 36pt" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If WinDBG is not opened, start it from the command prompt with the options:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt 36pt" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-ansi-language: EN-US" lang=EN-US&gt;\:&amp;gt;Windbg.exe &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;-server tcp:port=&lt;SPAN style="COLOR: red"&gt;4001&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-theme-font: minor-latin" lang=EN-US&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Connect PC 2 to PC 1:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt 36pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Open WinDBG from command prompt with arguments:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt 36pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt; mso-ansi-language: EN-US" lang=EN-US&gt;\:&amp;gt;Windbg.exe&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;windbg.exe -remote tcp:server&lt;SPAN style="COLOR: red"&gt;=\\157.58.253.236&lt;/SPAN&gt;,port=&lt;SPAN style="COLOR: red"&gt;4001&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt 36pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Note: The value written in red are only examples. The IP address has to be the one of PC 1 and the port should be one of the free ports of PC 1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraph&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-theme-font: minor-latin" lang=EN-US&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Attach the debugger on PC 1 to a process, open a Dump or whatever. When a debugger is attached on PC 1, PC 2 will be able to debug that process as if it were a local process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;This is only one of the numerous ways of doing remote debugging. There is always the Help -&amp;gt; Search option in WinDBG that you can check for advanced options.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9896828" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-89-68-28/remoteDBG.png" length="20507" type="image/x-png" /></item></channel></rss>