<?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>Aimee Gurl... &#187; Windows7</title>
	<atom:link href="http://aimeegurl.com/tag/windows7/feed/" rel="self" type="application/rss+xml" />
	<link>http://aimeegurl.com</link>
	<description>for as long as i can remember, technology has always fascinated me</description>
	<lastBuildDate>Thu, 29 Jul 2010 03:28:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Making Your Win7 JumpLists Trigger on the Same Application Instance</title>
		<link>http://aimeegurl.com/2009/11/13/making-your-win7-jumplists-trigger-on-the-same-application-instance/</link>
		<comments>http://aimeegurl.com/2009/11/13/making-your-win7-jumplists-trigger-on-the-same-application-instance/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 08:56:00 +0000</pubDate>
		<dc:creator>Aimee</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[techfriday]]></category>
		<category><![CDATA[Windows7]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://aimeegurl.com/2009/11/13/making-your-win7-jumplists-trigger-on-the-same-application-instance/</guid>
		<description><![CDATA[<p id="top" />
<p>As promised in my previous post, I’ll be talking about how to create jumplist integrated single instance applications, much like how Outlook, Windows Media Player. </p>
<p>At first, i thought it would need to involve a bit of windows messaging but then I found this blog post that details how to create single instance [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />
<p>As promised in <a href="http://aimeegurl.com/2009/11/06/managing-wpf-screens-with-windows-7-jumplists-and-the-visual-state-manager/">my previous post</a>, I’ll be talking about how to create jumplist integrated single instance applications, much like how Outlook, Windows Media Player. </p>
<p>At first, i thought it would need to involve a bit of windows messaging but then I found <a href="http://www.switchonthecode.com/tutorials/wpf-writing-a-single-instance-application">this blog post</a> that details how to create single instance WPF applications. I rewrote our sample from the previous post to adopt this model. I based my code on the post so I recommend reading that post first to have a better understanding of how we are creating this single instance application.</p>
<p>Explaining a bit what is going on here, we basically have 3 major classes:</p>
<p><img style="border-right-width: 0px; margin: 0px 20px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://aimeegurl.com/wp-content/uploads/2009/11/image8.png" width="333" height="425" /> </p>
<p>The <strong>SingleInstanceManager</strong>, as the name implies, manages the instances of your application. If you take a look at the code, basically it creates an instance of your application if it is an initial startup. When a next instance is triggered to start up, it activates the the MainWindow through Win7Application and processes any arguments passed in the triggering of the subsequent instances.</p>
<p><strong>Win7Application </strong>is basically our replacement for App.xaml because we want to be able to control when we activate the MainWindow of our application. We also process any arguments of our application in this class. </p>
<pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">  public void ProcessArgs(string[] args, bool isFirstInstance)
        {
            if (args.Length &gt; 0)
            {
                if (isFirstInstance)
                    AppWindow.initState = args[0];
                else
                    AppWindow.updateState(args[0]);
            }

        }</pre>
<p>If you look at the ProcessArgs method in the sample attached, we’re basically setting an initial state (initState) property to the value of the argument as this is expected from the jumplists we have defined in <a href="http://aimeegurl.com/2009/11/06/managing-wpf-screens-with-windows-7-jumplists-and-the-visual-state-manager/">my previous post</a>. If this is not the first instance, we call the updateState() method which I have exposed as a public method in the MainWindow class.&#160; </p>
<p>These are basically the changes I made to MainWindow.xaml.cs:</p>
<pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">        private void Window_Loaded(object sender, System.Windows.RoutedEventArgs e)
        {

            WindowJumpList = JumpList.CreateJumpList();
            initializeJumplist();
            if (initState != null)
                updateState(initState);

        }</pre>
<pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">        public  void updateState(string state)
        {
            ExtendedVisualStateManager.GoToElementState(LayoutRoot, state, true);

        }</pre>
<p>You can download the source here:</p>
<p><iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-bdfb7845c22e26b6.skydrive.live.com/embedicon.aspx/Projects/TechFriday/SingleInstance.zip" frameborder="0" marginwidth="0" scrolling="no"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://aimeegurl.com/2009/11/13/making-your-win7-jumplists-trigger-on-the-same-application-instance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Managing WPF Screens with Windows 7 Jumplists and the Visual State Manager</title>
		<link>http://aimeegurl.com/2009/11/06/managing-wpf-screens-with-windows-7-jumplists-and-the-visual-state-manager/</link>
		<comments>http://aimeegurl.com/2009/11/06/managing-wpf-screens-with-windows-7-jumplists-and-the-visual-state-manager/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 08:59:00 +0000</pubDate>
		<dc:creator>Aimee</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[techfriday]]></category>
		<category><![CDATA[Windows7]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://aimeegurl.com/2009/11/06/managing-wpf-screens-with-windows-7-jumplists-and-the-visual-state-manager/</guid>
		<description><![CDATA[<p id="top" />
<p>We’re having our Singapore launch of Windows 7 this November and in honor of that, I’ll be devoting my upcoming (and long overdue) TechFridays to everything Windows 7. For this post, I&#8217;ll be talking about how you can use the Visual State Manager for WPF to manage the different screen states in your [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />
<p>We’re having our Singapore launch of Windows 7 this November and in honor of that, I’ll be devoting my upcoming (and long overdue) TechFridays to everything Windows 7. For this post, I&#8217;ll be talking about how you can use the Visual State Manager for WPF to manage the different screen states in your application in conjunction with your Windows 7 Jumplists.</p>
<p>Before we start, make sure you have the following downloaded:</p>
<p>1. <a href="http://www.codeplex.com/wpf">WPF Toolkit</a> – This enables VSM support in current WPF projects</p>
<p>2. <a href="http://code.msdn.microsoft.com/WindowsAPICodePack">http://code.msdn.microsoft.com/WindowsAPICodePack</a> – provides managed wrappers that allow you to easily incorporate Windows 7 JumpLists into your application</p>
<p>* make sure you add references to the above binaries and your set to go.</p>
<p>If you’re not familiar with the Visual State Manager, you can read <a href="http://windowsclient.net/wpf/wpf35/wpf-35sp1-toolkit-visual-state-manager-overview.aspx">http://windowsclient.net/wpf/wpf35/wpf-35sp1-toolkit-visual-state-manager-overview.aspx</a> for a brief overview.</p>
<p>What I have is an application with several screens grouped into panels. I also have a visual state group “ScreenStates” where i have 3 states, one for each screen.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/11/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/11/image_thumb.png" width="800" height="600" /></a></p>
<p>This should make for easier screen management. You can make use of Blend behaviors to activate these states on the click of the corresponding navigation button / link. If you open up the Behaviors tab in the asset library, you’ll find the GoToStateAction that you can click and drag onto the appropriate control that you want to trigger the state activation.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/11/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/11/image_thumb1.png" width="673" height="281" /></a></p>
<p>In the screen below, I added the behavior to my GalleryButton. On the properties panel, you’ll see that you can set the StateName you want to activate on the trigger, in this case, the GalleryButton’s Click event.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/11/image2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/11/image_thumb2.png" width="800" height="600" /></a></p>
<p>Next we we want to enable Windows 7 Jumplists in our application. Windows 7 is all about helping users become more efficient and one of the features that enable this is the jumplist. Below is a screenshot of Outlook’s jumplists. The application basically exposes tasks that would normally take a few clicks to get to so instead of having to spend the time starting the app and clicking the appropriate menus/options, you jump straight into the screen you want.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/11/image3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/11/image_thumb3.png" width="370" height="349" /></a></p>
<p>Below is one way you can integrate jumplists into the app we are building. First, you’ll need to define and initialize a few variables we will be needing to manage the jumplist: the Jumplist itself, and the folder where the assembly is executing.</p>
<pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">        private JumpList WindowJumpList;
        string executableFolder;

	private void Window_Loaded(object sender, System.Windows.RoutedEventArgs e)
	{
			// TODO: Add event handler implementation here.
            WindowJumpList = JumpList.CreateJumpList();
            executableFolder = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

            initializeJumplist();
            string[] arguments = Environment.GetCommandLineArgs();
            if (arguments.Length &gt; 1)
            {
                ProcessArguments(arguments[1]);
            }
	}</pre>
<p>The following code then initializes the jumplist. Note that the tasks are shell links to the application executable, with the state names of our screens as the arguments. This will make it easier later on to process the arguments and activate the appropriate screen.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/11/image4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/11/image_thumb4.png" width="571" height="480" /></a> </p>
<p>The last method is the ProcessArguments method. There is a slight kink in the VisualStateManager that won’t allow you to “go to state” as you normally would unless the target is a UserControl. In this case, we had to use a work around which i found <a href="http://jack.ukleja.com/workaround-for-visualstatemanager-gotostate-not-working-on-window/">here</a></p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/11/image5.png" width="785" height="90" /></p>
<p>when you compile and run your app, you’ll see the following jumplist tasks and will be able to activate the corresponding screens straight from the jumplist.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/11/image6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/11/image_thumb5.png" width="439" height="465" /></a></p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/11/image7.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/11/image_thumb6.png" width="800" height="350" /></a></p>
<p>You can download and try out the code here:</p>
<p><iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-bdfb7845c22e26b6.skydrive.live.com/embedicon.aspx/Projects/TechFriday/JumplistScreenManagement.zip" frameborder="0" marginwidth="0" scrolling="no"></iframe></p>
<p>This version launches a new instance every time you click on a task on the jumplist. In my next post, I’ll post a sample on how to create jumplist enabled single instance WPF applications. Till next time!</p>
]]></content:encoded>
			<wfw:commentRss>http://aimeegurl.com/2009/11/06/managing-wpf-screens-with-windows-7-jumplists-and-the-visual-state-manager/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TechFriday: Jumping into Jumplists</title>
		<link>http://aimeegurl.com/2009/07/10/techfriday-jumping-into-jumplists/</link>
		<comments>http://aimeegurl.com/2009/07/10/techfriday-jumping-into-jumplists/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 17:48:35 +0000</pubDate>
		<dc:creator>Aimee</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[jumplist]]></category>
		<category><![CDATA[sample code]]></category>
		<category><![CDATA[techfriday]]></category>
		<category><![CDATA[Windows7]]></category>

		<guid isPermaLink="false">http://aimeegurl.com/2009/07/10/techfriday-jumping-into-jumplists/</guid>
		<description><![CDATA[<p id="top" />
<p>Everybody’s excited about Windows 7 and there might be a few of you guys out there wanting to take advantage of some of the new features of the OS in your applications. In this post, I’ll show you how you can quickly add Jumplist support to your existing application (Yes, even WinForms applications)</p>
<p>In [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />
<p>Everybody’s excited about Windows 7 and there might be a few of you guys out there wanting to take advantage of some of the new features of the OS in your applications. In this post, I’ll show you how you can quickly add Jumplist support to your existing application (Yes, even WinForms applications)</p>
<p>In order to keep things simple, let’s just make the assumption that this existing application of mine has 3 very useful screens: Default, Green Mode and Red Mode ( I’m a developer, I’m not very creative ) </p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/07/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/07/image_thumb.png" width="588" height="371" /></a> </p>
<p>Because I want to save my user some additional clicks to get into green / red mode, I can take advantage of a new feature of Windows 7 called Jumplists: when a user right-clicks on my app’s icon on the Windows 7 task bar, this menu pops up and gives him access to tasks that we expect him to frequent. There are a lot of tutorials out there that teach how to add Recent/Frequent documents to this list. The samples included in the library we’ll be using will show you how.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/07/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/07/image_thumb1.png" width="306" height="229" /></a> .</p>
<p>For this example, we’ll learn how to use our applications existing custom functions (and icons) with Windows 7 jumplists but first, download <a href="http://code.msdn.microsoft.com/Windows7Taskbar">the Windows 7 Taskbar Developer Resource</a></p>
<p>For this example, I have a very simple Hello Windows 7 application. In the application, I have a menu bar that loads up additional screens. In this case, it’s just the same screen and switching the colors, but it could easily be a function that will load up another UserControl with different functions. Productivity is key, so I’d like to allow my user to go straight to these screens on startup. </p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/07/image2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/07/image_thumb2.png" width="1028" height="550" /></a> </p>
<p>In order to enable this, I’ve made a method that will allow the application to switch between user screens based on command line arguments when launching the application.</p>
<pre class="code"><span style="color: blue">private void </span>ProcessArguments()
{
    <span style="color: blue">string</span>[] args = <span style="color: #2b91af">Environment</span>.GetCommandLineArgs();

    <span style="color: blue">if </span>(args.Length &gt; 1)
    {
        <span style="color: blue">if </span>(args[1].Equals(<span style="color: #a31515">&quot;/r&quot;</span>))
        {
            LoadRedScreen();
        }
        <span style="color: blue">else if </span>(args[1].Equals(<span style="color: #a31515">&quot;/g&quot;</span>))
        {
            LoadGreenScreen();
        }

    }
}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>In this piece of code, I’m basically checking that IF there are arguments passed when running the application, I’ll be calling a method to load the appropriate UserControl (We’ve already seen that this is the same method invoked by the menu item in our Menubar).</p>
<p>Now we start using the libraries provided for us to make it easier to integrate with the Windows 7 Taskbar. But first let’s import the namespace of the library, plus some additional ones we will be using along the way</p>
<pre class="code"><span style="color: blue">using </span>Windows7.DesktopIntegration;
<span style="color: blue">using </span>System.IO;
<span style="color: blue">using </span>System.Reflection;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Next we add the following properties to the form:</p>
<pre class="code"><span style="color: blue">string </span>appID = <span style="color: #a31515">&quot;Hello Windows 7&quot;</span>;
<span style="color: #2b91af">JumpListManager </span>jlm;
    </pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>The key thing here is the JumpListManager but if you want more information on the appID and all the goodness it brings, visit <a title="http://windowsteamblog.com/blogs/developers/archive/2009/06/18/developing-for-the-windows-7-taskbar-application-id.aspx" href="http://windowsteamblog.com/blogs/developers/archive/2009/06/18/developing-for-the-windows-7-taskbar-application-id.aspx">http://windowsteamblog.com/blogs/developers/archive/2009/06/18/developing-for-the-windows-7-taskbar-application-id.aspx</a>. The next thing I have to do is override </p>
<pre class="code"><span style="color: blue">protected override void </span>WndProc(<span style="color: blue">ref </span><span style="color: #2b91af">Message </span>m)
{
    <span style="color: blue">base</span>.WndProc(<span style="color: blue">ref </span>m);
}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Before we start jumping into adding jumplists, we want to remember that since this is an existing application meant to be run in existing versions of Windows, we’d like to make sure that we’ll only execute the additional code IF the application is running in Windows 7, otherwise, operate as usual. To do this, we check whether the OS version is 6.1 or greater (RC builds still register Major version as 6) with this code:</p>
<pre class="code"><span style="color: #2b91af">OperatingSystem </span>os = <span style="color: #2b91af">Environment</span>.OSVersion;
<span style="color: blue">if </span>((os.Version.Major == 6 &amp;&amp; os.Version.Minor &gt;= 1) || os.Version.Major &gt; 6)
{
    <span style="color: green">//some code
</span>}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Now for the fun part. The OS message that we want to lookout for is the message that tells us that the taskbar button has been created. Then we can start adding the Jumplist items to the button.</p>
<pre class="code"><span style="color: blue">if </span>(m.Msg == <span style="color: #2b91af">Windows7Taskbar</span>.TaskbarButtonCreatedMessage)
{
    <span style="color: blue">try
    </span>{

        jlm = <span style="color: blue">new </span><span style="color: #2b91af">JumpListManager</span>(appID);
        jlm.UserRemovedItems += <span style="color: blue">delegate </span>{ };

        <span style="color: blue">string </span>strAppDir = <span style="color: #2b91af">Path</span>.GetDirectoryName(<span style="color: #2b91af">Assembly</span>.GetEntryAssembly().Location);
        <span style="color: blue">string </span>app = <span style="color: #2b91af">Assembly</span>.GetEntryAssembly().GetName().Name + <span style="color: #a31515">&quot;.exe&quot;</span>;

        jlm.AddUserTask(<span style="color: blue">new </span><span style="color: #2b91af">ShellLink
        </span>{
            Title = <span style="color: #a31515">&quot;Color it Red!&quot;</span>,
            Path = <span style="color: #2b91af">Path</span>.Combine(strAppDir, app),
            Arguments = <span style="color: #a31515">&quot;/r&quot;</span>,
            IconLocation = <span style="color: #2b91af">Path</span>.Combine(strAppDir, <span style="color: #a31515">@&quot;ico\Red.ico&quot;</span>)

        });

        jlm.AddUserTask(<span style="color: blue">new </span><span style="color: #2b91af">ShellLink
        </span>{
            Title = <span style="color: #a31515">&quot;Color it Green!&quot;</span>,
            Path = <span style="color: #2b91af">Path</span>.Combine(strAppDir, app),
            Arguments = <span style="color: #a31515">&quot;/g&quot;</span>,
            IconLocation = <span style="color: #2b91af">Path</span>.Combine(strAppDir, <span style="color: #a31515">@&quot;ico\green.ico&quot;</span>)
        });
        jlm.Refresh();

        ProcessArguments();
    }
    <span style="color: blue">catch </span>(<span style="color: #2b91af">Exception</span>)
    {

    }</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Let’s break this down. </p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/07/image3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/07/image_thumb3.png" width="316" height="45" /></a> </p>
<p>We start by creating a new instance of the JumpListManager passing the appID we’ve assigned to our app. Next we register to the UserRemovedItems event as this is required if we want to refresh the JumpList after adding items to it. In this case, we do nothing when any items are removed.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/07/image4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/07/image_thumb4.png" width="649" height="49" /></a> </p>
<p>Here, we get the directory where the application is running as well as the app name itself, so we can tell the JumpList link what to invoke when it is clicked. Basically it’s emulating running your app from a command prompt and passing the arguments (if any). Now we can proceed to adding our JumpList items.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/07/image5.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/07/image_thumb5.png" width="516" height="165" /></a> </p>
<p>I’ve mentioned we can add a few other things such as Recent Documents &amp; Frequent Documents&#160; but you’ll find lots of resources on this on the net as well as the samples for the library. In this case, we’re adding a new User Task to the jumplist which results in having these links under a “Tasks” header as below:</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/07/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/07/image_thumb1.png" width="306" height="229" /></a></p>
<p>Path, Arguments, and IconLocation are pretty self explanatory. </p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/07/image6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/07/image_thumb6.png" width="227" height="496" /></a> </p>
<p>I need to make sure my icons are available to my application so here I’ve placed all my custom icons in one directory and set the property so the IDE knows to copy these files to the output directory.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/07/image7.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/07/image_thumb7.png" width="177" height="41" /></a> </p>
<p>After defining my JumpList links, I can call a Refresh on the JumpListManager so it loads up all my new links. After this, I make a call to my ProcessArguments method. This will make sure it runs the additional code if any arguments were passed when running the application. Of course, if you see that your users may want to run your app from a command line and pass arguments manually, you might want to put this call outside of the if statement or anywhere before your first form completes loading.</p>
<p>It’s that easy! If you got lost on the way, here’s the source to this project. If you manage to get your JumpLists going, feel free post a link to your app! <img src='http://aimeegurl.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p><iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-bdfb7845c22e26b6.skydrive.live.com/embedrowdetail.aspx/Projects/TechFriday/Hello%20Windows%207.zip" frameborder="0" marginwidth="0" scrolling="no"></iframe></p>
<p><strong>RESOURCES:</strong></p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=12100526-ed26-476b-8e20-69662b8546c1">Windows 7 RC Training Kit for Developers</a></p>
<p>Managed APIs in this sample&#160; </p>
<ul>
<li>Windows 7 Taskbar &#8211; <a title="http://code.msdn.microsoft.com/Windows7Taskbar" href="http://code.msdn.microsoft.com/Windows7Taskbar">http://code.msdn.microsoft.com/Windows7Taskbar</a> </li>
</ul>
<p>Other Managed APIs available:</p>
<ul>
<li>Windows API Code Pack for Microsoft .NET Framework &#8211; <a title="http://code.msdn.microsoft.com/WindowsAPICodePack" href="http://code.msdn.microsoft.com/WindowsAPICodePack">http://code.msdn.microsoft.com/WindowsAPICodePack</a> </li>
<li>Windows 7 Taskbar Extensions &#8211; <a title="http://windows7taskbarext.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22682" href="http://windows7taskbarext.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22682">http://windows7taskbarext.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22682</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://aimeegurl.com/2009/07/10/techfriday-jumping-into-jumplists/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How I Upload Photos to Facebook</title>
		<link>http://aimeegurl.com/2009/05/19/how-i-upload-photos-to-facebook/</link>
		<comments>http://aimeegurl.com/2009/05/19/how-i-upload-photos-to-facebook/#comments</comments>
		<pubDate>Tue, 19 May 2009 02:46:58 +0000</pubDate>
		<dc:creator>Aimee</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[consumers]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[Windows7]]></category>
		<category><![CDATA[windowslive]]></category>

		<guid isPermaLink="false">http://aimeegurl.com/2009/05/19/how-i-upload-photos-to-facebook/</guid>
		<description><![CDATA[<p id="top" />
<p>I just have to say, I am loving Windows 7 RC. One of things I like that is an extended part of Windows 7 is the Windows Live Essentials. On a fresh install of Windows 7, go into the search bar and type in “Windows Live Essentials” or you can search for it [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />
<p>I just have to say, I am loving <a href="http://www.microsoft.com/Windows/Windows-7/download.aspx">Windows 7 RC</a>. One of things I like that is an extended part of Windows 7 is the Windows Live Essentials. On a fresh install of Windows 7, go into the search bar and type in “Windows Live Essentials” or you can search for it using your favorite search engine to get to the <a href="http://download.live.com/">download portal.</a></p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb3.png" width="351" height="456" /></a> </p>
<p>There are a few things included in the suite but what I want to talk about today is the Windows Live Photo Gallery. It’s quite similar to <a href="http://www.microsoft.com/windows/windows-vista/features/photo-gallery.aspx">Vista’s Photo Gallery</a> but much, much better. You can either <a href="http://dev.live.com/photogallery/">build your own plugins</a> or <a href="http://blogs.msdn.com/pix/pages/Plug_2D00_ins.aspx">download ones that have been built by others</a>. I’ll be talking about one in particular, the <a href="http://www.codeplex.com/liveuploadfacebook">Live Upload to Facebook</a> Plugin. </p>
<p>Scenario is this: after importing my pictures into my machine, I want to review them before uploading them to Facebook (or flickr or whatever service you want). Think of it as quality control.</p>
<p>The Facebook upload control makes it easy to upload photos if you already know which photos you want. My problem is that, I import my photos into folders based on events. And rarely do I want to upload all the photos I’ve taken of an event up into facebook, or flicker.</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image5.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb4.png" width="593" height="484" /></a> </p>
<p>What I do is use <a href="http://download.live.com/photogallery">Windows Live Photo Gallery</a> to quickly view and rate my photos 5 stars for the ones I want to upload to Facebook. (or i could do something like, 3 for facebook, 5 for flickr, etc.)</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb5.png" width="326" height="343" /></a>&#160; <a href="http://aimeegurl.com/wp-content/uploads/2009/05/image7.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb6.png" width="324" height="342" /></a> </p>
<p>Another thing the software does is (1) identify faces in the photos and (2) allow you to tag people from your messenger list (or specify the name of someone who’s not)</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image8.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb7.png" width="644" height="441" /></a> </p>
<p>I can then go back to the gallery:</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image9.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb8.png" width="285" height="161" /></a></p>
<p>And either sort:</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image10.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb9.png" width="644" height="379" /></a> </p>
<p>or filter the photos in a specific folder:</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image11.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb10.png" width="644" height="379" /></a> </p>
<p>And now, since I have the Live Uploader plugin installed I can easily select and publish the photos into facebook:</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image12.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb11.png" width="644" height="451" /></a> </p>
<p>I’m prompted to select the account I want to use:</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image13.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb12.png" width="644" height="405" /></a></p>
<p>I can then either create a new album, or select an existing album to publish the pictures to. Straight from the software, you can also control permissions for the album</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image14.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb13.png" width="471" height="382" /></a> </p>
<p>I can also then map my tags to my contact list on facebook for automatic tagging:</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image15.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb14.png" width="591" height="484" /></a> </p>
<p> Once it’s done publishing, my friends will be able to see my photos published in my feed. YEY!</p>
<p><a href="http://aimeegurl.com/wp-content/uploads/2009/05/image16.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://aimeegurl.com/wp-content/uploads/2009/05/image-thumb15.png" width="442" height="484" /></a>&#160;</p>
<p>What you’ll need?</p>
<p><strong>Required:</strong></p>
<p>Windows Live Photo Gallery &#8211; <a title="http://download.live.com/photogallery" href="http://download.live.com/photogallery">http://download.live.com/photogallery</a>&#160;</p>
<p>Live Upload to Facebook plugin &#8211; <a title="http://www.codeplex.com/liveuploadfacebook" href="http://www.codeplex.com/liveuploadfacebook">http://www.codeplex.com/liveuploadfacebook</a></p>
<p><strong>Optional:</strong></p>
<p>Windows 7 RC &#8211; <a title="http://www.microsoft.com/Windows/Windows-7/download.aspx" href="http://www.microsoft.com/Windows/Windows-7/download.aspx">http://www.microsoft.com/Windows/Windows-7/download.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aimeegurl.com/2009/05/19/how-i-upload-photos-to-facebook/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Professional Developer Conference 2008</title>
		<link>http://aimeegurl.com/2008/10/30/professional-developer-conference-2008/</link>
		<comments>http://aimeegurl.com/2008/10/30/professional-developer-conference-2008/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 06:04:33 +0000</pubDate>
		<dc:creator>Aimee</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[PDC2008]]></category>
		<category><![CDATA[Technical Sessions]]></category>
		<category><![CDATA[Windows7]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://aimeegurl.com/2008/10/30/professional-developer-conference-2008/</guid>
		<description><![CDATA[<p id="top" />
<p>For those of us who aren’t able to attend this year’s Professional Developer Conference, the good news is, all the content they’re delivering will be available online through the site http://www.microsoftpdc.com This feed (http://channel9.msdn.com/posts/pdc2008/RSS/?tag=videos) will give you all the sessions that have been recorded and posted on Channel 9 (it’s a lot of [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />
<p>For those of us who aren’t able to attend this year’s Professional Developer Conference, the good news is, all the content they’re delivering will be available online through the site <a href="http://www.microsoftpdc.com">http://www.microsoftpdc.com</a> This feed (<a title="http://channel9.msdn.com/posts/pdc2008/RSS/?tag=videos" href="http://channel9.msdn.com/posts/pdc2008/RSS/?tag=videos">http://channel9.msdn.com/posts/pdc2008/RSS/?tag=videos</a>) will give you all the sessions that have been recorded and posted on Channel 9 (it’s a lot of content!) I highly recommend watching the Keynotes, especially the Day 2 Keynote (<a title="Day Two #1 - Ray Ozzie, Steven Sinofsky, Scott Guthrie and David Treadwell" href="http://channel9.msdn.com/pdc2008/KYN02/">Day Two #1 &#8211; Ray Ozzie, Steven Sinofsky, Scott Guthrie and David Treadwell</a>) where they showcase all the cool stuff that Microsoft is coming out with very soon. Very exciting stuff!</p>
<p>You just have to love technology. <img src='http://aimeegurl.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://aimeegurl.com/2008/10/30/professional-developer-conference-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
