<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>Ex nihilo nihil fit &#187; Beginner</title> <atom:link href="http://victorhurdugaci.com/category/tutorial/tut-beginner/feed/" rel="self" type="application/rss+xml" /><link>http://victorhurdugaci.com</link> <description>Victor Hurdugaci&#039;s playground</description> <lastBuildDate>Tue, 29 Nov 2011 07:38:40 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <item><title>Fancy windows previewer</title><link>http://victorhurdugaci.com/fancy-windows-previewer/</link> <comments>http://victorhurdugaci.com/fancy-windows-previewer/#comments</comments> <pubDate>Wed, 05 May 2010 09:45:55 +0000</pubDate> <dc:creator>Victor</dc:creator> <category><![CDATA[Beginner]]></category> <category><![CDATA[Intermediate]]></category> <category><![CDATA[Tutorial]]></category> <category><![CDATA[C#]]></category> <category><![CDATA[DWM]]></category> <category><![CDATA[Win32]]></category> <guid
isPermaLink="false">http://victorhurdugaci.com/?p=1961</guid> <description><![CDATA[Tutorial description Objective Create a fancy-looking application that displays the preview of the open applications. Covered topics Enumerating windows and getting various information about them Creating the Aero glass effect Using the DWM windows preview feature Requirements Windows Vista/7 with the Aero theme active Visual Studio 2010 (or 2008 but requires some changes in code [...]]]></description> <content:encoded><![CDATA[<table
cellspacing="0" border="1" class="tutorial-description"><tr><th
colspan="2">Tutorial description</th></tr><tr><td
class="header-column">Objective</td><td><p>Create a fancy-looking application that displays the preview of the open applications.</p><p
style="text-align: center"><a
href="http://victorhurdugaci.com/wp-content/uploads/2010/05/finalresult.jpg"><img
src="http://victorhurdugaci.com/wp-content/uploads/2010/05/finalresult.jpg" alt="" title="finalresult" width="550" height="242" class="alignnone size-full wp-image-1982" /></a></p></td></tr><tr><td
class="header-column">Covered topics</td><td><ul><li>Enumerating windows and getting various information about them</li><li>Creating the Aero glass effect</li><li>Using the DWM windows preview feature</li></ul></td></tr><tr><td
class="header-column">Requirements</td><td><ul><li>Windows Vista/7 with the Aero theme active</li><li>Visual Studio 2010 (or 2008 but requires some changes in code which are not covered by this tutorial)</li></ul></td></tr><tr><td
class="header-column">Target audience</td><td>Intermediate users</td></tr><tr><td
class="header-column">Download</td><td><a
href="http://victorhurdugaci.com/download/taskswitcher.zip"><img
src="http://victorhurdugaci.com/img/download-icon.jpg" alt="Download Icon" width="24" height="24" />TaskSwitcher (13.07 KB)</a></td></tr></table><p
style="text-align: justify">The basic idea behind this application is the following: upon start, we create snapshot (a list) of all the available windows and we use it to decide what previews to display. Once the list is created, a preview is drawn for each item. There is a drawback for this approach: if new windows are created or some existing are closed the interface will not display them (actually for closed windows will replace the preview with an icon). The advantage: is a simple implementation.</p><p
style="text-align: justify">There are three parts for this project.</p><ol><li>Enumerating only the open applications&#8217; windows</li><li>Make a glass window</li><li>Generate a live preview for each window</li></ol><h2>Enumerating windows</h2><p
style="text-align: justify">Enumerating all windows can be done with the <em>EnumWindows</em> function from <em>user32.dll</em> which can be easily imported in C#.</p><pre class="brush: csharp; title: ; toolbar: false; notranslate">
[DllImport(&quot;user32.dll&quot;)]
private static extern int EnumWindows(EnumWindowsCallbackDelegate callback, int lParam = 0);
private delegate bool EnumWindowsCallbackDelegate(IntPtr hWnd, int lParam);
</pre><p
style="text-align: justify">However, the result of a pure enumeration will return hundreds of windows. The most powerful filtration is to keep just the windows that are visible. Again, a function from <em>user32.dll</em> called <em>IsWindowVisible</em> is used to check whether a hWnd belongs to a visible window. Probably, after this step you will have just 30-40 windows left in the list.</p><pre class="brush: csharp; title: ; toolbar: false; notranslate">
[DllImport(&quot;user32.dll&quot;)]
private static extern bool IsWindowVisible(IntPtr hWnd);
</pre><p
style="text-align: justify">The next step is to decide which is the most meaningful representative window from each cluster of windows related by ownership. The Old New Thing blog presents <a
href="http://blogs.msdn.com/oldnewthing/archive/2007/10/08/5351207.aspx" target="blank">an algorithm</a> for this problem. The logic behind this algorithm is: &#8220;For each visible window, walk up its owner chain until you find the root owner. Then walk back down the visible last active popup chain until you find a visible window. If you&#8217;re back to where you&#8217;re started, then put the window in the Alt+Tab list.&#8221; A few Dll imports and the translation of the pseudocode to C# gives the following code.</p><p><span
id="more-1961"></span></p><pre class="brush: csharp; title: ; notranslate">
private static bool IsWindowChainVisible(IntPtr hWnd)
{
    // Start at the root owner
    IntPtr hwndWalk = GetAncestor(hWnd);
    // Basically we try get from the parent back to that window
    IntPtr hwndTry;
    while ((hwndTry = GetLastActivePopup(hwndWalk)) != hwndTry)
    {
        if (IsWindowVisible(hwndTry)) break;
        hwndWalk = hwndTry;
    }
    return (hwndWalk == hWnd);
}
</pre><p
style="text-align: justify">At this point you probably filtered most windows. However, there are still a few that refuse to be filtered out:</p><ol><li>The desktop window</li><li>Our application window</li><li>The taskbar</li></ol><h3>Removing the desktop window</h3><p
style="text-align: justify">Depending on what you want to do, you may decide to keep this window. The task switcher in Windows 7 provides also the preview for the desktop. However, if you decide to to remove it, you have the check each handle against the desktop handle (which can be obtained using the <em>GetShellWindow</em> from <em>user32.dll</em>).</p><pre class="brush: csharp; title: ; toolbar: false; notranslate">
[DllImport(&quot;user32.dll&quot;)]
private static extern IntPtr GetShellWindow();
</pre><h3>Removing our application window</h3><p
style="text-align: justify">One naive approach would be to ignore the windows with a specific title. This is bad because many windows can have the same title. The correct approach is to filter based on the window handle. I created a list of ignored handled and, after the main window was created, I added its handle in this list. Because WPF is used, the handle of a window can be obtained using <a
href="http://msdn.microsoft.com/en-us/library/system.windows.interop.windowinterophelper.aspx" target="blank">WindowInteropHelper</a> class.</p><h3>Removing the taskbar</h3><p
style="text-align: justify">This was tricky and I&#8217;m still not sure is the correct approach. There is one window in the list that is not filtered by the previous filters. Even more, is not visible with Spy++ (!!!) and it&#8217;s preview is the taskbar. The only solution I found and seems to remove just that window, is to filter out all windows that don&#8217;t have the <em>WS_EX_APPWINDOW</em> style. If you find any window that is not displayed because of this, let me know.</p><p
style="text-align: justify">Finally, the method that decides which window goes into the snapshot is presented below:</p><pre class="brush: csharp; title: ; notranslate">
//This function will be called for each available window
private bool EnumWindowsCallback(IntPtr hWnd, int lParam)
{
    bool IsDesktopWindow = (hWnd == GetShellWindow());
    bool IsVisible = IsWindowVisible(hWnd);
    bool IsChainVisible = IsWindowChainVisible(hWnd);
    bool IsInIgnoreList = (WindowHandlesToIgnore.Contains(hWnd));
    //Filters the taskbar
    bool IsApplicationWindow = ((GetWindowLong(hWnd) &amp; WS_EX_APPWINDOW) == WS_EX_APPWINDOW);
    if (!IsDesktopWindow &amp;&amp; IsVisible &amp;&amp; IsChainVisible &amp;&amp; !IsInIgnoreList &amp;&amp; IsApplicationWindow)
    {
        windowsSnapshot.Add(new WindowInfo(hWnd));
    }
    return true;
}
</pre><p
style="text-align: justify">Once we have a snapshot of the visible windows we plan to display them. As seen in the objective screenshot, the main window is transparent and has a glass effect.</p><h2>The glass window</h2><p
style="text-align: justify">It is very important to understand that the glass effect is available only on Windows Vista and 7 and works as long as you have the Aero theme enabled!</p><p
style="text-align: justify">The glass effect functions are part of the <a
href="http://msdn.microsoft.com/en-us/library/aa969540%28VS.85%29.aspx" target="blank">Desktop Window Manager API</a> represented by the library <em>dwmapi.dll</em>. All the functions were imported from that DLL.</p><p
style="text-align: justify">In order to make (a part of) a window transparent you need to:</p><ol><li>Make the windows background transparent (paint it with a transparent brush)</li><li>Call the <em>DwmExtendFrameIntoClientArea</em> function specifying the window handle and the inner region of the window that will have the glass effect (you specify the margins from the inner border). If you want the whole window to be transparent specify a negative (-1) margin for all sides.</li></ol><pre class="brush: csharp; title: ; notranslate">
private void MakeGlassEffect()
{
    if (DwmIsCompositionEnabled())
    {
        IntPtr mainWindowPtr = new WindowInteropHelper(this).Handle;
        HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowHandle);
        mainWindowSrc.CompositionTarget.BackgroundColor = Colors.Transparent;
        this.Background = Brushes.Transparent;
        MARGINS margins = new MARGINS();
        margins.ExtendToWholeClientArea(); //Sets all values to -1
        int result = DwmExtendFrameIntoClientArea(mainWindowSrc.Handle, ref margins);
        if (result &lt; 0)
        {
            MessageBox.Show(&quot;An error occured while extending the glass unit.&quot;);
            Application.Current.Shutdown();
        }
    }
}
</pre><h2>Live windows preview</h2><p
style="text-align: justify">As  you might already know, when you press Alt+Tab in Windows Vista/7 (and Aero is active!) you see a live preview of the running applications. In the past, the only method of generating a preview for a window was to copy whatever was visible from it to a bitmap. This approach works as long as the windows is completely visible (no other window is on top, the windows is not out of the screen and the window is not minimized). Trying to save a screenshot with this method will fail, unless you take every window, restore it&#8217;s state, bring it to front, take a screenshot and move it back &#8211; by the way, this action takes too much time and is messy.</p><p
style="text-align: justify">In <em>dwmapi.dll</em> we have a set of functions that will generate thumbnails for any opened window. The interesting part is that the preview is not static! It will modify as the window changes. The function <em>DwmRegisterThumbnail</em> defines a region on which the Desktop Window Manager is allowed to draw the preview for a specific window. So, instead of you drawing the picture, you just specify a region and the DWM will do it for you. One important aspect is that DWM will draw the preview as the top layer &#8211; everything on the window will be behind the preview. There are some parameters that you can specify for how the drawing is made (transparency, visibility, etc.) but these are out of the scope of this tutorial.</p><p
style="text-align: justify">To &#8216;translate&#8217; the drawing into code we are first going to check if the window has already registered a preview (if so, unregister it), the register a new preview, set the region of the drawing and center the image and finally draw (update) the preview &#8211; which will continue to be updated until is unregistered.</p><pre class="brush: csharp; title: ; notranslate">
private void DrawThumbnail(WindowInfo win, int thumbnailIndex)
{
    IntPtr thumbnail = win.Thumbnail;
    if (thumbnail != IntPtr.Zero)
        DwmUnregisterThumbnail(thumbnail);
    int hResult = DwmRegisterThumbnail(mainWindowHandle, win.HWnd, out thumbnail);
    if (hResult == 0)
    {
        PSIZE size;
        DwmQueryThumbnailSourceSize(thumbnail, out size);
        DWM_THUMBNAIL_PROPERTIES props = new DWM_THUMBNAIL_PROPERTIES();
        props.dwFlags = DWM_TNP_VISIBLE | DWM_TNP_RECTDESTINATION | DWM_TNP_SOURCECLIENTAREAONLY;
        props.fVisible = true;
        props.fSourceClientAreaOnly = true;
        //Set the region where the live preview will be drawn
        int left = (thumbnailIndex % MaxThumbnails) * (ThumbnailSize + ThumbnailSpacing);
        int top = (int)(thumbnailIndex / MaxThumbnails) * (ThumbnailSize + ThumbnailSpacing) + WindowTopOffset;
        int right = left + ThumbnailSize;
        int bottom = top + ThumbnailSize;
        props.rcDestination = new RECT(left, top, right, bottom);
        //Center the live preview
        if (size.x &lt; size.y)
        {
            double ScaleFactor = ThumbnailSize / (double)size.y;
            int scaledX = (int)(size.x * ScaleFactor);
            int xOffset = (ThumbnailSize - scaledX) / 2;
            props.rcDestination.Left += xOffset;
            props.rcDestination.Right -= xOffset;
        }
        if (size.y &lt; size.x)
        {
            double ScaleFactor = ThumbnailSize / (double)size.x;
            int scaledY = (int)(size.y * ScaleFactor);
            int yOffset = (ThumbnailSize - scaledY) / 2;
            props.rcDestination.Top += yOffset;
            props.rcDestination.Bottom -= yOffset;
        }
        DwmUpdateThumbnailProperties(thumbnail, ref props);
    }
}
</pre><p
style="text-align: justify">For each available window we are going to choose a region in which its preview can be displayed. Basically, the preview region is a grid (filled from left to right, top to bottom) where each cell is a preview.</p><h2>Known Issues</h2><p
style="text-align: justify">The application offered as download is not perfect and has a series of inconveniences. They are not big problems but I couldn&#8217;t find the time to fix them.</p><ul><li>If the list of available windows is modified, the update is not reflected in the application.</li><li>Previews are no longer centered if you change the size of the window they represent.</li><li>There should be a &#8220;glow&#8221; effect behind the text on glass in order to be visible on any surface. Just like in the Alt-Tab window.</li><li>If clicking an application in the preview list, the focus is not transferred to it.</li></ul> ]]></content:encoded> <wfw:commentRss>http://victorhurdugaci.com/fancy-windows-previewer/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Tip #3: Shared OneNote notebooks with Live Mesh</title><link>http://victorhurdugaci.com/tip-3-shared-onenote-notebooks-with-live-mesh/</link> <comments>http://victorhurdugaci.com/tip-3-shared-onenote-notebooks-with-live-mesh/#comments</comments> <pubDate>Tue, 04 Aug 2009 12:06:47 +0000</pubDate> <dc:creator>Victor</dc:creator> <category><![CDATA[Beginner]]></category> <category><![CDATA[Microsoft]]></category> <category><![CDATA[Tips]]></category> <category><![CDATA[Tutorial]]></category> <category><![CDATA[Live Mesh]]></category> <category><![CDATA[OneNote]]></category> <category><![CDATA[Sync]]></category> <guid
isPermaLink="false">http://victorhurdugaci.com/?p=1292</guid> <description><![CDATA[OneNote allows users to create shared notebooks by using a shared folder or a SharePoint repository. When two persons who want to share a notebook are in different countries then a shared folder is not a too feasible solution. A SharePoint repository can be created for free on Office Small Business but you have only [...]]]></description> <content:encoded><![CDATA[<p
style="text-align: justify;">OneNote allows users to create shared notebooks by using a shared folder or a SharePoint repository. When two persons who want to share a notebook are in different countries then a shared folder is not a too feasible solution. A SharePoint repository can be created for free on Office Small Business but you have only 50 MB for storage and you need at least basic SharePoint knowledge.</p><p
style="text-align: justify;">As you might already know, Live Mesh allows one to sync files across multiple computers. A big advantage is the Live Desktop -  a 5000 MB online storage location that can be used for storage. When computers involved in the sync are not simultaneously online, the files are synced with the Live Desktop and, when the computers are back online, the files will be synced.</p><p
style="text-align: justify;">The sharing with Live Mesh works like this: add notebooks&#8217; files on Mesh and they can sync across computers. When a notebook is updated, if you are online the change will be sent/received to/from the Live Desktop.</p><p
style="text-align: justify;"><span
id="more-1292"></span></p><p
style="text-align: justify;">Advantages of this method:<a
href="http://victorhurdugaci.com/wp-content/uploads/2009/08/AddToLiveMesh.jpg"><img
class="alignright size-medium wp-image-1294" title="AddToLiveMesh" src="http://victorhurdugaci.com/wp-content/uploads/2009/08/AddToLiveMesh-281x300.jpg" alt="AddToLiveMesh" width="281" height="300" /></a></p><ul
style="text-align: justify;"><li>No SharePoint knowledge are necessarily.</li><li>Works on Windows Mobile because Live Mesh has a mobile version.</li><li>Instant sync if you are online.</li><li>More storage space.</li><li>Full control over permissions directly from Explorer.</li><li
style="text-align: justify;">No user interaction for sync.</li><li
style="text-align: justify;">Files are kept offline and can be accessed even with no Internet connection.</li><li
style="text-align: justify;">You can store notebooks wherever you want.</li></ul><p
style="text-align: justify;">Disadvantages:</p><ul
style="text-align: justify;"><li>Need to install Live Mesh (requires administrative rights).</li><li>You can set sharing permissions only on the top folder (depending on how you sync you can share also individual notebooks).</li><li>Live Mesh has many other functionalities that you might not need if you only want to sync notebooks.</li><li>While online you cannot control when to sync.</li><li>All persons involved must have Live Mesh installed.</li></ul><p
style="text-align: justify;">To put your notebooks on Mesh (assuming that you have OneNote installed):</p><ol
style="text-align: justify;"><li>Register for Mesh.</li><li>Install the mesh client by adding your PC to the mesh.</li><li>Select the folder(s) that contain(s):<ol><li>All your notebooks if you want to just backup or share all notebooks.</li><li>Individual notebooks if you want to be able to share selected notebooks.</li></ol></li><li>Right click it/them select &#8220;Add folder to Live Mesh&#8221; (see the image on right). The folder is added to the Live Desktop and you can check it by opening the mesh in a browser.</li><li>That&#8217;s it. The folder is also online and you can share it with whoever you want.</li></ol><p><a
href="http://victorhurdugaci.com/wp-content/uploads/2009/08/Invite.jpg"><img
class="size-medium wp-image-1298 alignright" title="Invite" src="http://victorhurdugaci.com/wp-content/uploads/2009/08/Invite-300x170.jpg" alt="Invite" width="300" height="170" /></a>To share notebooks:</p><ol><li>Select on your local disk a folder that is shared with Mesh.</li><li>In the right sidebar select &#8220;Members&#8221;</li><li>Click &#8220;Invite&#8221;.</li><li>Enter the e-mail addresses of the ones you want to share with and choose their permission level (Owner = full control; Contributor = can read/write but cannot perform special tasks; reader = can get files from Mesh but their updates are not synced).</li><li>Click OK.</li></ol><p
style="text-align: center"><a
href="http://victorhurdugaci.com/wp-content/uploads/2009/08/Permission.jpg"><img
class="aligncenter size-medium wp-image-1299" title="Permission" src="http://victorhurdugaci.com/wp-content/uploads/2009/08/Permission-300x173.jpg" alt="Permission" width="300" height="173" /></a></p><p
style="text-align: justify;">Even if you are the only user of a notebook you can use the Live Desktop for backup &#8211; this is how I use it.</p> ]]></content:encoded> <wfw:commentRss>http://victorhurdugaci.com/tip-3-shared-onenote-notebooks-with-live-mesh/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Tip #1: Backup Outlook 2007 Accounts&#8217; Information</title><link>http://victorhurdugaci.com/tip-1-backup-outlook-2007-accounts-information/</link> <comments>http://victorhurdugaci.com/tip-1-backup-outlook-2007-accounts-information/#comments</comments> <pubDate>Mon, 20 Jul 2009 17:47:28 +0000</pubDate> <dc:creator>Victor</dc:creator> <category><![CDATA[Beginner]]></category> <category><![CDATA[Tips]]></category> <category><![CDATA[Tutorial]]></category> <category><![CDATA[Backup]]></category> <category><![CDATA[Export]]></category> <category><![CDATA[Outlook]]></category> <guid
isPermaLink="false">http://victorhurdugaci.com/?p=1235</guid> <description><![CDATA[This is a series of different tips and tricks for computer users. It will include: software usage tip, hacks, development tips, hardware tips, etc. I will try to post tips every day but I don&#8217;t know if my schedule will allow me. &#8212; When you need to reinstall Windows and/or Outlook you might backup the [...]]]></description> <content:encoded><![CDATA[<p
style="text-align: justify;">This is a series of different tips and tricks for computer users. It will include: software usage tip, hacks, development tips, hardware tips, etc.</p><p
style="text-align: justify;">I will try to post tips every day but I don&#8217;t know if my schedule will allow me.</p><p
style="text-align: justify;">&#8212;</p><p
style="text-align: justify;">When you need to reinstall Windows and/or Outlook you might backup the .pst files (Outlook data files). Unfortunately these files do not contain account information. After reinstall and restore of backup files you need to reenter all information about each account which is a boring process &#8211; at least for me because I have 5 e-mail accounts.</p><p
style="text-align: justify;">If you want to backup accounts information you have to export the<em> &#8220;HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook&#8221; </em>key from Registry.</p><p
style="text-align: justify;"><strong>Export accounts&#8217; information:</strong></p><ol
style="text-align: justify;"><li><strong><a
href="http://victorhurdugaci.com/wp-content/uploads/2009/07/Tip_01_01.jpg"><img
class="size-medium wp-image-1239 alignright" title="Tip_01_01" src="http://victorhurdugaci.com/wp-content/uploads/2009/07/Tip_01_01-300x185.jpg" alt="Tip_01_01" width="219" height="135" /></a></strong>Start the Registry Editor (Start -&gt; Run -&gt; &#8220;regedit&#8221;) &#8211; in Windows Vista/7 you need administrative rights to start it.</li><li>Navigate to the previously mentioned branch (HKEY_CURRENT_USER\Software\ &#8230; ).</li><li>Right click the &#8220;Outlook&#8221; tree node.</li><li>Choose export.</li><li>Name the file accordingly.</li><li>Click &#8220;Save&#8221;</li></ol><p
style="text-align: justify;">After reinstalling Outlook, you have to import the accounts. Follow the steps below for this:</p><p
style="text-align: justify;"><strong>Import accounts&#8217; information:</strong></p><ol
style="text-align: justify;"><li>Double click the exported file.</li><li>Choose &#8220;Yes&#8221; when asked if you really want to import.</li></ol> ]]></content:encoded> <wfw:commentRss>http://victorhurdugaci.com/tip-1-backup-outlook-2007-accounts-information/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Windows Mobile &#8220;Storage Card2&#8243; Problem</title><link>http://victorhurdugaci.com/windows-mobile-storage-card2-problem/</link> <comments>http://victorhurdugaci.com/windows-mobile-storage-card2-problem/#comments</comments> <pubDate>Sat, 11 Jul 2009 15:07:51 +0000</pubDate> <dc:creator>Victor</dc:creator> <category><![CDATA[Beginner]]></category> <category><![CDATA[Mobile]]></category> <category><![CDATA[Fix]]></category> <category><![CDATA[Storage Card 2]]></category> <category><![CDATA[Windows Mobile]]></category> <guid
isPermaLink="false">http://victorhurdugaci.com/?p=1159</guid> <description><![CDATA[If you have an Windows Mobile phone or PDA you might have had this problem. Sometimes the &#8220;\Storage Card&#8221; folder gets renamed to &#8220;\Storage Card2&#8243;. What are the consequences of this? Each file reference to the &#8220;\Storage Card&#8221; will not work; this includes the shortcuts from the start menu to applications installed on the SD [...]]]></description> <content:encoded><![CDATA[<p
style="text-align: justify;">If you have an Windows Mobile phone or PDA you might have had this problem. Sometimes the &#8220;\Storage Card&#8221; folder gets renamed to &#8220;\Storage Card2&#8243;. What are the consequences of this? Each file reference to the &#8220;\Storage Card&#8221; will not work; this includes the shortcuts from the start menu to applications installed on the SD card.</p><p
style="text-align: justify;">The big problem is that if you don&#8217;t notice the folder rename and soft reset the device it will create an empty &#8220;\Storage Card&#8221; folder that will be used as the storage card. However the old &#8220;\Storage Card2&#8243; will still be there and you will not be able to delete the new &#8220;\Storage Card&#8221;. Also, applications from &#8220;\Storage Card2&#8243; will not be launched from shortcuts.</p><p
style="text-align: justify;">After many ROMs updates I am not able to fix completely this problem but I figured out how to fix it without hard resetting the device. The new &#8220;\Storage Card&#8221; folder <strong>cannot be deleted</strong> but&#8230; it <strong>can be renamed. </strong>So all you have to do is to rename &#8220;\Storage Card&#8221; to something else like &#8220;\Storage Card3&#8243; and reset the device. After this, &#8220;\Storage Card2&#8243; will become &#8220;\Storage Card&#8221; and you are free to delete &#8220;\Storage Card3&#8243;.</p> ]]></content:encoded> <wfw:commentRss>http://victorhurdugaci.com/windows-mobile-storage-card2-problem/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
