<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-17811071</id><updated>2011-06-07T01:45:08.293+02:00</updated><title type='text'>gomasch Development Notes</title><subtitle type='html'>sporadic notes about some findings while developing software. no warranties whatsoever. any opinions stated here are my personal ones, are very probable to change drastically over time and do not necessarily reflect positions of my employer.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17811071.post-8876193961834342783</id><published>2009-03-11T18:06:00.001+01:00</published><updated>2009-03-11T18:06:37.765+01:00</updated><title type='text'>How Microsoft Manages Its Projects (MPT)</title><content type='html'>&lt;p&gt;An interesting read: &lt;a title="http://www.edsquared.com/2009/02/27/Microsoft+Process+Template.aspx" href="http://www.edsquared.com/2009/02/27/Microsoft+Process+Template.aspx"&gt;http://www.edsquared.com/2009/02/27/Microsoft+Process+Template.aspx&lt;/a&gt;&amp;#160; &lt;br /&gt;(&lt;a href="http://blogs.msdn.com/bharry/archive/2009/03/10/lots-of-news.aspx"&gt;via&lt;/a&gt;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-8876193961834342783?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/8876193961834342783/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=8876193961834342783' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/8876193961834342783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/8876193961834342783'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2009/03/how-microsoft-manages-its-projects-mpt.html' title='How Microsoft Manages Its Projects (MPT)'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-8439368013442176031</id><published>2009-02-26T11:24:00.001+01:00</published><updated>2009-02-26T11:31:05.583+01:00</updated><title type='text'>Performance Counter</title><content type='html'>&lt;p&gt;Performance Analysis of Logs Tool: &lt;a title="http://www.codeplex.com/PAL" href="http://www.codeplex.com/PAL"&gt;http://www.codeplex.com/PAL&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(vielleicht mal beobachten: &lt;a title="http://blogs.technet.com/clint_huffman/" href="http://blogs.technet.com/clint_huffman/"&gt;http://blogs.technet.com/clint_huffman/&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/2008.08.pulse.aspx?pr=blog"&gt;MSDN Aug 2008 - Windows Administration, Taking Your Server's Pulse&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-8439368013442176031?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/8439368013442176031/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=8439368013442176031' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/8439368013442176031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/8439368013442176031'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2009/02/performance-counter.html' title='Performance Counter'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-4227711645261368004</id><published>2009-02-26T09:58:00.001+01:00</published><updated>2009-02-26T09:58:06.419+01:00</updated><title type='text'>Dependency Injection Frameworks</title><content type='html'>&lt;p&gt;&lt;a title="http://www.castleproject.org/container/index.html" href="http://www.castleproject.org/container/index.html"&gt;http://www.castleproject.org/container/index.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/unity" href="http://www.codeplex.com/unity"&gt;http://www.codeplex.com/unity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.springframework.net/" href="http://www.springframework.net/"&gt;http://www.springframework.net/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-4227711645261368004?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/4227711645261368004/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=4227711645261368004' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/4227711645261368004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/4227711645261368004'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2009/02/dependency-injection-frameworks.html' title='Dependency Injection Frameworks'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-54902712398621157</id><published>2009-02-04T11:04:00.001+01:00</published><updated>2009-02-04T11:04:45.649+01:00</updated><title type='text'>GUI Patterns</title><content type='html'>&lt;p&gt;Explore GUI Patterns: &lt;a title="UX Patterns site" href="http://quince.infragistics.com/"&gt;UX Patterns site&lt;/a&gt;&amp;#160; &lt;br /&gt;cool.&lt;/p&gt;  &lt;p&gt;(&lt;a href="http://blogs.msdn.com/brada/archive/2009/02/02/ux-patterns-explorer.aspx"&gt;via&lt;/a&gt;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-54902712398621157?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/54902712398621157/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=54902712398621157' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/54902712398621157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/54902712398621157'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2009/02/gui-patterns.html' title='GUI Patterns'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-6533412176475326845</id><published>2009-01-20T18:34:00.001+01:00</published><updated>2009-01-20T18:34:10.519+01:00</updated><title type='text'>Nice C# WinForms Popup Control</title><content type='html'>&lt;p&gt;&lt;a title="http://www.codeproject.com/KB/miscctrl/simplepopup.aspx" href="http://www.codeproject.com/KB/miscctrl/simplepopup.aspx"&gt;http://www.codeproject.com/KB/miscctrl/simplepopup.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-6533412176475326845?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/6533412176475326845/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=6533412176475326845' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/6533412176475326845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/6533412176475326845'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2009/01/nice-c-winforms-popup-control.html' title='Nice C# WinForms Popup Control'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-3244415464436025736</id><published>2009-01-05T14:54:00.001+01:00</published><updated>2009-01-05T14:54:26.905+01:00</updated><title type='text'>Access Outlook</title><content type='html'>&lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/aa289167.aspx" href="http://msdn.microsoft.com/en-us/library/aa289167.aspx"&gt;MSDN: An Introduction to Programming Outlook 2003 Using C#&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.c-sharpcorner.com/UploadFile/rambab/OutlookIntegration10282006032802AM/OutlookIntegration.aspx?ArticleID=fd92523f-0498-4cb1-a2fd-4ebd19e1154f" href="http://www.c-sharpcorner.com/UploadFile/rambab/OutlookIntegration10282006032802AM/OutlookIntegration.aspx?ArticleID=fd92523f-0498-4cb1-a2fd-4ebd19e1154f"&gt;C#Corner: Outlook Integration in C#&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-3244415464436025736?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/3244415464436025736/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=3244415464436025736' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/3244415464436025736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/3244415464436025736'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2009/01/access-outlook.html' title='Access Outlook'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-5433027520694738087</id><published>2008-10-27T18:39:00.001+01:00</published><updated>2008-10-27T18:39:11.372+01:00</updated><title type='text'>Links: Windows Installer XML ToolKit (WiX)</title><content type='html'>&lt;p&gt;&lt;a title="http://wix.sourceforge.net/" href="http://wix.sourceforge.net/"&gt;http://wix.sourceforge.net/&lt;/a&gt; Mother of all&lt;/p&gt; &lt;p&gt;&lt;a title="http://de.wikipedia.org/wiki/Windows_Installer_XML" href="http://de.wikipedia.org/wiki/Windows_Installer_XML"&gt;http://de.wikipedia.org/wiki/Windows_Installer_XML&lt;/a&gt; Nice little overview&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.tramontana.co.hu/wix/" href="http://www.tramontana.co.hu/wix/"&gt;http://www.tramontana.co.hu/wix/&lt;/a&gt; Tutorial&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.wixwiki.com/" href="http://www.wixwiki.com/"&gt;http://www.wixwiki.com/&lt;/a&gt; Wiki&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-5433027520694738087?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/5433027520694738087/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=5433027520694738087' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/5433027520694738087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/5433027520694738087'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2008/10/links-windows-installer-xml-tooltik-wix.html' title='Links: Windows Installer XML ToolKit (WiX)'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-1720059135945524095</id><published>2008-10-15T09:42:00.001+02:00</published><updated>2008-10-15T09:42:12.052+02:00</updated><title type='text'>Vista Style Task Dialog</title><content type='html'>&lt;p&gt;this looks good: &lt;a title="http://www.codeproject.com/KB/vista/TaskDialogEmulateRedux.aspx" href="http://www.codeproject.com/KB/vista/TaskDialogEmulateRedux.aspx"&gt;http://www.codeproject.com/KB/vista/TaskDialogEmulateRedux.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-1720059135945524095?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/1720059135945524095/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=1720059135945524095' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/1720059135945524095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/1720059135945524095'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2008/10/vista-style-task-dialog.html' title='Vista Style Task Dialog'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-134003732782113424</id><published>2008-05-20T14:30:00.001+02:00</published><updated>2008-05-20T14:30:30.065+02:00</updated><title type='text'>Source Code Metrics</title><content type='html'>&lt;p&gt;with &lt;a title="http://www.campwoodsw.com/sourcemonitor.html" href="http://www.campwoodsw.com/sourcemonitor.html"&gt;http://www.campwoodsw.com/sourcemonitor.html&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-134003732782113424?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/134003732782113424/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=134003732782113424' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/134003732782113424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/134003732782113424'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2008/05/source-code-metrics.html' title='Source Code Metrics'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-3653326530767503839</id><published>2008-04-24T14:29:00.001+02:00</published><updated>2008-12-11T13:15:07.289+01:00</updated><title type='text'>Random Links</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;a title="http://blogs.msdn.com/rprabhu/articles/433979.aspx" href="http://blogs.msdn.com/rprabhu/articles/433979.aspx"&gt;Cool Client Stuff - Client Settings FAQ&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Have a boolean setting called CallUpgrade and give it a default value of true. When your app starts up, you can do something like:&lt;br&gt; if (Properties.Settings.Value.CallUpgrade) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Properties.Settings.Value.Upgrade();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Properties.Settings.Value.CallUpgrade = false;&lt;br&gt;&amp;nbsp; }&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Note: &lt;a href="http://www.eggheadcafe.com/software/aspnet/33476509/mysettingsupgrade-doesn.aspx"&gt;My.Settings.Upgrade doesn't upgrade?&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;* Solution * After knowing how My.Settings.Upgrade() works, we can find that making exe assembly as strong named assembly is one solution to this problem.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Continuous Integration Server:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.jetbrains.com/teamcity/"&gt;TeamCity&lt;/a&gt; Professional is slick and nice and distributed and free, but when you exceed its limits (20 build configurations, 3 agents) money has to roll. Really a nice product though.  &lt;li&gt;&lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt; is an interesting really free alternative with no artificial restrictions, absolutely simple to setup, also everything configurable through a web gui, yet powerful including distributed builds and a very interesting matrix project type.  &lt;li&gt;(&lt;a href="http://ccnet.thoughtworks.com/"&gt;CruiseControl.net&lt;/a&gt; gets all the press but it's ugly and manually editing the XML files is just not working for a team; &lt;a href="http://continuum.apache.org/"&gt;Apache Continuum&lt;/a&gt; may rise to an interesting product as well but their lack of basic docs makes me a bit nervous right now; most of the commercial build/integrations servers seem to target the infamous enterprise area and I think smell big money there which shines through).&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-3653326530767503839?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/3653326530767503839/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=3653326530767503839' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/3653326530767503839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/3653326530767503839'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2008/04/random-links.html' title='Random Links'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-2484225017819836696</id><published>2007-12-13T16:17:00.001+01:00</published><updated>2007-12-14T13:04:31.048+01:00</updated><title type='text'>COM without Registry - Side-by-Side Assemblies in XP</title><content type='html'>&lt;p&gt;It's oh so late. I'm discovering registration-free COM!&lt;/p&gt; &lt;ul&gt; &lt;li&gt;"How To Build and Service Isolated Applications and Side-by-Side Assemblies for Windows XP" &lt;br&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/ms997620.aspx" href="http://msdn2.microsoft.com/en-us/library/ms997620.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms997620.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;With Windows XP, the assembly is described by a manifest; the registry is no longer relied upon for storing and accessing the COM activation data.&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;"Escape DLL Hell Simplify App Deployment with ClickOnce and Registration-Free COM"&lt;br&gt;&lt;a title="http://msdn.microsoft.com/msdnmag/issues/05/04/RegFreeCOM/" href="http://msdn.microsoft.com/msdnmag/issues/05/04/RegFreeCOM/"&gt;http://msdn.microsoft.com/msdnmag/issues/05/04/RegFreeCOM/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So finally I can't escape those *** manifests.&lt;/p&gt; &lt;p&gt;Isolated=True in VS2005 already does a bit of the manifest generation work.&amp;nbsp;But&amp;nbsp;for C++ components&amp;nbsp;with custom interfaces (IUnknown&amp;nbsp;instead IDispatch) the manifests may need some patching. &lt;/p&gt; &lt;ol&gt; &lt;li&gt;Change dependencyType="install" to dependencyType="preRequisite". Otherwise VS 2005 Setup project still registers the COM dll even if it's set&amp;nbsp;to vsdrfDoNotRegister.  &lt;li&gt;We'd better also mention the proxy-stub-dll.&amp;nbsp;&amp;nbsp;Described here:&lt;br&gt;Problem: &lt;a title="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=114083" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=114083"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=114083&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=114083"&gt;https://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=114083&lt;/a&gt;&amp;nbsp; &lt;br&gt;Solution: &lt;a title="http://msdn2.microsoft.com/en-us/library/ms973913.aspx#rfacomwalk_topic8" href="http://msdn2.microsoft.com/en-us/library/ms973913.aspx#rfacomwalk_topic8"&gt;http://msdn2.microsoft.com/en-us/library/ms973913.aspx#rfacomwalk_topic8&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;keywords: "Unable to cast COM object" isolated registration free COM vsdrfDoNotRegister asmv2:dependencyType="preRequesite" asmv2:dependencyType="install" dependentAssembly comInterfaceProxyStub&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Aftermath: &lt;/strong&gt;(2007-12-14) It does work&amp;nbsp;with&amp;nbsp;.dlls, but&amp;nbsp;&lt;strong&gt;cross apartment&amp;nbsp;calls to a side-by-side OCX don't work for me&lt;/strong&gt; (OCX built with&amp;nbsp;VC++6). I really have all the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms973913.aspx#rfacomwalk_topic8"&gt;comInterfaceExternalProxyStub&lt;/a&gt; entries in the manifest, but still I get a System.Reflection.TargetException if I call the OCX functions from .Net from a Non-UI thread. If I call the OCX functions via BeginInvoke all is fine.&amp;nbsp;&lt;br&gt;But since I made the experience that the cross apartment synchronization&amp;nbsp;from COM works notably faster than using BeginInvoke.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-2484225017819836696?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/2484225017819836696/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=2484225017819836696' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/2484225017819836696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/2484225017819836696'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2007/12/com-without-registry-side-by-side.html' title='COM without Registry - Side-by-Side Assemblies in XP'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-2109224379980341712</id><published>2007-05-24T16:38:00.001+02:00</published><updated>2007-05-24T16:38:08.393+02:00</updated><title type='text'>XML Serializer &amp; Default Attribute Value</title><content type='html'>&lt;p&gt;Old stuff: The .NET XMLSerializer is quite powerful, but not perfectly documented. Hmm. &lt;/p&gt; &lt;p&gt;I found for example the support for default attribute values *is* there and also more or less complete! &lt;/p&gt; &lt;p&gt;What we want:&amp;nbsp;A class with an instance variable serialized to an attribute:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Its Xml-Attribute representation shall only be written into the XML file when the actual value is different to the default one. &lt;br&gt;Solution: specify default with&amp;nbsp;System.ComponentModel.DefaultValueAttribute&lt;/li&gt; &lt;li&gt;The value shall be restored when reading an xml file even if the value is not present.&lt;br&gt;Solution: add a default constructor and set the value yourself.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Untested Example:&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:81bf1845-5cbb-4e94-b47e-84f5788b5294" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;[Serializable]
[XmlRoot(ElementName&lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;FILE&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;)]
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; Example
{
    [XmlAttribute(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;filename&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;)]
    [System.ComponentModel.DefaultValueAttribute(FileNameDefault)]
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; FileName; 

    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;const&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; FileNameDefault &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;default.xml&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;;

    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; Example()
    {
        FileName &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; FileNameDefault;
    }
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Remember: to control what's happening you can also always &lt;a href="http://www.hanselman.com/blog/HOWTODebugIntoANETXmlSerializerGeneratedAssembly.aspx"&gt;take a look at the code generated by the XMLSerializer&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-2109224379980341712?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/2109224379980341712/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=2109224379980341712' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/2109224379980341712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/2109224379980341712'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2007/05/xml-serializer-default-attribute-value.html' title='XML Serializer &amp;amp; Default Attribute Value'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-5509309023529699187</id><published>2007-01-15T14:05:00.001+01:00</published><updated>2007-01-15T14:05:21.531+01:00</updated><title type='text'>.Net Application Settings</title><content type='html'>&lt;p&gt;keywords: .net application settings windows forms&lt;/p&gt; &lt;p&gt;it's not new at all but I want to have this somewhere:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;call YourNamespace.Properties.Settings.Default.Save() in Form.Closing  &lt;li&gt;see &lt;a href="http://blogs.msdn.com/rprabhu/articles/433979.aspx"&gt;Client Settings FAQ&lt;/a&gt; about paths and when to call Upgrade()  &lt;li&gt;see &lt;a href="http://blogs.msdn.com/rprabhu/archive/2005/11/28/497792.aspx"&gt;Saving a forms size&lt;/a&gt;, but my version looks like this:&lt;/li&gt;&lt;/ul&gt; &lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:4bea1fbc-2874-4f0c-bf7b-675cd49913a1" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #808080; "&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; purpose: helper class to save form size+location with .Net 2.0 application settings
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; 
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; usage:
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt;  1. create two settings values e.g.
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt;    -named &amp;quot;Size&amp;quot; of type &amp;quot;System.Drawing.Size&amp;quot; and set a default value
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt;    -named &amp;quot;Location&amp;quot; of type &amp;quot;System.Drawing.Point&amp;quot; and set a default value
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt;  2. call ctor: 
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt;      new SaveFormSizeInSettings(this, &amp;quot;Size&amp;quot;, &amp;quot;Location&amp;quot; MyNamespace.Properties.Settings.Default)
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt;      BEFORE InitializeComponent()!!!!
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt;  3. call MyNamespace.Properties.Settings.Default.Save() in form_Closing
    &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #808080; "&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; SaveFormSizeInSettings
    {
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;private&lt;/span&gt;&lt;span style="color: #000000; "&gt; Form form;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;private&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.Configuration.ApplicationSettingsBase settings;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;private&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; sizeValueName;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;private&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; locationValueName;

        &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #808080; "&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;
        &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; ctor
        &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #808080; "&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;
        &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #808080; "&gt;&amp;lt;param name=&amp;quot;form&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;
        &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #808080; "&gt;&amp;lt;param name=&amp;quot;sizeValueName&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;
        &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #808080; "&gt;&amp;lt;param name=&amp;quot;locationValueName&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;
        &lt;/span&gt;&lt;span style="color: #808080; "&gt;///&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #808080; "&gt;&amp;lt;param name=&amp;quot;settings&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; SaveFormSizeInSettings(Form form, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; sizeValueName, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; locationValueName, System.Configuration.ApplicationSettingsBase settings)
        {
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;.form &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; form;
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;.settings &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; settings;
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;.sizeValueName &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; sizeValueName;
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;.locationValueName &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; locationValueName;

            form.FormClosing &lt;/span&gt;&lt;span style="color: #000000; "&gt;+=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;new&lt;/span&gt;&lt;span style="color: #000000; "&gt; FormClosingEventHandler(form_FormClosing);
            form.Load &lt;/span&gt;&lt;span style="color: #000000; "&gt;+=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;new&lt;/span&gt;&lt;span style="color: #000000; "&gt; EventHandler(form_Load);
        }

        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; "&gt; form_Load(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;object&lt;/span&gt;&lt;span style="color: #000000; "&gt; sender, EventArgs e)
        {
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt; ((&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;null&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;==&lt;/span&gt;&lt;span style="color: #000000; "&gt; settings[sizeValueName]) &lt;/span&gt;&lt;span style="color: #000000; "&gt;||&lt;/span&gt;&lt;span style="color: #000000; "&gt;
                (&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;null&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;==&lt;/span&gt;&lt;span style="color: #000000; "&gt; settings[locationValueName]))
            {    &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt; size or location not yet in settings&lt;/span&gt;&lt;span style="color: #008000; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;                &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;return&lt;/span&gt;&lt;span style="color: #000000; "&gt;;
            }

            Size savedSize &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; (System.Drawing.Size)settings[sizeValueName];
            Point savedLocation &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; (System.Drawing.Point)settings[locationValueName];

            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt; (Screen.FromControl(form).Bounds.Contains(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;new&lt;/span&gt;&lt;span style="color: #000000; "&gt; Rectangle(savedLocation, savedSize)))
            {    &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt; fits into current screen&lt;/span&gt;&lt;span style="color: #008000; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;                form.Size &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; savedSize;
                form.Location &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; savedLocation;
            }
        }

        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; "&gt; form_FormClosing(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;object&lt;/span&gt;&lt;span style="color: #000000; "&gt; sender, FormClosingEventArgs e)
        {
            &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;size&lt;/span&gt;&lt;span style="color: #008000; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt; (form.WindowState &lt;/span&gt;&lt;span style="color: #000000; "&gt;==&lt;/span&gt;&lt;span style="color: #000000; "&gt; FormWindowState.Normal)
            {
                settings[sizeValueName] &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; form.Size;
            }
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;else&lt;/span&gt;&lt;span style="color: #000000; "&gt;
            {
                settings[sizeValueName] &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; form.RestoreBounds.Size;
            }

            &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt; location&lt;/span&gt;&lt;span style="color: #008000; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;            settings[locationValueName] &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; form.Location;
        }
    }
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-5509309023529699187?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/5509309023529699187/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=5509309023529699187' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/5509309023529699187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/5509309023529699187'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2007/01/net-application-settings.html' title='.Net Application Settings'/><author><name>martin schmidt</name><uri>http://www.blogger.com/profile/09490751967947704244</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-115918366940600136</id><published>2006-09-25T13:27:00.000+02:00</published><updated>2006-09-25T13:27:49.440+02:00</updated><title type='text'>Batch: Find And Replace Text In A File</title><content type='html'>&lt;p&gt;I needed to write batch file which&amp;nbsp;also has to replace a string in a text file. Do I admit it took me almost 45min to find a solution? Switching to Powershell will probably ease those small scripting tasks, but right now I want as few dependencies in my windows scripts as possible. Which rules out any Perl, Ruby, Python ... you name it. Batch files (.cmd, .bat), Javascript (.js) and VBScript (.vbs) run out of the box at any Windows XP machine and this is what I need. Boy&amp;nbsp;sometimes it takes literally ages to solve&amp;nbsp;such simple tasks. Solutions: &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.motobit.com/tips/detpg_replfile/"&gt;http://www.motobit.com/tips/detpg_replfile/&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/technet/scriptcenter/resources/qanda/feb05/hey0208.mspx"&gt;Microsoft TechNet: How Can I Find and Replace Text in a Text File?&lt;/a&gt;&amp;nbsp;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Const ForReading = 1&lt;br&gt;Const ForWriting = 2&lt;br&gt;&lt;br&gt;strFileName = Wscript.Arguments(0)&lt;br&gt;strOldText = Wscript.Arguments(1)&lt;br&gt;strNewText = Wscript.Arguments(2)&lt;br&gt;&lt;br&gt;Set objFSO = CreateObject("Scripting.FileSystemObject")&lt;br&gt;Set objFile = objFSO.OpenTextFile(strFileName, ForReading)&lt;br&gt;&lt;br&gt;strText = objFile.ReadAll&lt;br&gt;objFile.Close&lt;br&gt;strNewText = Replace(strText, strOldText, strNewText)&lt;br&gt;&lt;br&gt;Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)&lt;br&gt;objFile.WriteLine strNewText&lt;br&gt;objFile.Close&lt;br&gt;&lt;/p&gt; &lt;p&gt;To use this revised script (which we’ll call &lt;b&gt;replace.vbs&lt;/b&gt;) just type a command similar to this from the command prompt:&lt;pre&gt;cscript replace.vbs "C:\Scripts\Text.txt" "Jim " "James "
&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-115918366940600136?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/115918366940600136/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=115918366940600136' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/115918366940600136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/115918366940600136'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2006/09/batch-find-and-replace-text-in-file.html' title='Batch: Find And Replace Text In A File'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-114708829299761644</id><published>2006-05-08T13:35:00.000+02:00</published><updated>2006-11-01T09:43:21.760+01:00</updated><title type='text'>Visual Studio 2005 C++ code template/snippet add-ins</title><content type='html'>&lt;p&gt;&lt;a href="http://www.sohva.org/CodeWiz/"&gt;CodeWiz&lt;/a&gt; (VS6, eVC3) and &lt;a href="http://www.sohva.org/CodeWiz2/"&gt;CodeWiz2&lt;/a&gt; (VS2003) are great free plugins for Microsoft C++ IDEs. They were saving me quite some time when coding C++ in past. The header&amp;lt;-&amp;gt;source switching, code templates and paste members features are very just helpful. Now I'm starting with a C++ project under Visual Studio 2005 and I heavily miss these features.&lt;/p&gt; &lt;p&gt;Now I am badly searching for a free C++ add-in for VS 2005 which supports code templates or code snippets. It's just too bad that Visual Studios built-in code snippets are NOT available for C++ ! Unfortunately I didn't find any free alternatives for CodeWiz for VS 2005, just these:&lt;/p&gt; &lt;p&gt;Established Code-Template-Add-Ins for C++ (not free, often with many other features)&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.codesmithtools.com/"&gt;CodeSmith&lt;/a&gt; (around 500$, the last free CodeSmith v2.6 is not working for Visual Studio 2005 I suppose)  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wholetomato.com/"&gt;Visual Assixt X&lt;/a&gt; (around 130$, its autotext feature looks good, seems good bang for the buck, positive rumours about it from one of our customers)  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.axtools.com/"&gt;CodeSmart G2&lt;/a&gt; (around 250$, seems good and with a nice templating system as well)  &lt;/li&gt;&lt;li&gt;&lt;em&gt;(&lt;a href="http://www.devexpress.com/Products/NET/CodeRush/"&gt;CodeRush&lt;/a&gt; is established but not supporting C++)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;(Interesting other free Add-Ins for C++ found during search:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://commentreflower.sourceforge.net/"&gt;Comment Reflower&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.usysware.com/DPack/Default.aspx"&gt;DPack&lt;/a&gt; )&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Probably we opt for Visual Assist X as a supplement for Resharper. Just downloading their trial.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Update 9th July 2006: Visual Assist X works quite good. The Header-Switching, C++ Code templates, ability to enable Resharper like colors for C++, help for typing include&amp;lt;file...&amp;gt; is all really helpful. Positive also that the same plugin works under eVC 3.0, VC++ 6, Visual Studio 2003 and Visual Studio 2005, sharing the settings e.g. for templates and colors for the same languages. I still miss the copy-member feature of CodeWiz2.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Update Aug. 30th 2006: the new version of &lt;a href="http://www.sohva.org/CodeWiz2/"&gt;CodeWiz 2&lt;/a&gt; works in Visual Studio 2005.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Update Sep. 19th 2006: The new version 10 of Visual AssistX is a major update, containing simple refactoring support for C++ now. We have Ref++ for that right now, which is rather mediocre. Currently I have 3 Add-ins for coding C++ in Visual Studio 2005 - dropping Ref++ means it's just two now. Yeah.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Update Nov. 1st 2006: It seems Visual Studio 2005 &lt;/em&gt;&lt;em&gt;finally &lt;/em&gt;&lt;em&gt;supports Code Snippets too for C++ with their new &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=cd7c6e48-e41b-48e3-881e-a0e6e97f9534&amp;amp;displaylang=en"&gt;Powertoys&lt;/a&gt;.
&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-114708829299761644?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/114708829299761644/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=114708829299761644' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/114708829299761644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/114708829299761644'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2006/05/visual-studio-2005-c-code.html' title='Visual Studio 2005 C++ code template/snippet add-ins'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-114164684223060662</id><published>2006-03-06T13:05:00.000+01:00</published><updated>2006-03-06T13:07:23.846+01:00</updated><title type='text'>code colorizer</title><content type='html'>&lt;p&gt;just a link: &lt;a href="http://www.carlosag.net/Tools/CodeColorizer/"&gt;http://www.carlosag.net/Tools/CodeColorizer/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-114164684223060662?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/114164684223060662/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=114164684223060662' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/114164684223060662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/114164684223060662'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2006/03/code-colorizer.html' title='code colorizer'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-114123207332932229</id><published>2006-03-01T17:54:00.000+01:00</published><updated>2006-03-01T17:54:33.363+01:00</updated><title type='text'>batch files: search and replace strings in a variable</title><content type='html'>&lt;p&gt;Task: Create timestamped filename in a batch file.&lt;/p&gt;&lt;p&gt;Problem: %DATE% is ok (1.03.2005 on my pc) but %TIME% returns a string with colons (17:37:59,49) which are not allowed in file names.&lt;/p&gt;&lt;p&gt;Solution: Put e.g. %DATE%-%TIME% into a variable and replace its colons (:) with a hyphen (-) with &lt;a href="http://www.ss64.com/ntsyntax/varsearch.html"&gt;Batchfiles SET - Variable Editing&lt;/a&gt;.&lt;/p&gt;&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;&lt;p&gt;SET FileName=SomethingFrom%DATE%-%TIME%.txt&lt;/p&gt;&lt;p&gt;SET FileName=%FileName::=_%&lt;/p&gt;&lt;/blockquote&gt;&lt;p dir="ltr"&gt;A quick fix for simple problem. I just didn't know until now that search and replace in strings was possible in batch files. Did old DOS already support this?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-114123207332932229?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/114123207332932229/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=114123207332932229' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/114123207332932229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/114123207332932229'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2006/03/batch-files-search-and-replace-strings.html' title='batch files: search and replace strings in a variable'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-113983879964048280</id><published>2006-02-13T14:51:00.000+01:00</published><updated>2006-02-13T14:53:19.696+01:00</updated><title type='text'>The Backside of an Interface</title><content type='html'>&lt;p&gt;This is an interesting way to see (C#-, Java-, COM-) interfaces:&lt;/p&gt;&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;&lt;p&gt;Electrical engineers work with boxes. What comes out of the box is the interface. What's inside the box is the implementation.&lt;/p&gt;&lt;p&gt;Here's a box. Is this its interface? No, not quite. It has a back as well as a front, and here's the back. The interface consists of both the front, with the user controls, and the back, with all the wires going to the rest of the world.&lt;/p&gt;&lt;/blockquote&gt;&lt;p dir="ltr"&gt;read on: &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=147355"&gt;The Backside of an Interface&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-113983879964048280?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/113983879964048280/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=113983879964048280' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/113983879964048280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/113983879964048280'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2006/02/backside-of-interface.html' title='The Backside of an Interface'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-113275749092926044</id><published>2005-11-23T18:43:00.000+01:00</published><updated>2005-11-23T15:51:31.140+01:00</updated><title type='text'>Link: Don't do Shell Extensions in .Net</title><content type='html'>&lt;p&gt;This is an interesting information (found via &lt;a href="http://blogs.msdn.com/larryosterman/archive/2005/11/17/494007.aspx"&gt;Larry Osterman&lt;/a&gt;):&lt;br/&gt;&lt;a href="http://blogs.msdn.com/junfeng/archive/2005/11/18/494572.aspx"&gt;Don't do Shell Extension Handlers in .NET&lt;/a&gt; (MSDN blog from Junfeng Zhang).&lt;/p&gt;&lt;p&gt;I wrote a little &lt;a href="http://www.gomasch.de/programme/sgfshellex.html"&gt;.SGF Shell extension&lt;/a&gt; for go players. It's old VC6 code and I don't really consider rewriting it - but it's a very interesting information that it's also a BAD idea to do this in .NET (which would have been my primary choice next time).&lt;/p&gt;&lt;p&gt;(ps: there's a little update to come though for my &lt;a href="http://www.gomasch.de/english.html"&gt;SGF tools&lt;/a&gt;: I'll make an installer soon).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-113275749092926044?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/113275749092926044/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=113275749092926044' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/113275749092926044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/113275749092926044'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2005/11/link-dont-do-shell-extensions-in-net.html' title='Link: Don&apos;t do Shell Extensions in .Net'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-113198413650786511</id><published>2005-11-14T18:30:00.000+01:00</published><updated>2006-08-30T14:34:54.890+02:00</updated><title type='text'>Windows blog clients (preferrably free)</title><content type='html'>&lt;p&gt;Blog clients are tools to write and edit blog entries instead of doing it directly in the browser (I hate that). So let me just state this:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wbloggar.com/"&gt;w.Bloggar&lt;/a&gt; works ok and is almost feature complete,&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.imhoproject.org/"&gt;IMHO Instant Blogger&lt;/a&gt; has WYSIWYG editing but has not as much features (only one blog, no editing of old entries, configuration not as easy)&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogjet.com/"&gt;BlogJet&lt;/a&gt; is nice but 40 Euros&lt;/li&gt;&lt;li&gt;my new star is the great &lt;a href="http://zoundry.com/"&gt;&lt;strong&gt;Zoundry BlogWriter&lt;/strong&gt;&lt;/a&gt; - it beats them all (read &lt;a href="http://gomasch.blogspot.com/2005/11/blogging-tools-blogjet-zoundry-blog.html"&gt;my german rants&lt;/a&gt; about it):&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;free&lt;/li&gt;&lt;li&gt;WYSIWYG editor, preview with automatic template import of blogger.com (great!)&lt;/li&gt;&lt;li&gt;manages multiple blogs, old entries, offline saving, tags, ...&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I don't think Zoundry's business idea (being a middle man for affiliate links) will work. So download their free client fast - as long as this company is alive. It doesn't need any registration or Zoundry accounts and is working well (my version: 0.9.137)&lt;/p&gt;&lt;p&gt;&lt;img src="http://static.flickr.com/27/63246047_e5bdcc0247_o.jpg" alt="zoundry screenshot"/&gt;&lt;/p&gt;&lt;p&gt;Interesting: the whole program seems to be written in Python - this is the first Windows application I see written in Python and it's remarkably well done.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;(Update Aug.30th 2006: &lt;a href="http://windowslivewriter.spaces.live.com/"&gt;WindowsLiveWriter&lt;/a&gt; is new and free, quite sexy and works with many Blog engines. Even has an Sdk and is on its way to the most sophisticated blog client. Hmm.)&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-113198413650786511?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/113198413650786511/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=113198413650786511' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/113198413650786511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/113198413650786511'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2005/11/windows-blog-clients-preferrably-free.html' title='Windows blog clients (preferrably free)'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-112964653850056053</id><published>2005-10-18T18:42:00.000+02:00</published><updated>2006-12-16T16:05:47.526+01:00</updated><title type='text'>Need Icons? Steal resources with PEResourceExplorer</title><content type='html'>&lt;p&gt;This post is very basic. I just want to keep a bookmark to &lt;a href="http://www.wilsonc.demon.co.uk/d7resourceexplorer.htm"&gt;PEResourceExplorer&lt;/a&gt; somewhere and will now construct some sentences to hide this fact:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;What for:&lt;/strong&gt; I was in the need for some nice icons for Run, Cancel and Open File for a simple program (nothing to be released). And I wanted to use/steel orignal Windows XP icons for this (I think they actually are somewhat copyright protected, are they?).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;How:&lt;/strong&gt; I could have taken screenshots. This works well. I like &lt;a href="http://www.eecs.wsu.edu/paint.net/"&gt;Paint .Net&lt;/a&gt; as a fast/simple/free image processing program to save them after pressing Alt-Print.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;How #2:&lt;/strong&gt; Once I found Build\ImageList16.png and Build\ImageList24.png in the free sources of &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Lutz Roeders CommandBar&lt;/a&gt; I always look there first for standard icons - and found a nice open file button.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;How #3:&lt;/strong&gt; Another way to get icons is to look at the (program) binaries, which can contain them too as resources. Windows\System32\Shell32.dll for example contains many of the typical Windows icons. One only needs a program to rip them off. I searched and quickly found this one: &lt;a href="http://www.wilsonc.demon.co.uk/d7resourceexplorer.htm"&gt;PEResourceExplorer&lt;/a&gt;. Looks ok, is free, works. Linking there is the solely purpose of this post ;).&lt;/p&gt;&lt;p&gt;&lt;img src="http://static.flickr.com/24/53733916_cd760989b5.jpg" title="" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Update 2005-12-08: nice basic icons for free can be found here:&lt;/em&gt; &lt;a href="http://www.glyfx.com/free.html"&gt;&lt;em&gt;http://www.glyfx.com/free.html&lt;/em&gt;&lt;/a&gt; &lt;em&gt;(found via&lt;/em&gt; &lt;a href="http://www.larkware.com/dg4/TheDailyGrind770.html"&gt;&lt;em&gt;Larkware&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)
Update 2005-12-19: another free icons set (700 icons in 16x16) is here: &lt;a href="http://www.famfamfam.com/lab/icons/silk/"&gt;http://www.famfamfam.com/lab/icons/silk/&lt;/a&gt; (again found via Larkware)
Update 2006-05-12: more free icon resources listed on &lt;a href="http://www.drweb.de/weblog/weblog/?p=541"&gt;http://www.drweb.de/weblog/weblog/?p=541&lt;/a&gt;
&lt;strong&gt;Update 2006-06-29&lt;/strong&gt;: Visual Studio 2005 ships with a nice pack of standard icons, look in Common7/VS2005ImageLibrary. This is my main source for icons and button images at the moment. (via &lt;a href="http://blogs.msdn.com/brada/archive/2006/06/06/618797.aspx"&gt;Brad Adams&lt;/a&gt;)
Update 2006-09-07: Via &lt;a href="http://www.ntwind.com/software/winsnap.html"&gt;WinSnap&lt;/a&gt; I found &lt;a href="http://www.iconaholic.com/downloads.html"&gt;http://www.iconaholic.com/downloads.html&lt;/a&gt;, looks interesting too (but only free for private nonpublic use)
Update 2006-12-16: steal, not steel
&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-112964653850056053?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/112964653850056053/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=112964653850056053' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112964653850056053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112964653850056053'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2005/10/steel-resources-with.html' title='Need Icons? Steal resources with PEResourceExplorer'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-112930438375329451</id><published>2005-10-14T19:39:00.000+02:00</published><updated>2005-10-20T21:24:18.966+02:00</updated><title type='text'>CodeSmith, CSS, VbScript Reference</title><content type='html'>&lt;P&gt;
Ah, 
finally released it and threw it 
over the wall. Three completely unrelated notes before 
jumping into weekend:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;To try: Code generation 
with CodeSmith&lt;BR&gt;&lt;/STRONG&gt;I've &lt;A href="http://www.codebetter.com/blogs/paul.laudeman/archive/2005/05/05/62811.aspx"&gt;read&lt;/A&gt; 
&lt;A href="http://davidhayden.com/blog/dave/archive/2005/08/11/2423.aspx"&gt;soooooo&lt;/A&gt; 
&lt;A href="http://blogs.conchango.com/howardvanrooijen/archive/2005/01/06/703.aspx"&gt;often&lt;/A&gt; 
&lt;A href="http://codebetter.com/blogs/grant.killian/archive/2005/04/28/62591.aspx"&gt;in&lt;/A&gt; 
&lt;A href="http://codebetter.com/blogs/jay.kimble/archive/2005/06/01/63937.aspx"&gt;so&lt;/A&gt; 
&lt;A href="http://codebetter.com/blogs/jay.kimble/archive/2005/08/18/130891.aspx"&gt;many&lt;/A&gt; 
&lt;A href="http://codebetter.com/blogs/jay.kimble/archive/2005/07/08/128956.aspx"&gt;posts&lt;/A&gt;, 
that CodeSmith is a great tool. It started out free but has&amp;nbsp;gone 
commercial. But when I looked at the website last time it seemed the free 
version&amp;nbsp;was gone. Boy I must have been blind: there is still &lt;A href="http://www.codesmithtools.com/freeware.aspx"&gt;free version of 
CodeSmith&lt;/A&gt;: 2.6. I'll try it out as soon as I see an opportunity.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;To try: Really using CSS in Html&lt;/STRONG&gt;&lt;BR&gt; Mentally I'm still stuck with the tables 
paradigm. But&amp;nbsp;I&amp;nbsp;just&amp;nbsp;read a very &lt;A href="http://www.hotdesign.com/seybold/"&gt;nice presentation why to drop tables 
and go CSS&lt;/A&gt;. Well, somewhen in the remote future I'll follow and really use 
&amp;lt;div&amp;gt; myself.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;To find or write: Nice 
VbScript Reference&lt;/STRONG&gt;&lt;BR&gt;VbScript is quite nice actually 
for writing scripts running locally like batch files.&amp;nbsp;WSH is&amp;nbsp;built into Windows and can do 
almost everything.&amp;nbsp;The syntax is ugly - but well, perl's syntax is ugly too and i 
liked perl. &lt;A href="http://www.scintilla.org/SciTE.html"&gt;SciTe&lt;/A&gt;  &amp;nbsp;supports 
VbScript syntax highlighting so I have an editor (always looking for an 
improvement though).&lt;/P&gt;
&lt;P&gt;But what I'm massively missing is a nice VbScript [pocket] [quick] reference 
like the great&amp;nbsp;&lt;A href="http://www.rexswain.com/perl5.html"&gt;Rex Swains's 
HTMLified Perl 5 Reference Guide&lt;/A&gt;. Everyone is pointing to the msdn, which 
isn't that great for learning the language and solving problems, really. 
Everything is written somewhere but you'll&amp;nbsp;hardly ever&amp;nbsp;find it until you 
know the solution yourself. There are some books and even reference&amp;nbsp;html 
pages to buy. But&amp;nbsp;I haven't found an equivalent to Swain's Reference yet. 
Especially annoying is how the &lt;STRONG&gt;information is spread&lt;/STRONG&gt;        
       over several places since you 
are not using VbScript itself e.g. to copy files but&amp;nbsp;Scripting.FileSystemObject.&lt;/P&gt;
&lt;P&gt;        Seems like I'll have to compile stuff 
myself. Just started ripping off html code from these places and putting them into 
a single HTML page:&lt;/P&gt;
&lt;UL&gt;
  &lt;LI&gt;&lt;A   href="http://support.technetex.ca/devguide/vbscript_functions.aspx"&gt;VBScript 
  Reference from Technetex&lt;/A&gt; (spread on 
  several&amp;nbsp; pages, describes 
  language basics and functions quite well)
  &lt;LI&gt;&lt;A   href="http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/"&gt;Scripts 
  Collection from&amp;nbsp;ActiveXperts&lt;/A&gt;&amp;nbsp;(very well hierarchically organized 
  examples for e.g. file operations and interfacing with Windows in almost every 
  imaginable way)&lt;/LI&gt;&lt;/UL&gt;&lt;!-- Powered by IMHO 1.3 (EN) Instant Blogger Copyright (c) 2005 A.Boschin - http://www.imhoproject.org --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-112930438375329451?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/112930438375329451/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=112930438375329451' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112930438375329451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112930438375329451'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2005/10/codesmith-css-vbscript-reference.html' title='CodeSmith, CSS, VbScript Reference'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-112922131121041225</id><published>2005-10-13T20:35:00.000+02:00</published><updated>2005-10-13T18:36:46.470+02:00</updated><title type='text'>Visual Build Tools</title><content type='html'>&lt;P&gt;
I just want a simple tool to build several Visual Studio 
.Net 2003 projects, maybe run something to create an installer and run some 
batch files to collect things for&amp;nbsp;distribution. It's enough&amp;nbsp;if tool just captures console output. It should stop on error. Nice GUI is a must.&lt;/P&gt;
&lt;P&gt;&lt;A title="" href="http://nant.sourceforge.net/" target="" name=""&gt;Nant&lt;/A&gt;
 is ugly and just text based and does not well 
integrate with Visual Studio .Net 2003.&lt;/P&gt;
&lt;P&gt;              
             
MSBuild is the future but only fun with Visual Studio .Net 2005. &lt;/P&gt;
&lt;P&gt;&lt;A title="" href="http://www.finalbuilder.com/finalbuilder/" target="" name=""&gt;FinalBuilder&lt;/A&gt; seems to be a very slick product, but it's not free and 
currently not in our tool list. Maybe later? Well, &lt;A title="" href="http://www.joelonsoftware.com/news/20020813.html" target="" name=""&gt;Joel 
Spolsky is recommending it&lt;/A&gt;, that's a huge 
pro anyway:). &lt;/P&gt;
&lt;P&gt;&lt;A title="" href="http://www.kinook.com/visbuildpro/" target="" name=""&gt;Visual Build Professional&lt;/A&gt; looks not as slick but has a nice feature 
list. Not in our tool list too.&lt;/P&gt;
&lt;P&gt;Yesterday I found this one and I am quite happy with it in the first run: &lt;A title="" href="http://www.menees.com/MegaBuild.htm" target="" name=""&gt;MegaBuild&lt;/A&gt;. .Net, cheap, looks nice and simple:&lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" hspace=0 src="http://static.flickr.com/32/52165982_e1ca501d3e.jpg" align=baseline border=0&gt;&lt;/P&gt;
&lt;P&gt;A donation is not improbable if proves itself over time.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-112922131121041225?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/112922131121041225/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=112922131121041225' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112922131121041225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112922131121041225'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2005/10/visual-build-tools.html' title='Visual Build Tools'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-112922399474879710</id><published>2005-10-13T19:19:00.000+02:00</published><updated>2005-10-13T19:29:32.726+02:00</updated><title type='text'>Hosting Windows.Forms User Controls in Mfc 7.1</title><content type='html'>&lt;P&gt;
Here's the setup:&amp;nbsp; &lt;BR&gt;A&amp;nbsp;GUI is written in .Net and&amp;nbsp;has to be&amp;nbsp;integrated into third party 
product (say like Outlook) as an ActiveX control.&amp;nbsp;Unfortunately the only 
supported host for Windows.Forms user controls in .Net Framework 1.1 is currently 
.Net itself, the Internet Explorer 7 and ... MFC 7.1 (see &lt;A title="" href="ttp://msdn.microsoft.com/msdnmag/issues/03/03/WindowsForms/default.aspx" target="" name=""&gt;MSDN mag 2003/03&lt;/A&gt;). This happened to be true for our case as well.&amp;nbsp;The hack 
of putting the user control directly into the 3rd party app did not work. (The 
hack: register the assembly and add some registry keys, see ".NET and COM - The 
Complete Interoperability Guide" by Adam Nathan page 471. It worked in the 
ActiceX Control Test Container but not the our 3rd party app).&lt;/P&gt;
&lt;P&gt;The MSDN article has example source code to host a 
Windows.Forms.Control&amp;nbsp;in MFC 7.1.&amp;nbsp;It works pretty well, but only in Debug mode(I'm building an ActiveX OCX). Compiled as 
Release I always got strange a NullReferenceException in the copied MSDN code. I tracked it down to this line (in ::OnCreate):&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: black 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: black 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: gainsboro"&gt;&amp;nbsp;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;spunkControl&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000; FONT-FAMILY: Courier New"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #191970; FONT-FAMILY: Courier New"&gt;Attach&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000; FONT-FAMILY: Courier New"&gt;((&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;IUnknown&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000; FONT-FAMILY: Courier New"&gt;*)&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;System::Runtime::InteropServices::Marshal::&lt;/SPAN&gt;&lt;SPAN style="COLOR: #191970; FONT-FAMILY: Courier New"&gt;GetIUnknownForObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000; FONT-FAMILY: Courier New"&gt;(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;ctrlWinForms&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000; FONT-FAMILY: Courier New"&gt;).&lt;/SPAN&gt;&lt;SPAN style="COLOR: #191970; FONT-FAMILY: Courier New"&gt;ToPointer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000; FONT-FAMILY: Courier New"&gt;());&lt;BR&gt;&lt;/DIV&gt;&lt;/SPAN&gt;
&lt;P&gt;    This line works perfectly well when 
compiled in Debug . In the Release build it's not working for me (and 
causing MSDN code later to throw a NullReferenceException), maybe due to 
optimization?&lt;/P&gt;
&lt;P&gt;Doing each step one by one&amp;nbsp;is working&amp;nbsp;in Release too:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: black 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: black 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: gainsboro"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;System::Windows::Forms::Control*&amp;nbsp;ctrlWinForms;&lt;BR&gt;CComPtr&amp;lt;IUnknown&amp;gt;&amp;nbsp;spunkControl;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//&amp;nbsp;load&amp;nbsp;assembly&amp;nbsp;and&amp;nbsp;stuff&amp;nbsp;...&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;System::IntPtr&amp;nbsp;iUnknown&amp;nbsp;=&amp;nbsp;System::Runtime::InteropServices::Marshal::GetIUnknownForObject(ctrlWinForms);&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;if&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;(System::IntPtr::Zero&amp;nbsp;==&amp;nbsp;iUnknown)&lt;BR&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//&amp;nbsp;failed&amp;nbsp;to&amp;nbsp;get&amp;nbsp;IUnknown&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;::MessageBox(NULL,&amp;nbsp;"Failed&amp;nbsp;to&amp;nbsp;get&amp;nbsp;an&amp;nbsp;IUnknown&amp;nbsp;for&amp;nbsp;ctrlWinForms&amp;nbsp;",&amp;nbsp;"Init&amp;nbsp;failed",&amp;nbsp;MB_OK);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;return&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;VARIANT_FALSE;&lt;BR&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&lt;BR&gt;spunkControl.Attach((IUnknown*)iUnknown.ToPointer());&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;if&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;(!spunkControl)&lt;BR&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//&amp;nbsp;failed&amp;nbsp;to&amp;nbsp;attach&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;::MessageBox(NULL,&amp;nbsp;"Failed&amp;nbsp;to&amp;nbsp;attach&amp;nbsp;the&amp;nbsp;IUnknown&amp;nbsp;for&amp;nbsp;ctrlWinForms&amp;nbsp;",&amp;nbsp;"Init&amp;nbsp;failed",&amp;nbsp;MB_OK);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;return&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;VARIANT_FALSE;&lt;BR&gt;}&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;Final note: the docs for GetIUnknownForObject are 
explicitly stating, that one has to call a Marshal.Release 
later.&amp;nbsp;CComPtr&amp;lt;&amp;gt;::Attach is not doing an AddRef&amp;nbsp;though and being 
a smartpointer calls Release automaticly on exit.&lt;/SPAN&gt;
&lt;/P&gt;&lt;!-- Powered by IMHO 1.3 (EN) Instant Blogger Copyright (c) 2005 A.Boschin - http://www.imhoproject.org --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-112922399474879710?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/112922399474879710/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=112922399474879710' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112922399474879710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112922399474879710'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2005/10/hosting-windowsforms-user-controls-in.html' title='Hosting Windows.Forms User Controls in Mfc 7.1'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17811071.post-112921937668056680</id><published>2005-10-13T18:02:00.000+02:00</published><updated>2005-10-13T19:30:34.826+02:00</updated><title type='text'>Blog started</title><content type='html'>&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;
I'm starting this blog to take some technical notes 
during my work as a programmer.&lt;/P&gt;
&lt;P&gt;
My personal blog &lt;A title="" href="http://gomasch.blogspot.com/" target="" name=""&gt;gomasch&lt;/A&gt;&amp;nbsp;is in 
german and I wanted to seperate programming stuff from 
that.
&lt;/FONT&gt;&lt;/P&gt;&lt;!-- Powered by IMHO 1.3 (EN) Instant Blogger Copyright (c) 2005 A.Boschin - http://www.imhoproject.org --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17811071-112921937668056680?l=gomaschdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gomaschdev.blogspot.com/feeds/112921937668056680/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17811071&amp;postID=112921937668056680' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112921937668056680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17811071/posts/default/112921937668056680'/><link rel='alternate' type='text/html' href='http://gomaschdev.blogspot.com/2005/10/blog-started.html' title='Blog started'/><author><name>Martin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
