Le Café Central de

                    ... Deva blogs!!

  • Le Café Central de DeVa

    Utility review: Calcheck – Outlook Calendar Checking tool


    In this post, we will have a look at the Calendar Checking tool (Calcheck) for Outlook which is published recently by Randy. This program checks the Microsoft Outlook Calendar and items for problems or for potential problems. It's is a command-line program that checks Outlook Calendars for problems. To use this tool, the Outlook calendar must reside on a Microsoft Exchange Server.

    Note: The tool does not work with IMAP, with POP3, or with other non-Exchange mail servers.

    The tool opens an Outlook profile, opens the Outlook Calendar, and then checks several things such as permissions, free/busy publishing, and auto booking. Then, the tool checks each item in the calendar folder for problems that can cause items to seem to be missing or that might otherwise cause problems in the Calendar.

    It can be used with the following: Outlook 2003, 2007, 2010 and Exchange Server 2003, 2007, 2010.

    To install this download:

    1.Click the Download button on this page to download the file and save it to your computer.
    2.Unzip the compressed file that you downloaded in a blank directory on your computer.
    Instructions for how to use this tool:

    After you install this download, open a Command Prompt window in the directory that contains the CalCheck.exe file. To obtain detailed instructions, type the calcheck /? command in the Command Prompt window, and then press Enter.

    Calcheck - Usage

    Here is a list of command-line switches for CalCheck.exe:

    CalCheck [-P <Profile name>] [-M <Mailbox name>] [-S <Server name>] [-O<path>] [-A] [-F] [-R] [-V] [-No]
    CalCheck -?

    -P Profile name (If this parameter is not specified, the tool prompts you for a profile)
    -M Mailbox DN (If this parameter is specified, only process the mailbox that is specified)
    -S Server name (Process the complete server unless a mailbox is specified)
    -O Output path (path to place output files -default is the current directory)
    -A All calendar items are output to CALCHECK.CSV
    -F Create a CalCheck folder, and move flagged error items to the folder
    -R Put a Report message that contains the CalCheck.log file in the Inbox
    -V Verbose output to the Command Prompt window
    -No To omit a calendar item test
    The No parameter works with "org" to omit the “Attendee becomes Organizer” test and works with "dup" to omit duplicate item detection
    -? Print this message

    To remove this download:
    To remove CalCheck, delete the directory where it is installed on the hard disk.

    You can download the utility in two flavors - CalCheckX64, CalCheckX86. You can download it from http://www.microsoft.com/en-us/download/details.aspx?id=28786&WT.mc_id=rss_office_allproducts

    What the utility does & what you will see in the report?

    When you try the Calcheck.exe, the following Calendar-specific checks are performed and logged in the report:

    • Permissions on the Calendar
    • Delegates on the Calendar
    • Free/Busy publishing information
    • Direct Booking settings for the Mailbox or Calendar
    • Total number of items in the Calendar folder

    The following item-level checks are performed and logged in the report:

    • No Organizer email address
    • No Sender email address
    • No dispidRecurring property (causes an item to not show in the Day/Week/Month view)
    • Time existence of the dispidApptStartWhole and dispidApptEndWhole properties
    • No Subject for meetings that occur in the the future or for recurring meetings (a warning is logged)
    • Message Class check (a warning is logged)
    • dispidApptRecur (recurrence blob) is checked for time on overall start and end times, not for exceptions
    • Check for Conflict items in the Calendar
    • Check for duplicate items, based on certain MAPI properties
    • Check if over 1250 recurring meetings (a warning is logged) and 1300 recurring meetings (an error is reported); 1300 is the limit
    • Check if you are an attendee and you became the Organizer of a meeting
    • Check meeting exception data to ensure it is the correct size

    Note: If you have a problem with CalCheck - you can post information about it on http://calcheck.codeplex.com/workitem/list/basic

    Later I will add couple of screenshots that I tried at my end. I recommend you to try this wonderful utility and make use of it!

    Happy troubleshooting!!
  • Le Café Central de DeVa

    Outlook Object Model: How to include usemap attribute programmatically?


    In this post, I will show you how to make use of usemap attribute of img HTML element in HTML emails programmatically. For this, I used Outlook 2010 VBA & Outlook Object Model. You can design the application with C# or VB.Net with Outlook Object Model library as per your wish.

    We will do this exercise in two steps:

    First, we need to set the Bodyformat of the message as olFormatHTML
    Second, at the Message body we need to include the usemap attribute with img HTML element.

    Here is the code snippet that I tried:

       1: ...
       2: Dim str As String
       3: Dim newMSG As Outlook.MailItem
       5: Set newMSG = Application.CreateItem(0)
       6: newMSG.To = Session.CreateRecipient("test@testexchange.com")
       7: newMSG.Subject = "Test message"
       8: newMSG.BodyFormat = olFormatHTML
       9: newMSG.Body = "start Body here.  "
      10: newMSG.Body = newMSG.Body & "  Add more text."
      12: str = "<html> <body> <p>Click the logo:</p>"
      13: str = str & " <img src='http://www.microsoft.com/presspass/imagegallery/images/products/office/office2010/MS_Office_w_2010_vertical_web.jpg' width=200 height=200 alt='Sites' usemap='#sitesmap' />"
      14: str = str & " <map name='sitesmap'> <area shape='rect' coords='0,0,82,126' alt='Bing' href='http://www.bing.com'/>"
      15: str = str & " <area shape='circle' coords='0,90,58,3' href='www.microsoft.com' alt='Microsoft'/>"
      16: str = str & "</map> </body> </html>"
      18: newMSG.HTMLBody = str
      19: newMSG.Save
      20: 'newMSG.Send
      21: newMSG.Display
      22: ...

    Once you’re done, try run the above sample – you’ll see the below results whenever you move to cursor to the above co-ordinates.



    Happy programming!!

  • Le Café Central de DeVa

    PowerShell: Determine Version number, build number and Service Pack of Exchange Server


    In my earlier article, we learnt how to get the Exchange Server version, version/build number of Exchange 2003 and it’s earlier. In this, we will see how to get these info & couple of additional info in Exchange Server 2007/2010 using Exchange Management Shell and Exchange Management Console.

    Using Exchange Management Console:

    To view the server properties in the Exchange Management console, try the following steps:

    1.Start the Microsoft Exchange Management console. In the navigation pane, expand the Server Configuration objects until you locate the server object, and then select the server object.
    2.On the right side, notice the Exchange version number.

    Using Exchange Management Shell:

    For this, I used Get-ExchangeServer cmdlet to view the server properties in Exchange Management Shell:


    I want to save the above info in a .txt file (saved under c:\output.txt):


    Now, I want to customize the above one by the following to get more clarity:


    Still I want to add more info like Site, Server Role and Edition etc..


    Hope this helps you to move ahead.

  • Le Café Central de DeVa

    Exchange Server 2007, 2010: How to query user mailboxes, its permissions using Exchange PowerShell?


    In Exchange Server 2007/2010, you can use Exchange PowerShell cmdlets (especially using Get-Mailbox, Get-MailboxPermission, Get-ADPermission, Get-MailboxFolderPermission) to get a verity of info. I played with couple of the below in different scenarios and want to share the same with you – so that you can give a shot and make use of.

    Scenario # 1: How to query permissions on a mailbox (testuser1)?
    > Get-MailboxPermission test1


    Scenario #2: How to query permissions of all the mailboxes on a particular server?
    > Get-Mailbox –Server “ServerName” | Get-MailboxPermission


    Scenario #3: How to query permissions of all the mailboxes?
    > Get-Mailbox | Get-MailboxPermission
    Note: This will get the list of all permissions (including SELF permissions and inherited permissions)


    Scenario # 4: How to query permissions of all the mailboxes (filter out SELF and inherited permissions)?
    > Get-Mailbox | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false}

    Scenario #5: How to query mailbox permissions and Security permissions (only enumerate permissions that are not Inherited)?
    > Get-Mailbox | Get-MailboxPermission | where {$_.IsInherited -eq $False}
    Note: The above query will get you the “explicitly assigned permissions”

    Scenario #6: How to query the explicitly assigned permissions (filter out SELF permissions)?
    > Get-Mailbox | Get-MailboxPermission | where { ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITY\SELF”) }

    Scenario #7: How to query list of all mailboxes with Send-As permission assigned on them?
    > Get-Mailbox | Get-ADPermission | where {($_.ExtendedRights -like “*Send-As*”)} | FT –Wrap
    Note: This will get the list of mailboxes with Send-As permission assigned. Also you can notice that it shows Send-As permissions assigned to SELF on all mailboxes also.

    Scenario #8: How to query list of all mailboxes with Send-As permission assigned on them (filter out SELF and inherited permissions as similar to Scenario #4)?
    > Get-Mailbox | Get-ADPermission | where {($_.ExtendedRights -like “*Send-As*”) -and ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITY\SELF”)} | FT –Wrap

    Scenario #9: How to query the permissions of shared calendar in Exchange 2010?
    > Get-MailboxFolderPermission –identity “mailboxaccount*:\Calendar”
    Note: If you just try Get-MailboxFolderPermission with identity with mailboxaccount won’t get you the above.

    Scenario #10: How to query the users rights to a specific users mailbox?
    > Get-MailboxPermission –identity “username” | fl user, accessrights


    Scenario #11: How to query the permissions for every users mailbox?
    > Get-MailboxPermission –identity * | fl user, identity, accessrights



    + Exporting the data:
    At anypoint of time, if you want to export the above results to a CSV file, then you can use “Export-csv”. Say, let we try with one of the above scenario – try with scenario # 2:
    > Get-Mailbox | Get-MailboxPermission | Export-csv C:\permissions.csv


    + Automation using .Net Framework:
    If you want to like to add Exchange management capabilities to your Microsoft .NET Framework–based applications then you can try the above by referring the following: http://msdn.microsoft.com/en-us/library/bb332449(v=exchg.80).aspx and http://msdn.microsoft.com/en-us/library/ff326159(v=exchg.140).aspx.

    Happy PowerShelling and automation…!!

  • Le Café Central de DeVa

    Admin: How to remove retention policy from Outlook/Exchange?


    ·To remove retention policy from Outlook:

    When you remove a retention policy from an email message, the folder policy applies to the item, if one is assigned.

    1. In the message list, click a message. (To select more than one message, press and hold CTRL as you click each message.)

    2. On the Home tab, in the Tags group, click Assign Policy.


    3. Under Retention Policy, click Use Folder Policy.

    Note: The retention policy for a message appears in the header in the Reading Pane under the recipient names and includes the expiration date. If no retention policy is applied, no information appears under the message recipient names.

    From Exchange:

    You can use the following exchange cmdlet: http://technet.microsoft.com/en-us/library/dd297962.aspx. Please note that the retention policies are used to apply message retention settings to folders and items in a mailbox.

    The below cmdlet removes an existing retention policy "Business Critical", which is assigned to users, and suppresses the confirmation prompt.

    > Remove-RetentionPolicy -Identity "Business Critical" -Confirm:$false -Force

  • Le Café Central de DeVa

    Outlook Object Model: How to assign a Webpage to a specific Outlook folder programmatically?


    In this post we will see how to assign a web page to a specific Outlook folder programmatically using C# and Outlook Object Model. For this I tried the following sample, which checks for a folder named “HtmlView” in Microsoft Office Outlook. If the folder does not exist, the code creates the folder and assigns a Web page to it. If the folder exists, the code displays the folder contents.

    The following sample is written using C#.Net, Visual Studio 2010 and Outlook 2010 (Outlook Object Model API).

    Code snippet:

       1: //Microsoft.Office.Interop.Outlook._Application
       2: // Create an Outlook application.
       3: Outlook._Application oApp = new Outlook.Application();
       5: // Get the MAPI NameSpace and Logon values.
       6: Outlook._NameSpace oNS = (Outlook._NameSpace)oApp.GetNamespace("MAPI");
       7: oNS.Logon(Missing.Value, Missing.Value, true, true);
       9: //Assign a Web page with a specific Outlook folder
      10: Outlook.MAPIFolder newView = null;
      11: string viewName = "HtmlView";
      12: Outlook.MAPIFolder inBox = (Outlook.MAPIFolder) oApp.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
      13: Outlook.Folders searchFolders = (Outlook.Folders)inBox.Folders;
      14: bool foundView = false;
      16: foreach (Outlook.MAPIFolder searchFolder in searchFolders)
      17: {
      18:    if (searchFolder.Name == viewName)
      19:       {
      20:          newView = inBox.Folders[viewName];
      21:          foundView = true;
      22:       }
      23: }
      25: if (!foundView)
      26: {
      27:      newView = (Outlook.MAPIFolder)inBox.Folders. Add("HtmlView", Outlook.OlDefaultFolders.olFolderInbox);
      28:      newView.WebViewURL = "http://www.microsoft.com";
      29:      newView.WebViewOn = true;
      30: }
      32: oApp.ActiveExplorer().SelectFolder(newView);
      33: oApp.ActiveExplorer().CurrentFolder.Display();

    Run the sample and you will see the following output in Outlook:

    Outlook 2010 - Output

    Happy programming!!

  • Le Café Central de DeVa

    Handy: Keyboard Shortcuts for Windows 8


    Have you started playing around with new Windows 8 OS? You can get the list of Keyboard shortcuts for Windows 8….Enjoy!!

  • Le Café Central de DeVa

    Debug : Workaround - Remote debugging monitor (msvsmon.exe) error on Windows 7


    I was playing around debugging a custom app in one of my Windows 7 & Visual Studio 2010. When I tried running msvsmon.exe (Remote Debugging Monitor) and got the following error message when attempting to remote debug:

    Error while trying to run project: Unable to start debugging.

    This operation returned because the timeout period expired.

    During further investigation, I found that the issue is that the firewall is not setup properly on the Win7 machine for remote debugging. I noticed that when msvsmon first launches, it will prompt the user to configure the firewall.

    Per the debugger blogpost, this happens due to the firewall security API changes since Vista, the prompt may not come up. I tried the following workaround to move ahead:

    Control Panel->System and Security->Windows Firewall: Change notification settings -> enable Notify me when Windows Firewall blocks a new program ->Ok

    After implementing the above, I started remote debugging again and this time I can notice that msvsmon shows popup a windows security alert dialog box that prompt to grant access permission to msvsmon.

    Happy debugging!!

  • Le Café Central de DeVa

    Update: Windows Phone SDK 7.1.1 available for download


    The Windows Phone SDK 7.1.1 Update is now available for your download.

    It enables Windows Phone developers to do two things:

    • Develop apps that work well on the new 256 MB devices
    • Use the WPSDK 7.1 to develop on machines running Windows 8

    The 7.1.1 Update is really just that – it’s an update to the existing WPSDK: it doesn’t add much in the way of new features to your WPSDK installation; it updates your existing install to do a few new tricks:

    • The Visual Studio IDE is patched to enable selection from a list of emulators, and launching it (note that the WPSDK can only support connecting to one at a time, though)
    • The Windows Phone [512 MB device] emulator image is updated to use build 8773
    • A second, new emulator device image is included, allowing you to emulate running your app on a 256 MB device
    • The Microsoft Advertising SDK is updated to the latest version (previously only available as a separate install)
    • IntelliSense now supports specifying the 512 MB device requirement in your manifest file, should you choose to opt your app out from running on the new 256 MB devices
    • Language support is again consistent both in the IDE (the 7.1.1 Update supports all 10 of the WPSDK 7.1 languages) and in the emulator OS (Malay and Indonesian been added)
  • Le Café Central de DeVa

    Developer Webcasts on Exchange Server 2010 programming


    Please find the developer webcasts for Exchange Server 2010. If you're planning to create your own custom application using Exchange Server 2010, i would recommend you to start from this.

    I will try to add related info on the above shortly. Happy Coding!!
  • Le Café Central de DeVa

    Availability Web Service Protocol Specification References


    Information for the availability service is provided via our open specifications document: [MS-OXWAVLS].
    Information for the security model used in the availability service, please reference the following document: [MS-OXCPERM].

    For more info, you can refer:

    Availability Web Services Protocol specification: http://msdn.microsoft.com/en-us/library/cc463891(v=exchg.80).aspx or http://download.microsoft.com/download/5/D/D/5DD33FDF-91F5-496D-9884-0A0B0EE698BB/[MS-OXWAVLS].pdf or http://download.microsoft.com/download/5/D/D/5DD33FDF-91F5-496D-9884-0A0B0EE698BB/Exchange_Protocols.zip.

  • Le Café Central de DeVa

    EWS : How to access user’s free/busy info programmatically using Exchange Web Services (EWS)?


    In this post, we will see how to access user free/busy information programmatically using Exchange Web Services (EWS) – Proxy. Exchange provides such a service by storing what is referred to as free/busy data. This information will indicate what requested time range is free, busy, and tentative for a particular user. It will also provide any out of office (oof) status as well. Free/Busy data can be obtained using the Availability service provided by the Exchange Server. This is simply a web service which obtains the free/busy data directly from a user’s calendar.

    Specifically, the GetUserAvailability operation will provide the free/busy state at specific level of detail.Using GetUserAvailability operation, which provides current user availability information at a specified level of detail - about the availability of a set of users, rooms, and resources within a specified time period. Client applications such as Microsoft Office Outlook, Microsoft Outlook Web Access, Microsoft Outlook Mobile Access, and other applications use SMTP addresses to identify the requested user information.

    Let start now by creating the binding, set the credentials/URL and pass the binding (esb) to the following functionality ( which I haven’t added here).

    Identify the time to compare free/busy information:

    Duration duration = new Duration();

    duration.StartTime = DateTime.Now;

    duration.EndTime = DateTime.Now.AddHours(4);

    Identify the options for comparing free/busy information:

    FreeBusyViewOptionsType fbViews = new FreeBusyViewOptionsType();

    fbViews.TimeWindow = duration;

    fbViews.RequestedView = FreeBusyViewType.MergedOnly;

    fbViews.RequestedViewSpecified = true;

    fbViews.MergedFreeBusyIntervalInMinutes = 35;

    fbViews.MergedFreeBusyIntervalInMinutesSpecified = true;

    Identify the user mailbox to review for free/busy data:
    MailboxData[] mbx=

    mbx[0] = new MailboxData();

    EmailAddress emailAddress = new EmailAddress();

    emailAddress.Address = "user1@domain.com";

    emailAddress.Name = String.Empty;

    mbx[0].Email = emailAddress;

    mbx[0].ExcludeConflicts = false;

    Make the request and set the time zone of the request:
    getusrRequest.TimeZone = newSerializableTimeZone();

    getusrRequest.TimeZone.Bias = 480;

    getusrRequest.TimeZone.StandardTime = newSerializableTimeZoneTime();

    getusrRequest.TimeZone.StandardTime.Bias = 0;

    getusrRequest.TimeZone.StandardTime.DayOfWeek = DayOfWeekType.Sunday.ToString();

    getusrRequest.TimeZone.StandardTime.DayOrder = 1;

    getusrRequest.TimeZone.StandardTime.Month = 11;

    getusrRequest.TimeZone.StandardTime.Time = "02:00:00";

    getusrRequest.TimeZone.DaylightTime = new SerializableTimeZoneTime();

    getusrRequest.TimeZone.DaylightTime.Bias = -60;

    getusrRequest.TimeZone.DaylightTime.DayOfWeek = DayOfWeekType.Sunday.ToString();

    getusrRequest.TimeZone.DaylightTime.DayOrder = 2;

    getusrRequest.TimeZone.DaylightTime.Month = 3;

    getusrRequest.TimeZone.DaylightTime.Time = "02:00:00";

    In addition to that, add the mailbox and the view options to the request
    getusrRequest.MailboxDataArray = mbx;

    getusrRequest.FreeBusyViewOptions = fbViews;

    Send the above request and get the response:
    GetUserAvailabilityResponseType getusrResponse = esb.GetUserAvailability(getusrRequest);

    Access the free/busy info:

    if(getusrResponse.FreeBusyResponseArray.Length < 1)


    Console.WriteLine("No free/busy response data available.");




    foreach(FreeBusyResponseType fbrt in getusrResponse.FreeBusyResponseArray)


    if(fbrt.ResponseMessage.ResponseClass == ResponseClassType.Error)


    Console.WriteLine("Error:" + fbrt.ResponseMessage.MessageText);




    FreeBusyView fbv = fbrt.FreeBusyView;

    Console.WriteLine("Merged free/busy data: " + fbv.MergedFreeBusy);




    If you run the above piece of code, then you will get the result:


    For more information, you can refer the following article: http://msdn.microsoft.com/en-us/library/aa564001(v=exchg.140).aspx

    Happy programming!!

  • Le Café Central de DeVa

    Migration: Exchange Public folders and its future


    Public Folders are used in earlier versions of Microsoft Exchange Server to store free/busy data and files. From Microsoft Exchange Server 2007, free/busy data is no longer stored in public folders. It’s recommend that you do not store files in public folders in Exchange 2007. Instead, consider using Microsoft Office SharePoint, or Windows SharePoint Services. Public folders are included and supported in Exchange 2007 and 2010. However, future releases of Microsoft Exchange might not include public folders. You can visit http://blogs.technet.com/b/exchange/archive/2006/02/20/419994.aspx. Also, you can refer MS Exchange team blog have posted the updated public folder guidance for versions of Exchange past Exchange 2007.

    So, what are my options?

    If you're building something new, you should look at the requirements and building on the SharePoint Technologies platform:

    + Starting with Exchange 2007, we recommend that applications use the Availability service to provide free/busy data for Exchange mailbox users. Windows SharePoint Services replaces the file sharing functionality that public folders provide. You must redesign applications that use public folders to use Exchange Web Services.
    + Also consider redesigning custom applications as early as possible as future versions of Microsoft Exchange may not contain public folders.
    + In addition to that you can refer the wonderful blogpost by Joel.

  • Le Café Central de DeVa

    GoingNative 2012: Wonderful sessions on C++11


    Are you a C++ developer? Then, its for you. Recently I was watching Channel9, “GoingNative 2012” - wonderful sessions on C++. Please find the related links for your reference:

    Happy programming!!

  • Le Café Central de DeVa

    Differences: Outlook Object Model vs Pocket Outlook Object Model


    Recently one of my developer customer (developer of PC and mobile based applications) was asking is there any difference available between Outlook Object Model (OOM) API and Pocket Outlook Object Model (POOM) API? If yes, where it's documented? As you know, the Pocket Outlook Object Model (POOM) API is a COM-based library that provides programmatic access to Personal Information Manager (PIM) data on mobile devices. It provides functionality for manipulating PIM-item collections and folders.

    I pointed him to have a look at the MSDN document, which points at the principal differences between the Pocket Outlook Object Model and the Outlook object model.

  • Le Café Central de DeVa

    Windows Phone 7’s latest update: 7.10.8107.79


    I got the latest Windows Phone update: 7.10.8107.79


    It fixes the following:

    • On-screen keyboard. Fixes an issue to prevent the keyboard from disappearing during typing.
    • Email. Fixes a Google mail syncing issue.
    • Location. Fixes a location access issue. With this fix, the Me feature in the People Hub sends anonymous information about nearby Wi-Fi access points and cell towers to Microsoft only if you agree to allow the Check In function to access and use location information.
    • Security. Revokes digital certificates from DigiCert Sdn Bhd to address an encryption issue.
    • Email threads. Fixes an email issue related to Microsoft Exchange Server 2003. With this fix, when you reply to or forward a message, the original message is now included in your response.
    • Voicemail. Fixes a voicemail notification display issue that occurs on some European and Asian networks under certain conditions

    To learn how to install updates, check if there's an update available for you to download, and determine which version of Windows Phone you have now, see Phone updates FAQ.

  • Le Café Central de DeVa

    Here it comes…Kinect for Windows SDK


    Here it comes… Kinect for Windows. You can use the power of Kinect to change the world. Kinect has changed the way people play games and experience entertainment. Now, Kinect for Windows offers the potential to transform how people interact with computers and Windows-embedded devices in multiple industries, including education, healthcare, retail, transportation, and beyond. The release of the Kinect for Windows sensor and software development kit (SDK) for commercial applications opens up the limitless possibilities offered by Kinect technology. Together, the hardware and software offer a superior development platform for Windows and a higher quality, better performing experience for end users

    Are you a developer and want to thrive to Develop what's next, then your journey starts here… The Kinect for Windows sensor and SDK give you the tools you need to develop innovative applications that harness speech and human tracking. Now, the power is in your hands to enable people to interact with technology in completely new and exciting ways. You can download the Kinect SDK @ Download SDK

    Getting Started: Use these programming guides to help you get started with the Kinect for Windows system.

    Got developer queries: Your development questions answered before you even asked them. Note: for all other questions, reference the General FAQ.

    In addition to that, if you want to see what can be done, then you can have a look at the gallery. Also you can view the following video clip:

    The Kinect Effect

    Community related info:

    The Blog clip_image001 Get our latest updates and read stories about the amazing applications companies are creating with Kinect for Windows.

    Facebook clip_image001[1] Take part in our Facebook community, where we'll be sharing ongoing news and information.

    Twitter clip_image001[2] Follow us on Twitter and be part of the movement. #kinectforwindows

    Forums clip_image001[3] Share advice and provide feedback about Kinect for Windows in our technical forums

    Create a new world around you with Kinect and unleash its power!!

  • Le Café Central de DeVa

    Office 15 begins Technical Preview


    Are you ready for “Office 15”? Hough, CVP of Office Division announced in his blog that they reached an important milestone: the beginning of “Office 15” Technical Preview program. It also points that the Technical Preview program is already full, but everyone will have the opportunity to try the Office 15 public beta later this summer.

  • Le Café Central de DeVa

    Download: Exchange Server 2010 SP2

    Now you can download Exchange Server 2010 SP2 (remember Bharat Suneja’s blogpost). Microsoft Exchange Server 2010 SP2 helps you achieve new levels of reliability and performance by delivering features that help to simplify your administration, protect your communications, and delight your customers by meeting their demands for greater business mobility.

    It contains the new features and capabilities like, Outlook Web App (OWA) Mini, Cross-Site Silent Redirection for Outlook Web App, Hybrid Configuration Wizard, Address Book Policies(GAL segmentation), Mailbox auto mapping, customer requested fixes etc.

    Related info:
    + What’s new in Exchange Server 2010 SP2? http://technet.microsoft.com/en-us/library/hh529924.aspx
    + Download Exchange Server 2010 SP2: http://www.microsoft.com/download/en/details.aspx?id=28190
    + Release notes for Exchange Server 2010 SP2: http://technet.microsoft.com/en-us/library/hh529928.aspx
    + Issues that are fixed in Exchange Server 2010 SP2: http://technet.microsoft.com/en-us/library/hh672189.aspx
    + Older Channel 9 Video: What's New in Microsoft Exchange Server 2010 SP2: Featuring GAL Segmentation

  • Le Café Central de DeVa

    Next Generation Windows file system: ReFS

    Have you heard about “ReFS”? ReFS stands for Resilient File System. It’s the next generation Windows file system being introduced in Windows Server 8, replaces NTFS. For more info, you can read Steve’s related blog post @ http://blogs.msdn.com/b/b8/archive/2012/01/16/building-the-next-generation-file-system-for-windows-refs.aspx
  • Le Café Central de DeVa

    COM+/MTS custom application : CreateObject or CreateInstance?


    Recently i was working with a developer customer, who created an Visual Basic/COM+ based solution (internally uses the Microsoft Messaging library). In general, he wants to know whether they should use CreateObject or CreateInstance? Whether both will have the same or different same effect in COM+?

    In Microsoft Transaction Server (MTS), you must use ObjectContext.CreateInstance in your root object to create secondary objects for the transaction to flow. In COM+ this still works, but it is no longer necessary to do it. In COM+, CreateObject subsumes the functionality of ObjectContext.CreateInstance. The object created participates in the caller's activity. In COM+, you can use the standard CreateObject function in Microsoft Visual Basic to flow a transaction to secondary objects as appropriate. So, CreateObject and CreateInstance have the same effect in COM+.

  • Le Café Central de DeVa

    Click to connect MSDN/TechNet forums from your desktop


    Using MSDN Forum Assistant and TechNet Forum Assistant gadgets offer a convenient way for the forum users to read the forum recent threads and your own threads, it also make it easy to create new threads and search in the forum.

    How is simple is that…. I tried the gadgets at my Windows 7 machine in 3 simple steps Smile

    1. Double-click the gadget installation package.


    2. On the popup window, click “Install” to finish the installation.

    image   image

    3. The gadget usually will be automatically located on the desktop. If not, look it up from the Gadget Gallery and add it to the desktop

  • Le Café Central de DeVa

    Video: Role of a Software Architect in today’s world


    Recently viewed this interview - Brian Prince, Principal Developer Evangelist at Microsoft, and Juval Lowy, Software Architect & Principal at IDesign as they discuss the role of an architect in today's world. Juval breaks down how the role of an architect has evolved over the years from applying engineering principles and practices to software systems to now also taking an active leadership role in the process and in technology. Today's architect does less of showing developers "how-to" but instead showing more what to do in specific scenarios.

    I like the following excerpts which I liked from the interview: “you can copy and paste the code but are you know whether this is right to do in your context”, “architect should constant likely at the technical aspect of the project”. This is a great interview to catch if you're headed down this career path!

    Click here to view the video:

  • Le Café Central de DeVa

    Outlook 2010: Migrating CDO based application to Outlook Object Model(OOM) library


    Recently one of my developer customer migrated from Outlook 2003 to 2010. He tried running the custom application (uses CDO & Outlook 2003) in Outlook 2010. It throws the error “ActiveX component can’t create object”. 

    Using the following test sample, I can reproduce the exact issue at my end:


    As you know, Microsoft Outlook 2010 includes many architectural changes to the client-side MAPI subsystem. Of particular concern are scenarios in which Outlook is configured to use multiple Exchange accounts. Also, CDO 1.2.1 is a 32-bit client library and will not operate with 64-bit Outlook 2010. Given all these factors, CDO 1.2.1 is not supported for use with Outlook 2010 and we don’t recommend its usage with Outlook 2010. As updated earlier, in Outlook 2010 you need to re-write/migrate the code base referencing CDO to Outlook Object Model or MAPI, messaging libraries which ever suits you.  So the programs/custom applications that use CDO should be re-designed to use other Application Programming Interfaces (APIs) instead of CDO.

    Starting with Outlook 2007, the Outlook object model was greatly expanded to provide functionality that was previously available only by using CDO 1.2.1. The Outlook 2010 object model includes some new features to expand on this more. For example, the Outlook 2010 object model has new functionality to operate correctly with multiple Exchange accounts. The Outlook object model also works for both 32-bit and 64-bit versions of Outlook. Developers should use the Outlook 2010 object model instead of CDO 1.2.1. Also, developers can still use Extended MAPI (which requires unmanaged C++) in some scenarios where CDO was required. However, if it is possible, we generally recommend that the Outlook object model be used instead of Extended MAPI.

    In this post, we will take the above code sample and will show how you can migrate/re-write the CDO based application to Outlook Object Model library.

    CDO sample – created in Outlook 2003:
       1: Dim MapiSession As Object
       2: Dim MapiMessage As Object
       6: Set MapiSession = CreateObject("Mapi.Session") ' Create the MAPI Session.
       8: MapiSession.Logon , , , False                  ' Log on to the session.
      10: Set MapiMessage = MapiSession.Outbox.Messages.Add
      12: With MapiMessage
      13:     .To = "testuser@contoso.com"
      14:     .Subject = "Test"
      15:     .Text = "Test"
      16:     .send showdialog:=True
      17: End With
      19: MapiSession.Logoff
      21: Set MapiSession = Nothing  ' Clear the object variable.
    • In order to start with, we will do it from the declaration section – you can see the CDO/OOM migrated sample and notice the changes.
    • In CDO code, it’s specified as Set MapiSession = CreateObject(“Mapi.Session”). When it comes to Outlook Object Model, then it should be converted as, Set MapiSession = CreateObject("Outlook.Application")
    • Now, we will try the next line, which is doing logon() call. In CDO, it’s MapiSession.Logon , , ,False. In OOM, it’s you need to add GetNamespace, so MapiSession.GetNamespace("MAPI").Logon , , , False
    • Next line in CDO points that a new mail item will be created in Outbox folder. In OOM, it need to be simplified: MapiSession.CreateItem(olMailItem).
      • Please note I haven’t used outbox folder like, MapiSession.GetNamespace("MAPI").GetDefaultFolder(olFolderOutbox)
    • I don’t see much changes when you specify the values for MapiMessage, except for .Send (CDO) – just needs to be trimmed as .Send(in OOM)

    Once you done with migration, the OOM code (created in Outlook 2010) will look like the below:

       1: Dim MapiSession As Outlook.Application
       2: Dim MapiMessage As Outlook.MailItem
       4: Set MapiSession = CreateObject("Outlook.Application") ' Create the MAPI Session.
       5: MapiSession.GetNamespace("MAPI").Logon , , , False
       7: Set MapiMessage = MapiSession.CreateItem(olMailItem)
       8: With MapiMessage
       9:     .To = "testuser@contoso.com"
      10:     .Subject = "Test"
      11:     .Body = "Test"
      12:     .Send
      13: End With
      15: Set MapiSession = Nothing

    Please note: Microsoft product support can help developer customers migrate custom programs from using CDO 1.2.1 to using other APIs. However, Microsoft will not provide support for any scenarios in which CDO 1.2.1 is used with Outlook 2010.

    Happy programming!!

  • Le Café Central de DeVa

    Fix: Windows Phone 7.5 & Facebook Password update “0x83cf1202”

    Recently one of my customer changed his Facebook password via laptop. Later when he tried connecting via my Windows Phone/Facebook chat, it requested him to update the password. Unfortunately, he opted to delete the Facebook account, but it failed. After this, he can’t update his password. Doing so (Settings > Email+accounts > Facebook), it throws “Attention required – can’t delete Facebook” and error code “0x83cf1202”. 

    Tried the following steps, which helped him to fix the issue:

    1. Disconnect all devices/desktop apps and login with browser
    2. Delete Facebook account (connected with Hotmail account) using the browser
    3. Boot the phone
    4. In Phone, Sync the Hotmail account. At end of this, delete the Facebook account
    5. Now you can connect the Facebook account using Settings > Email+accounts > Facebook in the phone.

    Note: Prior to that I learnt that he is connected with messenger desktop app browser, Windows Phone to the Hotmail account. Also the Facebook updates, notifications, still seem to work, but only chat doesn't Smile

Page 4 of 26 (646 items) «23456»