<?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>markda's WebLog</title><link>http://blogs.msdn.com/markda/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Displaying HTML using Silverlight 2</title><link>http://blogs.msdn.com/markda/archive/2008/05/21/displaying-html-using-silverlight-2.aspx</link><pubDate>Thu, 22 May 2008 03:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8530941</guid><dc:creator>markda</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/markda/comments/8530941.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=8530941</wfw:commentRss><description>&lt;P&gt;I&amp;nbsp;recently researched&amp;nbsp;displaying HTML from within a Silverlight 2 application. We have a&amp;nbsp;huge amount of content that is currently rendered as HTML and&amp;nbsp;Silverlight XAML is well suited for displaying UI elements and animations but does not have the kind of layout support we expect from HTML browsers.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Accessing the host page&lt;/U&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A Silverlight&amp;nbsp;application is hosted in an HTML page as an OBJECT element. Silverlight 2 provides an easy way to access the host page from managed code,&amp;nbsp;through&amp;nbsp;the &lt;STRONG&gt;HtmlPage&lt;/STRONG&gt; class. Once the Silverlight plug-in is loaded, the host page document object model (DOM) can be accessed using the static &lt;STRONG&gt;HtmlPage.Document&lt;/STRONG&gt; property (in the System.Windows.Browser namespace). For example, you can place HTML controls on the page and then access these controls through the DOM, create elements, set styles, attach event handlers, etc. You can register managed code to enable it to be called from script, using &lt;STRONG&gt;HtmlPage.RegisterScriptableObject&lt;/STRONG&gt; (see &lt;A class="" href="http://msdn.microsoft.com/en-us/library/cc221414(vs.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc221414(vs.95).aspx"&gt;Calling Managed Code from Client Script&lt;/A&gt;). You can also call script from your Silverlight code using &lt;STRONG&gt;HtmlPage.Window.Invoke&lt;/STRONG&gt; (see &lt;A class="" href="http://msdn.microsoft.com/en-us/library/cc221359(vs.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc221359(vs.95).aspx"&gt;Calling Client Script from Managed Code&lt;/A&gt;). You will need to set the &lt;STRONG&gt;EnableHtmlAccess&lt;/STRONG&gt; property to "true" if you want to make any changes to the DOM.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Overlaying HTML&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;If you are building a Silverlight application but want to display existing HTML content, you can place a DIV/IFRAME pair&amp;nbsp;in the host page&amp;nbsp;and position the DIV over your Silverlight application. Note that the &lt;STRONG&gt;Windowless&lt;/STRONG&gt; property needs to be set to "true" on the Silverlight object. The following code shows how this would be declared in an ASP.NET page.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;lt;div style="height: 100%;"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Silverlight ID="Xaml1" runat="server" EnableHtmlAccess="true" Source="/ClientBin/HtmlOverlay.xap" Version="2.0"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Width="100%" Height="100%" Windowless="true" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="HtmlContainer" class="contentHost"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;iframe id="HtmlFrame" class="contentFrame"&amp;nbsp;scrolling="no" frameborder="0"&amp;gt;&amp;lt;/iframe&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Once the Silverlight plug-in is loaded, you can locate the DIV/IFRAME elements and reposition them over your application. Use an XAML panel (e.g. Grid) to position the DIV according to your XAML layout.&lt;/P&gt;
&lt;P&gt;In your panel constructor:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Loaded += new RoutedEventHandler(Content_Loaded);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.SizeChanged += new SizeChangedEventHandler(Content_SizeChanged);&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;In&amp;nbsp;Content_Loaded:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container = HtmlPage.Document.GetElementById("HtmlContainer");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.containerFrame = this.container.Children[0];&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;In Content_SizeChanged:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIElement root = Application.Current.RootVisual as UIElement;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GeneralTransform gt = this.LayoutRoot.TransformToVisual(root);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point pos = gt.Transform(new Point(0, 0));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container.SetStyleAttribute("left", pos.X.ToString() + "px");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container.SetStyleAttribute("top", pos.Y.ToString() + "px");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container.SetStyleAttribute("width", this.LayoutRoot.ActualWidth.ToString() + "px");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container.SetStyleAttribute("height", this.LayoutRoot.ActualHeight.ToString() + "px");&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;This way, every time your panel is resized, the DIV is repositioned. To navigate the IFRAME to a web page, you'll need to access the window object:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScriptObject frames = (ScriptObject)HtmlPage.Window.GetProperty("frames");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HtmlWindow wnd = frames.GetProperty(this.containerFrame.Id);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;~or~&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;HtmlElement iframe = HtmlPage.Document.GetElementById(this.containerFrame.Id);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; HtmlWindow wnd = iframe.GetProperty("contentWindow") as HtmlWindow;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Then call&amp;nbsp;the Navigate method on the window object:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wnd.Navigate(new Uri("&lt;/STRONG&gt;&lt;A href="http://www.microsoft.com/"&gt;&lt;STRONG&gt;http://www.microsoft.com/&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;"));&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;To be informed when the page is loaded:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.containerFrame.AttachEvent("onload", new EventHandler&amp;lt;HtmlEventArgs&amp;gt;(Content_PageLoaded););&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;From this point, you have the same kind of control over the HTML DOM that you would have from script/DHTML. When the HTML page has loaded, you can access the document:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HtmlDocument doc = wnd.GetProperty("document") as HtmlDocument;&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Note that the document object is only available if the IFRAME is navigated to a page in the same domain as your host page.&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8530941" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/Silverlight+DHTML+DOM+HtmlPage+HTML+overlay/default.aspx">Silverlight DHTML DOM HtmlPage HTML overlay</category></item><item><title>Game Development: XNA Game Studio Express available Aug 30</title><link>http://blogs.msdn.com/markda/archive/2006/08/14/699917.aspx</link><pubDate>Mon, 14 Aug 2006 21:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:699917</guid><dc:creator>markda</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/markda/comments/699917.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=699917</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;Microsoft have announced the XNA Game Studio Express beta. Based on Visual C# Express 2005, this tool will enable creation of Windows and Xbox 360 games using the XNA Framework.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" face=Verdana color=#000000&gt;&lt;STRONG&gt;This is an exciting development for all hobbyist game developers! I'm hoping that there will be a community web site where developers can connect, share knowledge and showcase their work.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;The tool is free but, to create/debug games on the Xbox 360, you will need to buy an&amp;nbsp;XNA "Creators' Club" subscription for $99/year. The FAQ seems to say that only Windows will be supported until later this year. It appears that in the future, you will be able to share your Xbox 360&amp;nbsp;binaries with other users - in the beta you can distribute your source/assets to someone that also has&amp;nbsp;XNA Studio Express.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;No support for Xbox Live or Windows Mobile/Pocket PC.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Managed DirectX 1.1 remains supported but with no new functionality. The XNA Framework will effectively replace Managed DirectX 2.0. There will be guidance provided to help&amp;nbsp;migrate MDX 1.1 code to XNA.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Go to &lt;A href="http://msdn.microsoft.com/directx/xna/"&gt;http://msdn.microsoft.com/directx/xna/&lt;/A&gt;&amp;nbsp;for more information!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=699917" width="1" height="1"&gt;</description></item><item><title>Web Browser/DHTML: Access the XMLDocument property through .NET</title><link>http://blogs.msdn.com/markda/archive/2006/08/10/694822.aspx</link><pubDate>Fri, 11 Aug 2006 01:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:694822</guid><dc:creator>markda</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/markda/comments/694822.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=694822</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;When Internet Explorer requests an XML page from a web server, it will apply an XSL stylesheet. This can be&amp;nbsp;an XSL&amp;nbsp;stylesheet that is provided in the XML file, e.g.:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;?xml-styleheet href="filename.xsl" type="text/xsl" ?&amp;gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;If no stylesheet is provided, Internet Explorer will use a default stylesheet, &lt;A href="res://msxml.dll/DEFAULTSS.xsl"&gt;res://msxml.dll/DEFAULTSS.xsl&lt;/A&gt;,&amp;nbsp;that displays the XML in a hierarchic view.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;If you want to access the original XML document, Internet Explorer provides an XMLDocument&amp;nbsp;property on the document object. It also provides an XSLDocument property that returns the XSL stylesheet that was used.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Because these properties are late-bound (also known as expandos), they do not appear in the MSHTML primary interop assembly. The answer is to use IDispatch to request the property. You can do this with the following code:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;HTMLDocumentClass&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt; doc = (&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;HTMLDocumentClass&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;)webBrowser1.Document.DomDocument;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;Type&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt; myType = doc.GetType();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;IXMLDOMNode&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt; xml = (&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;IXMLDOMNode&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;)myType.InvokeMember( &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;"XMLDocument"&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;BindingFlags&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;.GetProperty, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;, doc, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt; );&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT face=Verdana&gt;You will need to add a reference to msxml3.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=694822" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/markda/archive/tags/Web/default.aspx">Web</category></item><item><title>Rocket Commander Tutorials on Coding4Fun</title><link>http://blogs.msdn.com/markda/archive/2006/04/20/580098.aspx</link><pubDate>Thu, 20 Apr 2006 22:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:580098</guid><dc:creator>markda</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/markda/comments/580098.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=580098</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;The source code and tutorials for the Rocket Commander game are available in this &lt;A href="http://msdn.microsoft.com/coding4fun/gamedevelopment/rocketcmd/default.aspx"&gt;MSDN Coding4Fun&lt;/A&gt; section!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=580098" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/Game+Development/default.aspx">Game Development</category></item><item><title>Directory.GetFiles and search patterns</title><link>http://blogs.msdn.com/markda/archive/2006/04/20/580075.aspx</link><pubDate>Thu, 20 Apr 2006 21:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:580075</guid><dc:creator>markda</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/markda/comments/580075.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=580075</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/wz42302f.aspx"&gt;System.IO.Directory.GetFiles(string,string)&lt;/A&gt; enables you to provide a search pattern as the second argument.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;I have a&amp;nbsp;list of&amp;nbsp;file extensions that I need to search for and discovered &lt;/FONT&gt;&lt;FONT face=Verdana&gt;two issues with this method.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;1. The second argument only accepts a single search pattern string, so I used the following code to resolve this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;string&amp;gt;&amp;nbsp;_searchPatternList = new List&amp;lt;string&amp;gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;string&amp;gt; fileList = new List&amp;lt;string&amp;gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach ( string ext in _searchPatternList )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; foreach ( string subFile in Directory.GetFiles( folderName, ext&amp;nbsp; )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fileList.Add( subFile );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Sort alpabetically&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileList.Sort();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Add files to the file browser control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach ( string fileName in fileList )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;...;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT face=Verdana&gt;2. There is an 'anomaly' with search patterns.&amp;nbsp;"*.htm" will match both .htm and .html files. To avoid duplicate file entries, you will need to&amp;nbsp;remove all extensions that&amp;nbsp;are equivalent:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT face=Verdana&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dictionary&amp;lt;string,bool&amp;gt; extensionMap = new Dictionary&amp;lt;string,bool&amp;gt;(); // Initialized with ".htm", ".html", ".jpg", etc&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT face=Verdana&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;_searchPatternList.Clear();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach ( string ext in extensionMap.Keys )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( ext.Length &amp;gt; 4 )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( !extensionMap.ContainsKey( ext.Substring( 0, 4 ) ) )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;// No short version, so add to list&lt;BR&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; _searchPatternList.Add( "*" + ext );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _searchPatternList.Add( "*" + ext );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=580075" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Design updates to Visual Studio 2005 beta documentation on MSDN Online</title><link>http://blogs.msdn.com/markda/archive/2005/04/15/408729.aspx</link><pubDate>Fri, 15 Apr 2005 23:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:408729</guid><dc:creator>markda</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/markda/comments/408729.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=408729</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;You can read more about the changes to the MSDN Visual Studio 2005 beta documentation site at &lt;/FONT&gt;&lt;A title=http://msdn.microsoft.com/aboutmsdn/changes/msdn2/ href="http://msdn.microsoft.com/aboutmsdn/changes/msdn2/"&gt;&lt;FONT face=Verdana&gt;http://msdn.microsoft.com/aboutmsdn/changes/msdn2/&lt;/FONT&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;The Visual Studio 2005 beta documentation is available at &lt;/FONT&gt;&lt;A title=http://msdn2.microsoft.com/library href="http://msdn2.microsoft.com/library"&gt;&lt;FONT face=Verdana&gt;http://msdn2.microsoft.com/library&lt;/FONT&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Don't forget to try the cool URL model, e.g. &lt;A href="http://msdn2.microsoft.com/library/system.data"&gt;http://msdn2.microsoft.com/library/system.data&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Enjoy!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=408729" width="1" height="1"&gt;</description></item><item><title>C++ vs C#</title><link>http://blogs.msdn.com/markda/archive/2005/02/01/365034.aspx</link><pubDate>Wed, 02 Feb 2005 03:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:365034</guid><dc:creator>markda</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/markda/comments/365034.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=365034</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana"&gt;Eric Gunnerson recently posted &lt;A href="http://blogs.msdn.com/ericgu/archive/2005/01/26/360879.aspx"&gt;some reasons why C# is an improvement over C++&lt;/a&gt;&amp;nbsp;and &lt;A href="http://blogs.msdn.com/ericgu/archive/2005/01/27/361709.aspx"&gt;some updates&lt;/a&gt;. This post is a good read -&amp;nbsp;be sure to&amp;nbsp;consider the comments.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Some of my thoughts...&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Sure, with C#, I do spend less time considering memory usage (i.e. preventing memory leaks), but the issue of closure doesn't go away. I still need to deterministically release resources and to do this I'm going to need to call Dispose(). The point I'm getting at here is that, as a programmer, I still need to spend time thinking about the same problem - resource management. Using C++, it's natural to deal with memory at the same time - memory is just another resource.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Sometimes I feel that the time I save thinking about memory usage&amp;nbsp;is now spent&amp;nbsp;figuring out what to do with exceptions.&amp;nbsp;Exceptions aren't new to C#, there just seems to be more of them.&amp;nbsp;I'm convinced&amp;nbsp;that I write more lines of error handling code these days, but that's probably&amp;nbsp;a good&amp;nbsp;thing :O)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;C# is a simplified language, compared to C++. That's a good thing for developers who are used to Visual Basic or Java, but in this simplification it does miss a lot of features that are available in C++ - which&amp;nbsp;is why I don't wish for a 'winner' and applaud the enhancements being made to the C++ language and tools.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;While some may never miss the C++ compilation model, I really do miss being able to view the&amp;nbsp;'interface' of a class.&amp;nbsp;I can look at a C++ header file for a birds-eye view of the class,&amp;nbsp;though this does rely on&amp;nbsp;good code guidelines and can get unstuck with patterns that hide implementation.&amp;nbsp;Being forced to write inline code just doesn't work for me. At a class level, C# just isn't as readable without the use of a tool.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Templates - they're tough to learn and can promote some very obtuse code, but they sure are powerful. Generics are a good start in C#, but don't come anywhere close to providing what C++ has to offer. I think STL and Boost get a bad rap&amp;nbsp;because&amp;nbsp;they're difficult to use and there are multiple implementations.&amp;nbsp;If you've ever needed to choose the right smart pointer, you'll know what I mean. I do think that the C++ community can learn something from the simplicity and consistency of the .Net Framework.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;At the end of the day, it's about choosing the right tool for the job.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=365034" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Managed DirectX - hear about it from a game developer</title><link>http://blogs.msdn.com/markda/archive/2004/12/03/274540.aspx</link><pubDate>Fri, 03 Dec 2004 22:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:274540</guid><dc:creator>markda</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/markda/comments/274540.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=274540</wfw:commentRss><description>&lt;font face="Verdana"&gt;Marshall Belew, lead developer of the first commercial managed DirectX game - Tin Soldiers: Alexander the Great, is interviewed by the &lt;a href="http://www.thezbuffer.com"&gt;Zman&lt;/a&gt;.&lt;/font&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=274540" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/Game+Development/default.aspx">Game Development</category></item><item><title>N/Direct web site - .NET interoperability resource</title><link>http://blogs.msdn.com/markda/archive/2004/10/08/240022.aspx</link><pubDate>Sat, 09 Oct 2004 01:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:240022</guid><dc:creator>markda</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/markda/comments/240022.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=240022</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana"&gt;The &lt;/font&gt;&lt;a href="http://www.dotnetinterop.com/"&gt;&lt;font face="Verdana"&gt;N/Direct&amp;nbsp;web site&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt;&amp;nbsp;is run by &lt;a href="mattias@mvps.org"&gt;Mattias Sjögren&lt;/a&gt;, a Microsoft MVP. In his own words:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;"N/Direct is a site for developers seeking information or answers about interoperability between .NET managed code and native unmanaged code."&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;The web site has an impressive selection of articles, samples and&amp;nbsp;other resources.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=240022" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/.NET/default.aspx">.NET</category></item><item><title>New samples in October 2004 update of DirectX SDK</title><link>http://blogs.msdn.com/markda/archive/2004/10/08/239946.aspx</link><pubDate>Fri, 08 Oct 2004 23:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:239946</guid><dc:creator>markda</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/markda/comments/239946.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=239946</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana"&gt;More cool stuff for DirectX developers in the October 2004 DirectX SDK, available from &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B7BC31FA-2DF1-44FD-95A4-C2555446AED4"&gt;here&lt;/a&gt;. Also includes tool updates&amp;nbsp;(PIX, Maya Exporter) and bug fixes.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;New C++&amp;nbsp;Samples&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Verdana"&gt;AntiAlias - different multisampling techniques&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana"&gt;Instancing - four instancing rendering techniques&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana"&gt;ConfigSystem - database-driven device capabilities&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font face="Verdana"&gt;New Managed Samples&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Verdana"&gt;PrtPerVertex - how to use the precomputed radiance transfer engine&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana"&gt;FragmentLinker - how to link shader fragments&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana"&gt;SimpleAnimation - basic skinning animation&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=239946" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/Game+Development/default.aspx">Game Development</category></item><item><title>Yes, you do have other web browsers</title><link>http://blogs.msdn.com/markda/archive/2004/10/08/239920.aspx</link><pubDate>Fri, 08 Oct 2004 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:239920</guid><dc:creator>markda</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/markda/comments/239920.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=239920</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana"&gt;I was recently informed of &lt;a href="http://www.danvine.com/icapture/"&gt;this&amp;nbsp;useful site&lt;/a&gt;. You can enter the URL of your web site and see what it looks like in the following web&amp;nbsp;browsers on&amp;nbsp;a Mac or PC:&lt;/font&gt;&lt;/p&gt; &lt;ul&gt;&lt;font face="Verdana"&gt; &lt;li&gt;&lt;font face="Verdana"&gt;Microsoft Internet Explorer 6.0&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt; (PC) &lt;li&gt;&lt;font face="Verdana"&gt;Microsoft Internet Explorer 5.5&lt;/font&gt; (PC) &lt;li&gt;&lt;font face="Verdana"&gt;Microsoft Internet Explorer 5.01&lt;/font&gt; (PC) &lt;li&gt;&lt;font face="Verdana"&gt;Microsoft Internet Explorer 4.01&lt;/font&gt; (PC) &lt;li&gt;Safari 1.2&lt;/font&gt; &lt;font face="Verdana"&gt;(Mac)&lt;/font&gt; &lt;li&gt;&lt;font face="Verdana"&gt;Firefox 0.8&lt;/font&gt; &lt;font face="Verdana"&gt;(PC)&lt;/font&gt; &lt;li&gt;&lt;font face="Verdana"&gt;Opera 7.23(PC)&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Useful for verifying that your web site looks right on each of&amp;nbsp;these browsers, especially your use of CSS. It doesn't support HTTPS. It does display recent requests, so don't request a URL you don't want people to know about. The site has some bandwidth limitations, so go easy on it - and the owner is asking for&amp;nbsp;some hardware, so help him out if you can.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=239920" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/Web/default.aspx">Web</category></item><item><title>Tracking down memory leaks when linking with the CRT DLL</title><link>http://blogs.msdn.com/markda/archive/2004/08/19/217334.aspx</link><pubDate>Thu, 19 Aug 2004 23:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:217334</guid><dc:creator>markda</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/markda/comments/217334.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=217334</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana"&gt;I recently rebuilt a C++ project to use the DLL version of the CRT and discovered that the &lt;strong&gt;_crtBreakAlloc&lt;/strong&gt; variable was not visible to the Visual C++ debugger. If you don't already know, this variable is maintained by the debug CRT heap allocation code and can be used to track memory leaks, as discussed in &lt;a href="http://support.microsoft.com:80/support/kb/articles/q151/5/85.asp"&gt;this KnowledgeBase article&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;The article also gave me a clue as to why this technique wasn't available - I need to use the code context feature&amp;nbsp;when typing&amp;nbsp;the debugger expression in the Watch window:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;{function,module,dll}expression&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Unfortunately, the KB article suggestion doesn't work for VC 7.1 (I don't know if it works for earlier versions). For Visual C++ 7.1, the following watch expression does work when linking with the DLL version of the CRT:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;{,,msvcr71d.dll}_crtBreakAlloc&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=217334" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/Windows/default.aspx">Windows</category></item><item><title>Visual C# 2003 "Implement Interface" feature</title><link>http://blogs.msdn.com/markda/archive/2004/06/16/157685.aspx</link><pubDate>Thu, 17 Jun 2004 03:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:157685</guid><dc:creator>markda</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/markda/comments/157685.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=157685</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;Just discovered a great tip for Visual&amp;nbsp;C# 2003.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;If&amp;nbsp;you implement an interface (or event/delegate) on your class and don't want&amp;nbsp;to type all the methods, just type the interface name&amp;nbsp;in your class derivation list and Intellisense will display &lt;FONT color=#000000&gt;a tooltip saying &amp;#8220;Press TAB to insert stubs for &amp;lt;interfacename&amp;gt;&amp;#8221;. Pressing 'TAB' will insert stub method implemenations into your class. Very cool timesaver!&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Thanks go to Kevin and Jason for pointing this out to me.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=157685" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Help out the Interop community</title><link>http://blogs.msdn.com/markda/archive/2004/05/06/127584.aspx</link><pubDate>Fri, 07 May 2004 03:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:127584</guid><dc:creator>markda</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/markda/comments/127584.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=127584</wfw:commentRss><description>&lt;FONT face=Arial&gt;If you take a walk over to &lt;/FONT&gt;&lt;A href="http://www.pinvoke.net/"&gt;&lt;FONT face=Arial&gt;http://www.pinvoke.net&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;, you can find an active WiKi community that is documenting the PInvoke statements used to call Win32 and other unmanaged APIs from managed code. While you're there, why not add&amp;nbsp;signatures and other information for any of the unmanaged APIs you've recently called? &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/adam_nathan"&gt;&lt;FONT face=Arial&gt;Adam Nathan&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;, who created the WiKi site,&amp;nbsp;also has contributed a PInvoke.Net Visual Studio add-in that's available on &lt;/FONT&gt;&lt;A href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=75122f62-5459-4364-b9ba-7b5e6a4754fe"&gt;&lt;FONT face=Arial&gt;GotDotNet&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;.&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=127584" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Is spyware damaging our industry?</title><link>http://blogs.msdn.com/markda/archive/2004/04/22/118357.aspx</link><pubDate>Thu, 22 Apr 2004 21:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:118357</guid><dc:creator>markda</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/markda/comments/118357.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markda/commentrss.aspx?PostID=118357</wfw:commentRss><description>&lt;P&gt;After spending many hours removing spyware from my home family PC, I'm so pleased that the industry is taking this malicious software seriously. IMO, the deceptive&amp;nbsp;behaviour used by these companies is tantamount to fraud and is damaging&amp;nbsp;our industry.&lt;/P&gt;
&lt;P&gt;Microsoft have created a &lt;A href="http://www.microsoft.com/spyware/"&gt;new web site&lt;/A&gt; on this subject.&lt;/P&gt;
&lt;P&gt;If there is one positive thing to come out this practice, it's that there's no such thing as free software. Ok, there is such a thing as free software and the developer community does an awesome job. I do&amp;nbsp;wish that companies were forced to declare the real price a user pays when they download&amp;nbsp;an&amp;nbsp;executable, and I don't mean something hidden in the EULA.&lt;/P&gt;
&lt;P&gt;I also wish there was a verification process when dowloading executables - something similiar to the Authenticode mechanism used for ActiveX controls. IMO, the whole process needs to be more transparent - I know this conflicts with the 'perceived' freedom and anonymity of the Internet, but something has to give.&lt;/P&gt;
&lt;P&gt;Word of the week: &lt;EM&gt;hortatory&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Mark Davis (MSFT)&lt;/P&gt;
&lt;P&gt;This posting is provided "AS IS" with no warranties, and confers no rights. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=118357" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markda/archive/tags/General/default.aspx">General</category></item></channel></rss>