<?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-5913647781749476931</id><updated>2011-11-14T14:06:31.329-08:00</updated><category term='windows'/><category term='dock'/><category term='programming'/><title type='text'>EzhNotes</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-8006697753330617961</id><published>2009-10-30T12:08:00.000-07:00</published><updated>2009-10-30T12:09:31.054-07:00</updated><title type='text'>moving to wordpress</title><content type='html'>Moving to new location &lt;a href="http://ezhnotes.wordpress.com/"&gt;on wordpress&lt;br /&gt;&lt;/a&gt;. They seems to provide much better functionality for editing and statistics&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-8006697753330617961?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/8006697753330617961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=8006697753330617961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8006697753330617961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8006697753330617961'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/10/moving-to-wordpress.html' title='moving to wordpress'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-8214475241478770513</id><published>2009-10-04T14:12:00.001-07:00</published><updated>2009-10-04T14:12:46.262-07:00</updated><title type='text'>convert jscript to html</title><content type='html'>Very simple yet good jscript to html &lt;a href="http://formatmysourcecode.blogspot.com/"&gt;code formatting tool&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-8214475241478770513?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/8214475241478770513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=8214475241478770513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8214475241478770513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8214475241478770513'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/10/convert-jscript-to-html.html' title='convert jscript to html'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-2649102270018734358</id><published>2009-10-04T11:41:00.000-07:00</published><updated>2009-10-04T11:45:58.758-07:00</updated><title type='text'>disable venkman output to console</title><content type='html'>Venkman produces a lot of output to console which makes it hard to see the output from your extensions. To disable output from venkman, you can update venkman_utils.js in venkman.jar by replacing dd function with an empty function dd = function (){};&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-2649102270018734358?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/2649102270018734358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=2649102270018734358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/2649102270018734358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/2649102270018734358'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/10/disable-venkman-output-to-console.html' title='disable venkman output to console'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-4049478957109168244</id><published>2009-10-04T10:47:00.000-07:00</published><updated>2009-10-04T12:26:44.748-07:00</updated><title type='text'>debug output from firefox extension</title><content type='html'>Start firefox with -console flag&lt;br /&gt;&lt;br /&gt;Call dumpln function from your code (copy of code from venkman)&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;var dumpln;&lt;br /&gt;&lt;br /&gt;if (typeof document == &amp;quot;undefined&amp;quot;) /* in xpcshell */&lt;br /&gt;{&lt;br /&gt;    dumpln = print;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;    if (typeof dump == &amp;quot;function&amp;quot;) {&lt;br /&gt;        dumpln = function (str) {dump (str + &amp;quot;\n&amp;quot;);}&lt;br /&gt;    } else if (jsenv.HAS_RHINO) {&lt;br /&gt;        dumpln = function (str) {&lt;br /&gt;                     var out = java.lang.System.out;&lt;br /&gt;                     out.println(str); out.flush();&lt;br /&gt;                 }&lt;br /&gt;    }&lt;br /&gt;    else {&lt;br /&gt;        dumpln = function () {} /* no suitable function */&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-4049478957109168244?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/4049478957109168244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=4049478957109168244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/4049478957109168244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/4049478957109168244'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/10/debug-output-from-firefox-extension.html' title='debug output from firefox extension'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-5146981679742107162</id><published>2009-09-08T17:32:00.000-07:00</published><updated>2009-09-08T17:33:35.662-07:00</updated><title type='text'>Firefox vs Chrome #2</title><content type='html'>Made another attempt to use Chrome 2.x and 3.x. Layout issues seems to be fixed. However there are still problems like&lt;br /&gt;- Navigation back from 404 does not always work (never hit such problems in FF)&lt;br /&gt;- Adding RSS to google reader is not supported&lt;br /&gt;&lt;br /&gt;Back to FF.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-5146981679742107162?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/5146981679742107162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=5146981679742107162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5146981679742107162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5146981679742107162'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/09/firefox-vs-chrome-2.html' title='Firefox vs Chrome #2'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-8242999699480022041</id><published>2009-08-13T10:02:00.000-07:00</published><updated>2009-08-13T10:04:03.013-07:00</updated><title type='text'>Windows7. Disable hiding windows during Alt-Tab</title><content type='html'>Win7 alt-tab hides windows after few seconds timeout. To disable this behavior uncheck “Enable Aero Peek” in the performance dialog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-8242999699480022041?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/8242999699480022041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=8242999699480022041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8242999699480022041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8242999699480022041'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/08/windows7-disable-hiding-windows-during.html' title='Windows7. Disable hiding windows during Alt-Tab'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-9153168385592113640</id><published>2009-05-02T19:04:00.000-07:00</published><updated>2009-05-02T19:09:21.740-07:00</updated><title type='text'>FireFox vs Chrome</title><content type='html'>After trying Chrome for a week I got back to FireFox. Main problems with Chrome are&lt;br /&gt;- Increased battery usage. Battery time decreases ~30% when Chrome is running. Does not happen for FF on the same sites&lt;br /&gt;- Chrome renders some sites (like google reader) differently than IE / FF&lt;br /&gt;- Address bar shows prompt for visited sites instead of typed sides like FF. &lt;br /&gt;- In the default configuration does not allow to subscribe to RSS feeds. Shows XML dump in a window&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-9153168385592113640?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/9153168385592113640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=9153168385592113640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/9153168385592113640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/9153168385592113640'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/05/firefox-vs-chrome.html' title='FireFox vs Chrome'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-4512183801611038843</id><published>2009-02-28T18:35:00.000-08:00</published><updated>2009-02-28T18:37:21.571-08:00</updated><title type='text'>myDock 0.9.1051 is released</title><content type='html'>New version is available on &lt;a href="http://alexezh.googlepages.com"&gt;alexezh.googlepages.com&lt;/a&gt;. Update includes minor fixes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-4512183801611038843?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/4512183801611038843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=4512183801611038843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/4512183801611038843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/4512183801611038843'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/02/mydock-091051-is-released.html' title='myDock 0.9.1051 is released'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-1207030207637612766</id><published>2009-02-22T13:30:00.000-08:00</published><updated>2009-02-22T14:32:21.716-08:00</updated><title type='text'>Subsclass UserControl in SilverLight</title><content type='html'>By default Expression creates custom controls derived from UserControls&lt;br /&gt;&lt;br /&gt;partial class MyControl : UserControl&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;In order to derive from a different class you will have to change code in several places&lt;br /&gt;&lt;br /&gt;Define new base class with required virtual methods. Do not make class abstract&lt;br /&gt;&lt;br /&gt;public class MyUserControl : UserControl&lt;br /&gt;{&lt;br /&gt;    public virtual void Foo() {;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Change MyControl to use MyUserControl&lt;br /&gt;&lt;br /&gt;partial class MyControl : UserControl&lt;br /&gt;{&lt;br /&gt;    public override void Foo() {;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Change XAML for MyControl to use&lt;br /&gt;&lt;br /&gt;&amp;ltMyUserControl x:Class="MyControl"&amp;gt&lt;br /&gt;&amp;lt/MyUserControl&amp;gt&lt;br /&gt;&lt;br /&gt;To make Blend happy, add following lines to AssemblyInfo.cs &lt;br /&gt;&lt;br /&gt;// Make blend happy&lt;br /&gt;using System.Windows.Markup;&lt;br /&gt;[assembly: XmlnsDefinition("http://schemas.microsoft.com/client/2007", "YourNamespace")]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-1207030207637612766?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/1207030207637612766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=1207030207637612766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/1207030207637612766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/1207030207637612766'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/02/subsclass-usercontrol-in-silverlight.html' title='Subsclass UserControl in SilverLight'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-3999096880640800957</id><published>2009-02-15T08:59:00.001-08:00</published><updated>2009-02-15T09:14:51.451-08:00</updated><title type='text'>Better version of VS windows hiding tool</title><content type='html'>Remembers which windows were shown the last time. Source is available at &lt;a href="http://alexezh.googlepages.com/MyMacros.txt"&gt;http://alexezh.googlepages.com/MyMacros.txt&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-3999096880640800957?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/3999096880640800957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=3999096880640800957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3999096880640800957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3999096880640800957'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/02/better-version-of-vs-windows-hiding.html' title='Better version of VS windows hiding tool'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-2610676088805016440</id><published>2009-01-25T14:16:00.001-08:00</published><updated>2009-01-25T14:24:51.492-08:00</updated><title type='text'>Optimize VS workspace by hiding tool windows</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Simple macro toggles all tool windows&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse; background: #c6d9f1'&gt;&lt;colgroup&gt;&lt;col style='width:798px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 9px; padding-right: 9px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p style='margin-left: 36pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;Dim showToolWindows As Integer&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 36pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;Public Sub MyToggleToolWindows()&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 72pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;If (showToolWindows = 1) Then&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 108pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;showToolWindows = 0&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 72pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;Else&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 108pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;showToolWindows = 1&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 72pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;End If&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 72pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;For Each window As Window In DTE.Windows&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 108pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;' Check that this is a tool window and not a document window.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 108pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;If (window.Document Is Nothing) Then&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 144pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;' hide window.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 144pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;Try&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 180pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;window.Visible = showToolWindows&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 144pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;Catch exception As Exception&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 144pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;End Try&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 108pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;End If&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 72pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;Next&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 36pt'&gt;&lt;span style='font-family:Arial; font-size:8pt'&gt;End Sub&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-2610676088805016440?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/2610676088805016440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=2610676088805016440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/2610676088805016440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/2610676088805016440'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/01/optimize-vs-workspace-by-hiding-tool.html' title='Optimize VS workspace by hiding tool windows'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-6299748777087159465</id><published>2009-01-11T14:00:00.000-08:00</published><updated>2009-01-11T14:03:14.480-08:00</updated><title type='text'>SL unmanaged helpers on codeplex</title><content type='html'>I posted updated version of unmanaged helpers for accessing SL object model. With helpers you can write code in C++ which matches C# or jscript. &lt;br /&gt;&lt;br /&gt;For example here is how to add an event handler to an object&lt;br /&gt;&lt;br /&gt;    vObj.addEventListener(L"MouseEnter", &lt;br /&gt;           CXcpDelegateT(CObject)::create(this, &amp;CObject::OnMouseEnter));&lt;br /&gt;&lt;br /&gt;Source code is available on http://www.codeplex.com/mydock&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-6299748777087159465?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/6299748777087159465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=6299748777087159465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6299748777087159465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6299748777087159465'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/01/sl-unmanaged-helpers-on-codeplex.html' title='SL unmanaged helpers on codeplex'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-5521587905753523016</id><published>2009-01-11T13:32:00.000-08:00</published><updated>2009-01-11T13:37:28.703-08:00</updated><title type='text'>Back to basics</title><content type='html'>I spent last few month designing new UI for myDock. Test version of UI did not work very well, so I am returning back to original code.&lt;br /&gt;&lt;br /&gt;On the good side, I mastered a process of hosting SL2.0 including managed code from unmanaged applications. See details on http://www.codeplex.com/mydock&lt;br /&gt;&lt;br /&gt;1051 version will be available in few days&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-5521587905753523016?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/5521587905753523016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=5521587905753523016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5521587905753523016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5521587905753523016'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2009/01/back-to-basics.html' title='Back to basics'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-1253390571091770173</id><published>2008-09-23T10:33:00.000-07:00</published><updated>2008-09-23T10:34:10.955-07:00</updated><title type='text'>myDock 0.9.1035 is released</title><content type='html'>New version of myDock is available on &lt;a href="http://alexezh.googlepages.com/"&gt;http://alexezh.googlepages.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-1253390571091770173?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/1253390571091770173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=1253390571091770173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/1253390571091770173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/1253390571091770173'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/09/mydock-091035-is-released.html' title='myDock 0.9.1035 is released'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-6939490123900257204</id><published>2008-09-20T14:09:00.000-07:00</published><updated>2008-09-20T14:14:27.658-07:00</updated><title type='text'>Change MSI to run under custom actions under user account</title><content type='html'>MSI package generated by VS2008 will run custom actions under SYSTEM account. This "feature" was implemented to work around Vista's UAC. &lt;br /&gt;&lt;br /&gt;There is no way to change this behavior from VS2008, but you can adjust MSI package using ORCA tool (available in SDK).&lt;br /&gt;&lt;br /&gt;Start ORCA tool, open MSI package, navigate to custom actions. Select action which you would like to run under user account and subtract 0x800 from Type. In my case, value generated by VS2008 is 3090, new value should be 1042. &lt;br /&gt;&lt;br /&gt;Save MSI back. Done&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-6939490123900257204?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/6939490123900257204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=6939490123900257204' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6939490123900257204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6939490123900257204'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/09/change-msi-to-run-under-custom-actions.html' title='Change MSI to run under custom actions under user account'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-7805303568046542692</id><published>2008-09-13T14:06:00.000-07:00</published><updated>2008-09-13T14:07:47.110-07:00</updated><title type='text'>Problem with 0.9.1031 and Silverlight1.0</title><content type='html'>0.9.1031 crashes when running with SL1.0. SL2.0 Beta2 works fine. If you run into this problem, you can either install SL1.0 or use MyDock0.9.1027&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-7805303568046542692?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/7805303568046542692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=7805303568046542692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/7805303568046542692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/7805303568046542692'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/09/problem-with-091031-and-silverlight10.html' title='Problem with 0.9.1031 and Silverlight1.0'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-5703160996746991623</id><published>2008-09-09T09:26:00.001-07:00</published><updated>2008-09-09T09:27:18.754-07:00</updated><title type='text'>myDock 0.9.1031</title><content type='html'>New version of myDock is available on &lt;a href=http://alexezh.googlepages.com&gt;http://alexezh.googlepages.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-5703160996746991623?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/5703160996746991623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=5703160996746991623' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5703160996746991623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5703160996746991623'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/09/mydock-091031.html' title='myDock 0.9.1031'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-8895505928563670466</id><published>2008-09-01T23:04:00.000-07:00</published><updated>2008-09-01T23:07:50.129-07:00</updated><title type='text'>SL path mini language to geometry converter</title><content type='html'>Added utility to &lt;a href=http://alexezh.googlepages.com/developlemtinsilverlight&gt;http://alexezh.googlepages.com/developlemtinsilverlight&lt;/a&gt; to convert Silverlight path mini language to geometry&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-8895505928563670466?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/8895505928563670466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=8895505928563670466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8895505928563670466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8895505928563670466'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/09/sl-path-mini-language-to-geometry.html' title='SL path mini language to geometry converter'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-5859510675057179569</id><published>2008-08-31T09:55:00.001-07:00</published><updated>2008-08-31T09:55:45.324-07:00</updated><title type='text'>pathgeometry vs mini language</title><content type='html'>http://www.farseergames.com/blog/post/Workaround-for-Accessing-PathGeometry-Data-in-Code.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-5859510675057179569?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/5859510675057179569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=5859510675057179569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5859510675057179569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5859510675057179569'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/08/pathgeometry-vs-mini-language.html' title='pathgeometry vs mini language'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-6914869601722092671</id><published>2008-08-24T15:16:00.000-07:00</published><updated>2008-08-24T15:18:27.940-07:00</updated><title type='text'>using selectSingleNode for XAML</title><content type='html'>When using selectSingleNode to search XAML, it is required to set SelectionNamespace property with fake prefix. Here is an example&lt;br /&gt;&lt;br /&gt;   spDoc2-&gt;setProperty(CComBSTR(L"SelectionLanguage"), CComVariant(L"XPath"));&lt;br /&gt;   spDoc2-&gt;setProperty(CComBSTR(L"SelectionNamespaces"), &lt;br /&gt;        CComVariant("xmlns:d=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\""));&lt;br /&gt;    &lt;br /&gt;   m_spDoc-&gt;selectSingleNode(CComBSTR(L"./d:Canvas"), &amp;m_spRoot);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-6914869601722092671?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/6914869601722092671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=6914869601722092671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6914869601722092671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6914869601722092671'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/08/using-selectsinglenode-for-xaml.html' title='using selectSingleNode for XAML'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-3298343471156577064</id><published>2008-07-24T22:02:00.000-07:00</published><updated>2008-07-24T22:03:39.807-07:00</updated><title type='text'>MyDock has moved</title><content type='html'>MyDock download has moved from codeplex to &lt;a href="http://alexezh.googlepages.com"&gt;http://alexezh.googlepages.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-3298343471156577064?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/3298343471156577064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=3298343471156577064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3298343471156577064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3298343471156577064'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/07/mydock-has-moved.html' title='MyDock has moved'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-6274159958008606331</id><published>2008-07-22T13:17:00.001-07:00</published><updated>2008-07-22T13:17:48.982-07:00</updated><title type='text'>MyDock 0.9.1027</title><content type='html'>New Features&lt;br /&gt;&lt;br /&gt;    * Added multimonitor support (first version, no configuration UI yet)&lt;br /&gt;          o To switch to the second monitor, add &lt;Monitor&gt;1&lt;/Monitor&gt; to dock.xml and restart the dock.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fixes&lt;br /&gt;&lt;br /&gt;    * Fixed refresh problem after screen resolution change&lt;br /&gt;    * Fixed memory leak (time will tell if this is the last one)&lt;br /&gt;    * Added delay for showing dock when new window is activated&lt;br /&gt;    * Fixed problem with context menus showing behind dock&lt;br /&gt;    * Updated visual for window manager dock&lt;br /&gt;    * Add hover indicator to tray menu&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-6274159958008606331?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/6274159958008606331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=6274159958008606331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6274159958008606331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6274159958008606331'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/07/mydock-091027.html' title='MyDock 0.9.1027'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-344391991851525281</id><published>2008-07-21T09:48:00.000-07:00</published><updated>2008-07-21T09:51:29.985-07:00</updated><title type='text'>WebGadgets</title><content type='html'>After playing with Google desktop gadgets for a while, I decided to implement support for Web gadgets first. Much easier to do plus covers 90% of interesting functionality. &lt;br /&gt;&lt;br /&gt;Yesterday got the first result; google clock is running on dashboard. Well, almost running, gadget size is wrong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-344391991851525281?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/344391991851525281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=344391991851525281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/344391991851525281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/344391991851525281'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/07/webgadgets.html' title='WebGadgets'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-6789614971072741526</id><published>2008-07-15T20:11:00.000-07:00</published><updated>2008-07-15T20:14:52.567-07:00</updated><title type='text'>MyDock 0.9.1025</title><content type='html'>Lot's of updates and bug fixes. &lt;br /&gt;&lt;br /&gt;Lately I am spending most of the time on implementing OSX style dashboard and support for google gadgets. Google or Vista sidebars take too much space on screen and provide constant distraction. Old style windows active desktop provides similar functionality, but it requires hiding all apps (which seems like a destructive action).&lt;br /&gt;&lt;br /&gt;Last week mydock dashboard displayed the first picture. To be continued.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-6789614971072741526?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/6789614971072741526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=6789614971072741526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6789614971072741526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6789614971072741526'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/07/mydock-091025.html' title='MyDock 0.9.1025'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-6238697225220356214</id><published>2008-05-11T19:43:00.001-07:00</published><updated>2008-05-11T19:44:52.961-07:00</updated><title type='text'>MyDock 0.9.1009</title><content type='html'>Just posted the latest version of mydock to www.codeplex.com/mydock. The main new feature is limited support for system tray.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-6238697225220356214?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/6238697225220356214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=6238697225220356214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6238697225220356214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/6238697225220356214'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/05/mydock-091009.html' title='MyDock 0.9.1009'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-5669274286411154577</id><published>2008-04-19T09:51:00.000-07:00</published><updated>2008-04-19T09:52:17.303-07:00</updated><title type='text'>open explorer at My Computer folder</title><content type='html'>ShellExecute(NULL,&lt;br /&gt;                L"explore",&lt;br /&gt;                L"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}",&lt;br /&gt;                NULL,&lt;br /&gt;                NULL,&lt;br /&gt;                SW_SHOW);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-5669274286411154577?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/5669274286411154577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=5669274286411154577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5669274286411154577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/5669274286411154577'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/04/open-explorer-at-my-computer-folder.html' title='open explorer at My Computer folder'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-3927057316411497856</id><published>2008-04-13T13:37:00.000-07:00</published><updated>2008-04-13T13:39:52.203-07:00</updated><title type='text'>MyDock 0.9.1001</title><content type='html'>New release is available &lt;a href="http://www.codeplex.com/mydock"&gt;here&lt;/a&gt;. Main changes are&lt;br /&gt;&lt;br /&gt;    * Added quit button&lt;br /&gt;    * Use high-quality icons if available&lt;br /&gt;    * Bug fixes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-3927057316411497856?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/3927057316411497856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=3927057316411497856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3927057316411497856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3927057316411497856'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/04/mydock-091001.html' title='MyDock 0.9.1001'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-1917038087324765483</id><published>2008-04-11T14:48:00.000-07:00</published><updated>2008-04-11T14:50:02.052-07:00</updated><title type='text'>Migrating dev related items to codeplex</title><content type='html'>Created a project for tracking items and releases on CodePlex. See &lt;a href="http://www.codeplex.com/mydock"&gt;MyDock On CodePlex&lt;/a&gt; for more details&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-1917038087324765483?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/1917038087324765483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=1917038087324765483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/1917038087324765483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/1917038087324765483'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/04/migrating-dev-related-items-to-codeplex.html' title='Migrating dev related items to codeplex'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-7023032024699944131</id><published>2008-04-05T11:11:00.000-07:00</published><updated>2008-04-05T11:15:21.133-07:00</updated><title type='text'>XMLDOM tricks</title><content type='html'>Add \r\n to the document when saving. Original info from &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1900503&amp;SiteID=1"&gt;Line breaks and IXMLDOMDocument&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;static LPCWSTR s_szFormatConfig  = L""\&lt;br /&gt;L"  edit window is not XML friendly, see original post for details";&lt;br /&gt;    &lt;br /&gt;static HRESULT FormatConfig(IXMLDOMDocument * pInDoc, CComPtr&lt;IXMLDOMDocument&gt; &amp; spOutDoc)&lt;br /&gt;{&lt;br /&gt;    HRESULT hr = S_OK;&lt;br /&gt;    CComPtr&lt;IXMLDOMDocument&gt; spSS;&lt;br /&gt;    VARIANT_BOOL vbSuccess;&lt;br /&gt;    &lt;br /&gt;    IFC(CoCreateInstance(__uuidof(DOMDocument60),&lt;br /&gt;                   NULL,&lt;br /&gt;                   CLSCTX_INPROC_SERVER,&lt;br /&gt;                   __uuidof(IXMLDOMDocument),&lt;br /&gt;                   (void**)&amp;spSS));&lt;br /&gt;&lt;br /&gt;    IFC(CoCreateInstance(__uuidof(DOMDocument60),&lt;br /&gt;                   NULL,&lt;br /&gt;                   CLSCTX_INPROC_SERVER,&lt;br /&gt;                   __uuidof(IXMLDOMDocument),&lt;br /&gt;                   (void**)&amp;spOutDoc));&lt;br /&gt;    &lt;br /&gt;    spSS-&gt;put_resolveExternals(VARIANT_FALSE);&lt;br /&gt;    spSS-&gt;put_preserveWhiteSpace(VARIANT_TRUE);&lt;br /&gt;&lt;br /&gt;    spOutDoc-&gt;put_resolveExternals(VARIANT_FALSE);&lt;br /&gt;    spOutDoc-&gt;put_preserveWhiteSpace(VARIANT_TRUE);&lt;br /&gt;&lt;br /&gt;    //&lt;br /&gt;    // load SS from string&lt;br /&gt;    //&lt;br /&gt;    IFC(spSS-&gt;loadXML(CComBSTR(s_szFormatConfig), &amp;vbSuccess));&lt;br /&gt;    if(vbSuccess != VARIANT_TRUE)&lt;br /&gt;    {&lt;br /&gt;        hr = E_FAIL;&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //&lt;br /&gt;    // convert&lt;br /&gt;    //&lt;br /&gt;    IFC(pInDoc-&gt;transformNodeToObject(spSS, CComVariant(spOutDoc)));&lt;br /&gt;    &lt;br /&gt;Cleanup:&lt;br /&gt;&lt;br /&gt;    return hr;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Convert document to UTF8&lt;br /&gt;&lt;br /&gt;static HRESULT ForceUTF8(IXMLDOMDocument * pDoc)&lt;br /&gt;{&lt;br /&gt;    HRESULT hr = S_OK;&lt;br /&gt;    CComPtr&lt;IXMLDOMProcessingInstruction&gt; spPI;&lt;br /&gt;    CComPtr&lt;IXMLDOMNode&gt; spOldPI;&lt;br /&gt;    CComPtr&lt;IXMLDOMNode&gt; spOutOldPI;&lt;br /&gt;    CComPtr&lt;IXMLDOMNodeList&gt; spChildren;&lt;br /&gt;&lt;br /&gt;    IFC(pDoc-&gt;createProcessingInstruction(L"xml", L"version=\"1.0\" encoding=\"UTF-8\"", &amp;spPI));&lt;br /&gt;&lt;br /&gt;    IFC(pDoc-&gt;get_childNodes(&amp;spChildren));&lt;br /&gt;&lt;br /&gt;    IFC(spChildren-&gt;get_item(0, &amp;spOldPI));&lt;br /&gt;&lt;br /&gt;    IFC(pDoc-&gt;replaceChild( spPI, spOldPI, &amp;spOutOldPI));&lt;br /&gt;&lt;br /&gt;Cleanup:&lt;br /&gt;&lt;br /&gt;    return hr;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-7023032024699944131?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/7023032024699944131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=7023032024699944131' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/7023032024699944131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/7023032024699944131'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/04/xmldom-tricks.html' title='XMLDOM tricks'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-3688704711987719469</id><published>2008-04-04T07:39:00.000-07:00</published><updated>2008-04-04T07:41:36.538-07:00</updated><title type='text'>MyDock, 04-03-2007</title><content type='html'>Added window manager docklet. Window manager allow you to perform common operations on active window such as resize to half of screen, move to different monitor etc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-3688704711987719469?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/3688704711987719469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=3688704711987719469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3688704711987719469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3688704711987719469'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/04/mydock-04-03-2007.html' title='MyDock, 04-03-2007'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-3872930864095304917</id><published>2008-04-02T10:25:00.000-07:00</published><updated>2008-04-02T10:26:28.000-07:00</updated><title type='text'>MyDock home page</title><content type='html'>Just created a &lt;a href="http://alexezh.googlepages.com/mydock"&gt;home page&lt;/a&gt; for MyDock.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-3872930864095304917?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/3872930864095304917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=3872930864095304917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3872930864095304917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/3872930864095304917'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/04/mydock-home-page.html' title='MyDock home page'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-984254756191224852</id><published>2008-04-02T09:19:00.000-07:00</published><updated>2008-04-05T12:25:32.626-07:00</updated><title type='text'>TODO list</title><content type='html'>Some ideas for todo list&lt;br /&gt;&lt;br /&gt;- OSX type Dashboard with SL2.0 applets&lt;br /&gt;- Windows manager similar to vMax (in progress)&lt;br /&gt;- Search box (similar to search in the start menu on Vista)&lt;br /&gt;- Run docklet&lt;br /&gt;- Hide windows taskbar&lt;br /&gt;- Tray docklet&lt;br /&gt;- Run as admin option&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-984254756191224852?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/984254756191224852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=984254756191224852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/984254756191224852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/984254756191224852'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/04/pending-features.html' title='TODO list'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-1204952504334091786</id><published>2008-03-31T22:25:00.000-07:00</published><updated>2008-03-31T22:26:59.240-07:00</updated><title type='text'>MyDock, bug fixes</title><content type='html'>Minor bug fixes&lt;br /&gt;- fix AV when closing application&lt;br /&gt;- fix duplicated icons when starting mydock&lt;br /&gt;&lt;br /&gt;Download from &lt;a href="http://cid-e6d40d513fad3b69.skydrive.live.com/self.aspx/Public/mydock033107_1.zip"&gt;MyDock032107_1.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-1204952504334091786?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/1204952504334091786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=1204952504334091786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/1204952504334091786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/1204952504334091786'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/03/mydock-bug-fixes.html' title='MyDock, bug fixes'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-7594323289752251750</id><published>2008-03-31T15:23:00.000-07:00</published><updated>2008-03-31T15:24:20.006-07:00</updated><title type='text'></title><content type='html'>Last version of MyDock does not look very stable. Icons disappear from the dock from time to time&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-7594323289752251750?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/7594323289752251750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=7594323289752251750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/7594323289752251750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/7594323289752251750'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/03/last-version-of-mydock-does-not-look.html' title=''/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-557599522319385247</id><published>2008-03-31T08:43:00.000-07:00</published><updated>2008-03-31T08:46:36.418-07:00</updated><title type='text'></title><content type='html'>Number of updates&lt;br /&gt;- Added initial version of drag&amp;drop support both from shell and inside the dock. Now you can re-arrange docklets by dragging them&lt;br /&gt;- Added configuration file for basic properties like docklet size. See dock_mini.xml for details. To use configuration, rename dock_mini.xml to dock.xml and copy it to either application directory or appdata directory&lt;br /&gt;- Added key to hide / show the dock. Configurable through global config&lt;br /&gt;&lt;br /&gt;As usual, download from&lt;br /&gt;&lt;a href="http://cid-e6d40d513fad3b69.skydrive.live.com/self.aspx/Public/mydock033107.zip"&gt;MyDock033107&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-557599522319385247?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/557599522319385247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=557599522319385247' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/557599522319385247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/557599522319385247'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/03/number-of-updates-added-initial-version.html' title=''/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-964514453008648924</id><published>2008-03-26T10:05:00.000-07:00</published><updated>2008-03-26T10:06:53.168-07:00</updated><title type='text'>mydock, 032607</title><content type='html'>New version. Changes&lt;br /&gt;- Added tooltips&lt;br /&gt;- Added mirror effect&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cid-e6d40d513fad3b69.skydrive.live.com/embedrowdetail.aspx/Public/mydock032607.zip"&gt;MyDock032607&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-964514453008648924?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/964514453008648924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=964514453008648924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/964514453008648924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/964514453008648924'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/03/mydock-032607.html' title='mydock, 032607'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-842488779124938294</id><published>2008-03-25T20:31:00.000-07:00</published><updated>2008-03-25T20:45:28.673-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dock'/><title type='text'>mydock, 03-25-2007</title><content type='html'>My clone of OS X dock. Requires &lt;a href="http://www.silverlight.net/"&gt;SilverLight&lt;/a&gt; runtime to run.&lt;br /&gt;&lt;br /&gt;I've been using &lt;a href="http://www.objectdock.com/"&gt;ObjectDock&lt;/a&gt; for a while, but was always disappointed by lack of functionality compared to OS X dock.&lt;br /&gt;&lt;br /&gt;Main difference is in the way how applications are handled by the dock. In OS X, same icon can be used to started pinned application or switch to it. If application is not pinned, clicking on icon activates the application. In ObjectDock, there are two types of icons; one for running windows and second for pinned apps. As a result, you might see two instances of the same icon.&lt;br /&gt;&lt;br /&gt;To try mydock,&lt;br /&gt;- download &lt;a href="http://cid-e6d40d513fad3b69.skydrive.live.com/embedrowdetail.aspx/Public/mydock032507.zip"&gt;MyDock.zip&lt;/a&gt; unzip it to an empty folder&lt;br /&gt;- run "mydock.exe".&lt;br /&gt;- md5 hash for zip file is 3e57f216ce78920952207b34502d236e&lt;br /&gt;&lt;br /&gt;Code is under active development. To be continued....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-842488779124938294?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/842488779124938294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=842488779124938294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/842488779124938294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/842488779124938294'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/03/my-clone-of-os-x-dock.html' title='mydock, 03-25-2007'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-4656372967222090574</id><published>2008-03-25T20:16:00.000-07:00</published><updated>2008-03-25T20:18:20.731-07:00</updated><title type='text'>extract icon from exe</title><content type='html'>Code based on http://msdn2.microsoft.com/en-us/library/ms997538.aspx. &lt;br /&gt;&lt;br /&gt;class CIconExtractor&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;    CIconExtractor()&lt;br /&gt;        : m_pImage(NULL)&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    HRESULT LoadIconFromApp(LPCWSTR pszFileName, CPngImage ** ppImage);&lt;br /&gt;&lt;br /&gt;private:&lt;br /&gt;    CPngImage * m_pImage;&lt;br /&gt;    &lt;br /&gt;private:&lt;br /&gt;    static BOOL CALLBACK EnumIconProcInit(      &lt;br /&gt;        HMODULE hModule,&lt;br /&gt;        LPCTSTR lpszType,&lt;br /&gt;        LPTSTR lpszName,&lt;br /&gt;        LONG_PTR lParam);&lt;br /&gt;&lt;br /&gt;    BOOL EnumIconProc(      &lt;br /&gt;        HMODULE hModule,&lt;br /&gt;        LPCTSTR lpszType,&lt;br /&gt;        LPTSTR lpszName);&lt;br /&gt;&lt;br /&gt;    HRESULT GetResourceBytes(HMODULE hModule, LPCTSTR lpszType, LPTSTR lpszName, CAtlArray&lt;BYTE&gt; &amp; arRes);&lt;br /&gt;    HRESULT LoadIconFromGroup(HMODULE hModule, CAtlArray&lt;BYTE&gt; &amp; arRes);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;///////////////////////////////////////////////////////////////////////////////&lt;br /&gt;//&lt;br /&gt;HRESULT CIconExtractor::LoadIconFromApp(LPCWSTR pszFileName, CPngImage ** ppImage)&lt;br /&gt;{&lt;br /&gt;    HRESULT hr = S_OK;&lt;br /&gt;    HMODULE hExe;        // handle to existing .EXE file &lt;br /&gt;    BOOL bRet;&lt;br /&gt;    &lt;br /&gt;    // Load the .EXE file that contains an icon. &lt;br /&gt;    hExe = LoadLibraryEx(pszFileName, NULL, LOAD_LIBRARY_AS_DATAFILE); &lt;br /&gt;    if (hExe == NULL) &lt;br /&gt;    { &lt;br /&gt;        hr = HRESULT_FROM_WIN32(GetLastError());&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    } &lt;br /&gt;&lt;br /&gt;    bRet = EnumResourceNames(hExe, RT_GROUP_ICON, EnumIconProcInit, (LONG_PTR)(void*)this);&lt;br /&gt;&lt;br /&gt;    if(!m_pImage)&lt;br /&gt;    {&lt;br /&gt;        if(!bRet)&lt;br /&gt;        {&lt;br /&gt;        &lt;br /&gt;            hr = HRESULT_FROM_WIN32(GetLastError());&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            hr = E_FAIL;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    *ppImage = m_pImage;&lt;br /&gt;    m_pImage = NULL;&lt;br /&gt;    &lt;br /&gt;Cleanup:&lt;br /&gt;&lt;br /&gt;    // Clean up.&lt;br /&gt;    if(hExe)&lt;br /&gt;    {&lt;br /&gt;        FreeLibrary(hExe); &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if(m_pImage)&lt;br /&gt;    {&lt;br /&gt;        delete m_pImage;&lt;br /&gt;        m_pImage = NULL;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    return hr;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;BOOL CALLBACK CIconExtractor::EnumIconProcInit(      &lt;br /&gt;    HMODULE hModule,&lt;br /&gt;    LPCTSTR lpszType,&lt;br /&gt;    LPTSTR lpszName,&lt;br /&gt;    LONG_PTR lParam)&lt;br /&gt;{&lt;br /&gt;    CIconExtractor * pThis = (CIconExtractor*)lParam;&lt;br /&gt;    return pThis-&gt;EnumIconProc(hModule, lpszType, lpszName);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;BOOL CIconExtractor::EnumIconProc(      &lt;br /&gt;    HMODULE hModule,&lt;br /&gt;    LPCTSTR lpszType,&lt;br /&gt;    LPTSTR lpszName)&lt;br /&gt;{&lt;br /&gt;    HRESULT hr = S_OK;&lt;br /&gt;    CAtlArray&lt;BYTE&gt; arResGroup;&lt;br /&gt;    &lt;br /&gt;    IFC(GetResourceBytes(hModule, lpszType, lpszName, arResGroup));&lt;br /&gt;&lt;br /&gt;    IFC(LoadIconFromGroup(hModule, arResGroup));&lt;br /&gt;&lt;br /&gt;Cleanup:&lt;br /&gt;&lt;br /&gt;    SetLastError(NO_ERROR);&lt;br /&gt;    &lt;br /&gt;    return FALSE;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;HRESULT CIconExtractor::GetResourceBytes(HMODULE hModule, LPCTSTR lpszType, LPTSTR lpszName, CAtlArray&lt;BYTE&gt; &amp; arRes)&lt;br /&gt;{&lt;br /&gt;    HRESULT hr = S_OK;&lt;br /&gt;    HGLOBAL hResLoad;     // handle to loaded resource &lt;br /&gt;    HRSRC hRes;         // handle/ptr. to res. info. in hExe &lt;br /&gt;    HANDLE hUpdateRes;  // update resource handle &lt;br /&gt;    void *pbRes;    // pointer to resource data &lt;br /&gt;    DWORD cbRes;&lt;br /&gt;&lt;br /&gt;    // Locate the icon resource in the .EXE file. &lt;br /&gt;    hRes = FindResource(hModule, lpszName, lpszType); &lt;br /&gt;    if (hRes == NULL) &lt;br /&gt;    { &lt;br /&gt;        hr = HRESULT_FROM_WIN32(GetLastError());&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    } &lt;br /&gt;     &lt;br /&gt;    // Load the icon&lt;br /&gt;    hResLoad = LoadResource(hModule, hRes); &lt;br /&gt;    if (hResLoad == NULL) &lt;br /&gt;    { &lt;br /&gt;        hr = HRESULT_FROM_WIN32(GetLastError());&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    } &lt;br /&gt;&lt;br /&gt;    cbRes = SizeofResource(hModule, hRes);&lt;br /&gt;&lt;br /&gt;    // Lock the dialog box into global memory. &lt;br /&gt;    pbRes = LockResource(hResLoad); &lt;br /&gt;    if (pbRes == NULL) &lt;br /&gt;    { &lt;br /&gt;        hr = HRESULT_FROM_WIN32(GetLastError());&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    } &lt;br /&gt;&lt;br /&gt;    arRes.SetCount(cbRes);&lt;br /&gt;    CopyMemory(arRes.GetData(), pbRes, cbRes);&lt;br /&gt;&lt;br /&gt;Cleanup:&lt;br /&gt;&lt;br /&gt;    return hr;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// descriptor for the icon group&lt;br /&gt;#pragma pack( push )&lt;br /&gt;#pragma pack( 2 )&lt;br /&gt;&lt;br /&gt;typedef struct&lt;br /&gt;{&lt;br /&gt;   BYTE   bWidth;               // Width, in pixels, of the image&lt;br /&gt;   BYTE   bHeight;              // Height, in pixels, of the image&lt;br /&gt;   BYTE   bColorCount;          // Number of colors in image (0 if &gt;=8bpp)&lt;br /&gt;   BYTE   bReserved;            // Reserved&lt;br /&gt;   WORD   wPlanes;              // Color Planes&lt;br /&gt;   WORD   wBitCount;            // Bits per pixel&lt;br /&gt;   DWORD   dwBytesInRes;         // how many bytes in this resource?&lt;br /&gt;   WORD   nID;                  // the ID&lt;br /&gt;} GRPICONDIRENTRY, *LPGRPICONDIRENTRY;&lt;br /&gt;&lt;br /&gt;typedef struct &lt;br /&gt;{&lt;br /&gt;   WORD            idReserved;   // Reserved (must be 0)&lt;br /&gt;   WORD            idType;       // Resource type (1 for icons)&lt;br /&gt;   WORD            idCount;      // How many images?&lt;br /&gt;   GRPICONDIRENTRY   idEntries[1]; // The entries for each image&lt;br /&gt;} GRPICONDIR, *LPGRPICONDIR;&lt;br /&gt;&lt;br /&gt;typedef struct&lt;br /&gt;{&lt;br /&gt;   BYTE   bWidth;               // Width, in pixels, of the image&lt;br /&gt;   BYTE   bHeight;              // Height, in pixels, of the image&lt;br /&gt;   BYTE   bColorCount;          // Number of colors in image (0 if &gt;=8bpp)&lt;br /&gt;   BYTE   bReserved;            // Reserved&lt;br /&gt;   WORD   wPlanes;              // Color Planes&lt;br /&gt;   WORD   wBitCount;            // Bits per pixel&lt;br /&gt;   DWORD   dwBytesInRes;         // how many bytes in this resource?&lt;br /&gt;   DWORD dwBytesOffset;                  // the ID&lt;br /&gt;} ICONHEADER, *LPICONHEADER;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#pragma pack( pop )&lt;br /&gt;&lt;br /&gt;HRESULT CIconExtractor::LoadIconFromGroup(HMODULE hModule, CAtlArray&lt;BYTE&gt; &amp; arRes)&lt;br /&gt;{&lt;br /&gt;    HRESULT hr = S_OK;&lt;br /&gt;    GRPICONDIR * pDir;&lt;br /&gt;    WORD i;&lt;br /&gt;    GRPICONDIRENTRY  * pCur = NULL;&lt;br /&gt;    GRPICONDIRENTRY  * pBest = NULL;&lt;br /&gt;    CAtlArray&lt;BYTE&gt; arIcon;&lt;br /&gt;    HICON hIcon = NULL;&lt;br /&gt;    &lt;br /&gt;    if(arRes.GetCount() &lt; sizeof(GRPICONDIR))&lt;br /&gt;    {&lt;br /&gt;        hr = E_FAIL;&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    pDir = (GRPICONDIR *)(void*)arRes.GetData();&lt;br /&gt;    if(pDir-&gt;idCount &lt; 1 || arRes.GetCount() &lt; sizeof(GRPICONDIR) + (pDir-&gt;idCount - 1) * sizeof(GRPICONDIRENTRY))&lt;br /&gt;    {&lt;br /&gt;        hr = E_FAIL;&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //&lt;br /&gt;    // find best icon&lt;br /&gt;    //&lt;br /&gt;    pCur = pBest = &amp;pDir-&gt;idEntries[0];&lt;br /&gt;    for(i = 0; i &lt; pDir-&gt;idCount; i++)&lt;br /&gt;    {&lt;br /&gt;        pCur = &amp;pDir-&gt;idEntries[i];&lt;br /&gt;        &lt;br /&gt;        if(pCur-&gt;wBitCount &gt; pBest-&gt;wBitCount)&lt;br /&gt;        {&lt;br /&gt;            pBest = pCur;&lt;br /&gt;        }&lt;br /&gt;        else if(pCur-&gt;bWidth &gt; pBest-&gt;bWidth)&lt;br /&gt;        {&lt;br /&gt;            pBest = pCur;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //&lt;br /&gt;    // load best icon&lt;br /&gt;    //&lt;br /&gt;    IFC(GetResourceBytes(hModule, RT_ICON, MAKEINTRESOURCE(pBest-&gt;nID), arIcon));&lt;br /&gt;&lt;br /&gt;    hIcon = CreateIconFromResource(arIcon.GetData(), arIcon.GetCount(), TRUE, 0x00030000);        &lt;br /&gt;    if(!hIcon)&lt;br /&gt;    {&lt;br /&gt;        hr = HRESULT_FROM_WIN32(GetLastError());&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    {&lt;br /&gt;        CMyImage WndImage;&lt;br /&gt;&lt;br /&gt;        if(pBest-&gt;wBitCount == 0x20)&lt;br /&gt;        {&lt;br /&gt;            CMyIcon::Load(arIcon.GetData(), arIcon.GetCount(), WndImage);&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            CIconToImageConverter cnv;&lt;br /&gt;            &lt;br /&gt;            IFC(cnv.GetImage(hIcon, WndImage));&lt;br /&gt;&lt;br /&gt;            goto Cleanup;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        m_pImage = new CPngImage;&lt;br /&gt;        if(m_pImage == NULL)&lt;br /&gt;        {&lt;br /&gt;            goto Cleanup;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        m_pImage-&gt;Encode(WndImage);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;Cleanup:&lt;br /&gt;&lt;br /&gt;    if(hIcon)&lt;br /&gt;    {&lt;br /&gt;        DestroyIcon(hIcon);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    return hr;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-4656372967222090574?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/4656372967222090574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=4656372967222090574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/4656372967222090574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/4656372967222090574'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/03/extract-icon-from-exe.html' title='extract icon from exe'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-574763324099350892</id><published>2008-03-23T18:33:00.000-07:00</published><updated>2008-03-23T18:34:08.804-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>find location of installed application by app name</title><content type='html'>HRESULT hr = S_OK;&lt;br /&gt;    CComPtr&lt;CProgramDocklet&gt; spDocklet;&lt;br /&gt;    CRegKey rkAppPaths;&lt;br /&gt;    CRegKey rkApp;&lt;br /&gt;    WCHAR szPath[MAX_PATH];&lt;br /&gt;    ULONG cchPath;&lt;br /&gt;    CAtlString szAppPath;&lt;br /&gt;    LONG lRes;&lt;br /&gt;&lt;br /&gt;    lRes = rkAppPaths.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths", KEY_READ);&lt;br /&gt;    if(lRes != ERROR_SUCCESS)&lt;br /&gt;    {&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    lRes = rkApp.Open(rkAppPaths, pszApp);&lt;br /&gt;    if(lRes != ERROR_SUCCESS)&lt;br /&gt;    {&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    cchPath = sizeof(szPath) / sizeof(WCHAR);&lt;br /&gt;    lRes = rkApp.QueryStringValue(L"Path", szPath, &amp;cchPath);&lt;br /&gt;    if(lRes != ERROR_SUCCESS)&lt;br /&gt;    {&lt;br /&gt;        goto Cleanup;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    szAppPath.Format(L"%s%s", szPath, pszApp);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-574763324099350892?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/574763324099350892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=574763324099350892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/574763324099350892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/574763324099350892'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/03/find-location-of-installed-application.html' title='find location of installed application by app name'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5913647781749476931.post-8425419330980350218</id><published>2008-03-18T11:05:00.001-07:00</published><updated>2008-03-18T11:05:45.759-07:00</updated><title type='text'>Test</title><content type='html'>FooBar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5913647781749476931-8425419330980350218?l=ezhnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ezhnotes.blogspot.com/feeds/8425419330980350218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5913647781749476931&amp;postID=8425419330980350218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8425419330980350218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5913647781749476931/posts/default/8425419330980350218'/><link rel='alternate' type='text/html' href='http://ezhnotes.blogspot.com/2008/03/test.html' title='Test'/><author><name>AlexEzh</name><uri>http://www.blogger.com/profile/06592696265509440071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://bp0.blogger.com/_tNjbLQ5zRCY/R_O0QzD4KhI/AAAAAAAABSU/iNvUPAYbMzk/S220/040807-7190.jpg'/></author><thr:total>0</thr:total></entry></feed>
