Le Café Central de
Deva             


                    ... Deva blogs!!



  • Le Café Central de DeVa

    Development : Is Visual Basic 6.0 Runtime still supported?

    • 1 Comments

    We get many request/references regarding support of Visual Basic 6.0 runtime support for various Microsoft Operating systems including MS Windows 7.

    There is a wonderful article regarding this MSDN article titled “Support Statement for Visual Basic 6.0 on Windows Vista, Windows”. It states that the “…Visual Basic team is committed to “It Just Works” compatibility for Visual Basic 6.0 applications on Windows Vista, Windows Server 2008 including R2, and Windows 7. The Visual Basic team’s goal is that Visual Basic 6.0 applications that run on Windows XP will also run on Windows Vista, Windows Server 2008 and Windows 7. The Visual Basic team is also committed to the Visual Basic 6.0 development environment running on Windows Vista, Windows Server 2008 and Windows 7…”  

    In short, as detailed in this document, the core Visual Basic 6.0 runtime will be supported for the full lifetime of Windows Vista, Windows Server 2008 and Windows 7, which is five years of mainstream support followed by five years of extended support (http://support.microsoft.com/gp/lifepolicy).

    We need to understand certain things here. I want to provide certain excerpts out of this Support statement. In general, Visual Basic 6.0 is made up of these key deliverables:

    · Visual Basic 6.0 IDE [Integrated Development Environment]
    · Visual Basic 6.0 Runtime -- the base libraries and execution engine used to run VB 6.0 applications
    · Visual Basic 6.0 Runtime Extended Files – select ActiveX control OCX files, libraries, and tools shipping with the IDE media and as an online release

    The Visual Basic 6.0 IDE

    The Visual Basic 6.0 IDE will be supported on Windows Vista and Windows Server 2008 as part of the Visual Basic 6.0 Extended Support policy until April 8, 2008.  Both the Windows and Visual Basic teams tested the Visual Basic 6.0 IDE on Windows Vista and Windows Server 2008.  This announcement does not change the support policy for the IDE.

    The Visual Basic 6.0 Runtime

    The Visual Basic 6.0 runtime is defined as the compiled binary files originally included in the redistribution list for Visual Basic 6.0.  These files were marked as distributable in the original Visual Basic 6.0 license.  Examples of these files include the Visual Basic 6.0 runtime library (msvbvm60.dll), controls (i.e. msflxgrd.ocx) along with runtime support files for other major functional areas (i.e. MDAC).     

    The runtime is divided into the three groups:

    · Supported Runtime Files – Shipping in the OS: Key Visual Basic 6.0 runtime files, used in the majority of application scenarios, are shipping in and supported for the lifetime of Windows Vista, or Windows Server 2008, or Windows 7. This lifetime is five years of mainstream support and five years of extended support from the time that a given version of Windows ships.  These files have been tested for compatibility as part of our testing of Visual Basic 6.0 applications running on Windows Vista.  Note: the list of files shipping in Windows Vista, Windows Server 2008, Windows 7, and Windows XP are nearly identical and redist requirements for applications should be nearly identical.  One key difference is TriEdit.dll was removed from Windows Vista and later versions.  

    · Supported Runtime Files – Extended Files to Distribute with your application: extended list of key controls, libraries, and tools that are installed from the IDE media or from Microsoft.com to the developer machine.  Typically the VB6 IDE installed these controls to the developer machine by default.  The developer still needs to redistribute these files with the application.  The supported version of the files is available online on the Microsoft Download Center (http://go.microsoft.com/fwlink/?LinkID=142927).

    · Unsupported Runtime Files: Some files have either fallen out of mainstream support or they were never included as a part of the runtime redist (e.g. they were included in \Tools folder on the IDE media to support legacy VB4/VB5 applications or they were 3rd party controls).  These files are not supported on Windows Vista or Windows Server 2008; instead they are subject to whatever support agreement applies to the media they were shipped with.  These files have been tested to work on Vista as part of our application compatibility and testing process, but this implies no warranties around support and servicing.  In some instances, later versions of these libraries are supported.  Details on backward compatibility or migration to supported versions are provided below.

    The Visual Basic 6.0 runtime has been tested for compatibility between Windows XP and Windows Vista / Windows Server 2008/Windows 7 with a goal that applications work similarly on these operating systems.  As with any release of the operating system, there may be differences in functionality that will require modifications to your applications.  These differences will be addressed on a case-by-case basis via normal support channels.  Any issues that are found will be documented on the Visual Basic Support site (http://msdn2.microsoft.com/en-us/vbasic/ms789193.aspx).  

    For specific details on the files included in each support group see the “Runtime Definition” section below.

    Visual Basic 6.0 Support Lifetime

    Supporting and/or shipping Visual Basic 6.0 runtime binaries on Windows Vista/Windows Server 2008/Windows 7 does not change the support policy for the Visual Basic 6.0 IDE or Visual Studio 6.0 IDE as a whole.  Those products will move out of extended support in April 8, 2008.

    Further details on the support policy for the Visual Basic 6.0 and Visual Studio 6.0 products can be found at http://msdn2.microsoft.com/en-us/vstudio/aa718686.aspx.     Details on the support lifecycle of Microsoft products can be found at http://support.microsoft.com/gp/lifepolicy.   As a part of this support lifecycle, Microsoft will continue to support the Visual Basic 6.0 runtime on Windows NT 4.0, Windows 2000, Windows XP and Windows Server 2003 for the support lifetime of those operating systems.  This means, for example, that the Visual Basic 6.0 runtime will be supported on Windows Server 2003 until June, 2008 for Mainstream Support and June, 2013 for Extended Support.

    For more details on the support lifecycle or to find out about additional support options, please visit our support page at http://www.microsoft.com/support

    64-Bit Windows

    Visual Basic 6.0 runtime files are 32-bit.  These files ship in 64-bit Windows Operating Systems referenced in the table below.  32-bit VB6 applications and components are supported in the WOW emulation environment only.  32-bit components must also be hosted in 32-bit application processes.

    The Visual Basic 6.0 IDE has never been offered in a native 64-bit version, nor has the 32-bit IDE been supported on 64-bit Windows.  VB6 development on 64-bit Windows is not and will not be supported.

    Windows 7

    Since the initial release of this support statement, the Windows 7 operating system has been announced.  This document has been updated to clarify Microsoft’s support for VB6 on Windows 7.

    VB6 runtime will ship and will be supported in Windows 7 for the lifetime of the OS.  Developers can think of the support story for Vista being the same as it is for Windows 7.  However there are no plans to include VB6 runtime in future versions of Windows beyond Windows 7.

    Supported Windows Operating System Versions

    This section provides additional information regarding the operating systems that offer some level of support for VB6. 

    Windows Operating System

     

    Has support?

     

    VB6 Supported Runtime - Files Shipping in Windows

     

    VB6 Supported Runtime – Extended Files to Distribute with Your Application

     

    VB6 IDE

     

    Windows 7, all 32bit editions

     

    Yes *

     

    Yes *

     

    Yes*, Extended support until April 2008, Custom Support after April 2008

     

    Windows 7, all 64bit editions

     

    Yes*
    32bit apps running in WOW only

     

    Yes*
    32bit apps running in WOW only

     

    No

     

    Windows Vista, all  32bit editions

     

    Yes*

     

    Yes*

     

    Yes*, Extended support until April 2008, Custom Support after April 2008

     

    Windows Vista, all x64 editions

     

    Yes*

     

    32bit apps running in WOW only

     

    Yes*

     

    32bit apps running in WOW only

     

    No

     

    Windows Server 2008, all 32bit editions including R2

     

    Yes*

     

    Yes*

     

    Yes*, Extended support until April 2008, Custom Support after April 2008

     

    Windows Server 2008, all x64 editions including R2

     

    Yes*

     

    32bit apps running in WOW only

     

    Yes*

     

    32bit apps running in WOW only

     

    No

     

    Windows XP, all 32bit editions

     

    Yes*

     

    Yes*

     

    Yes*, Extended support until April 2008, Custom Support after April 2008

     

    Windows XP, all x64 editions

     

    Yes*

     

    32bit apps running in WOW only

     

    Yes*

     

    32bit apps running in WOW only

     

    No

     

    Windows 2003 server, all 32bit editions including R2

     

    Yes*

     

    Yes*

     

    Yes*, Extended support until April 2008, Custom Support after April 2008

     

    Windows 2003 server. all x64 editions including R2

     

    Yes*

     

    32bit apps running in WOW only

     

    Yes*

     

    32bit apps running in WOW only

     

    No

     

    Windows 2000 Professional, all editions

     

    Yes*

     

    Yes*

     

    Yes*, Extended support until April 2008, Custom Support after April 2008

     

    Windows 2000 Server, all editions

     

    Yes*

     

    Yes*

     

    Yes*, Extended support until April 2008, Custom Support after April 2008

     

    * VB6 runtime support is limited by the OS support lifecycle.  E.g. if the target OS is in Extended support, VB6 cannot have a higher level of support than Extended support.  

    Visual Basic 6.0 Runtime Usage Inside VBA and Office

    Visual Basic for Applications, or VBA, is a distinct technology commonly used for application automation and macros inside of other applications, most commonly inside Microsoft Office applications.  VBA ships as a part of Office and therefore the support for VBA is governed by the support policy of Office.  However, there are situations where VBA is used to call or host Visual Basic 6.0 runtime binaries and controls.  In these situations, Visual Basic 6.0 supported runtime files in the OS and the extended file list are also supported when used inside of a supported VBA environment.

    For VB6 runtime scenarios to be supported inside VBA, all of the following must be true:

    · The host OS version for VB runtime is still supported

    · The host version of Office for VBA is still supported

    · The runtime files in question are still supported

    Visual Basic Script (VBScript)

    VBScript is unrelated to Visual Basic 6.0 and this support statement.  However, VBScript is currently shipping as a part Windows Vista, Windows Server 2008 and Windows 7 and is governed by the OS support lifecycle.   

    Third Party Components

    Microsoft is unable to provide support for third party components, such as OCX/ActiveX controls.  Customers are encouraged to contact the original control vendor for details on support for those components.

    Reporting Issues with VB 6.0 Application Running on Windows Vista, and Windows 7

    Developers planning to use Visual Basic 6.0 with Windows Vista should install Windows Vista and begin application compatibility testing using original application acceptance testing.

    If you find an issue with your Visual Basic 6.0 application running on Windows Vista or Windows 7 (where the same code worked as expected on Windows XP), please follow your normal support channels to report the issue.

    Supported and Shipping in Windows Vista, Windows Server 2008, and Windows 7

    atl.dll
    asycfilt.dll
    comcat.dll
    compobj.dll
    dbnmpntw.dll
    dcomcnfg.exe
    dllhost.exe
    ds16gt.dll
    ds32gt.dll
    expsrv.dll
    hh.exe
    hhctrl.ocx
    imagehlp.dll
    iprop.dll
    itircl.dll
    itss.dll
    mfc40.dll
    mfc42.dll
    mfc42enu.dll
    msadce.dll
    msadcer.dll
    msadcf.dll
    msadcfr.dll
    msadco.dll

    msadcor.dll
    msadcs.dll
    msadds.dll
    msaddsr.dll
    msader15.dll
    msado15.dll
    msador15.dll
    msadrh15.dll
    mscpxl32.dll
    msdadc.dll
    msdaenum.dll
    msdaer.dll
    msdaora.dll
    msdaosp.dll
    msdaprst.dll
    msdaps.dll
    msdasc.dll
    msdasql.dll
    msdasqlr.dll
    msdatsrc.tlb
    msdatt.dll
    msdfmap.dll
    msdfmap.ini
    msjtes40.dll

    msorcl32.dll
    msvbvm60.dll
    msvcirt.dll
    msvcrt.dll
    msvcrt40.dll
    mtxdm.dll
    mtxoci.dll
    odbc16gt.dll
    odbc32.dll
    odbc32gt.dll
    odbcad32.exe
    odbccp32.cpl
    odbccp32.dll
    odbccr32.dll
    odbccu32.dll
    odbcint.dll
    odbcji32.dll
    odbcjt32.dll
    odbctrac.dll
    oddbse32.dll
    odexl32.dll
    odfox32.dll
    odpdx32.dll
    odtext32.dll

    ole2.dll
    ole32.dll
    oleaut32.dll
    oleaut32.dll
    oledb32.dll
    oledb32r.dll
    oledlg.dll
    olepro32.dll
    olethk32.dll
    regsvr32.exe
    rpcns4.dll
    rpcrt4.dll
    scrrun.dll
    secur32.dll
    simpdata.tlb
    sqloledb.dll
    sqlsrv32.dll
    stdole2.tlb
    stdole32.tlb
    storage.dll
    vbajet32.dll
    vfpodbc.dll

    Supported Runtime Files to Distribute with Your Application

    comct232.ocx
    comct332.ocx
    comctl32.ocx
    comdlg32.ocx
    dbadapt.dll
    dbgrid32.ocx
    dblist32.ocx
    mci32.ocx
    msadodc.ocx

    msbind.dll
    mscdrun.dll
    mschrt20.ocx
    mscomct2.ocx
    mscomctl.ocx
    mscomm32.ocx
    msdatgrd.ocx
    msdatlst.ocx
    msdatrep.ocx

    msdbrptr.dll
    msflxgrd.ocx
    mshflxgd.ocx
    mshtmpgr.dll
    msinet.ocx
    msmapi32.ocx
    msmask32.ocx
    msrdc20.ocx
    msrdo20.dll

    msstdfmt.dll
    msstkprp.dll
    mswcrun.dll
    mswinsck.ocx
    picclp32.ocx
    richtx32.ocx
    sysinfo.ocx
    tabctl32.ocx

    Unsupported, But Supported and Compatible Updates or Upgrades are Available

    dao350.dll
    mdac_typ.exe
    mschart.ocx
    msdaerr.dll
    msdatl2.dll

    msexch35.dll
    msexcl35.dll
    msjet35.dll
    msjint35.dll
    msjt4jlt.dll

    msjter35.dll
    msjtor35.dll
    msltus35.dll
    mspdox35.dll
    msrd2x35.dll

    msrepl35.dll
    mstext35.dll
    msxbse35.dll
    odbctl32.dll
    oledb32x.dll

    Unsupported Runtime Files

    anibtn32.ocx
    graph32.ocx
    keysta32.ocx
    autmgr32.exe
    autprx32.dll
    racmgr32.exe
    racreg32.dll
    grid32.ocx
    msoutl32.ocx

    spin32.ocx
    gauge32.ocx
    gswdll32.dll
    ciscnfg.exe
    olecnv32.dll
    rpcltc1.dll
    rpcltc5.dll
    rpcltccm.dll
    rpclts5.dll

    rpcltscm.dll
    rpcmqcl.dll
    rpcmqsvr.dll
    rpcss.exe
    dbmsshrn.dll
    dbmssocn.dll
    windbver.exe
    msderun.dll
    odkob32.dll

    rdocurs.dll
    vbar332.dll
    visdata.exe
    vsdbflex.srg
    threed32.ocx
    MSWLess.ocx
    tlbinf32.dll
    triedit.dll

    Localization Support Binaries

    The following binaries are necessary for supporting Visual Basic 6.0 applications running on localized versions of the Vista and Windows 7 operating system.  They are supported but are not shipped in Vista.  These files are required to be shipped with your application setup.

    Supported Runtime Files to Distribute with Your Application

    JPN

    KOR

    CHT

    CHS

    mfc42jpn.dll
    scrrnjp.dll
    vb6jp.dll
    cmct2jp.dll
    cmct3jp.dll
    mscc2jp.dll
    cmctljp.dll
    cmdlgjp.dll
    mscmcjp.dll
    dbgrdjp.dll
    dblstjp.dll
    mcijp.dll
    msadnjp.dll
    adodcjp.dll
    mschtjp.dll
    msch2jp.dll
    mscomjp.dll
    datgdjp.dll
    datlsjp.dll
    datrpjp.dll
    dbrprjp.dll
    flxgdjp.dll
    mshfgjpn.dll
    htmprjp.dll
    inetjp.dll
    msmpijp.dll
    msmskjp.dll
    rdc20jp.dll
    rdo20jp.dll
    stdftjp.dll
    mswcrjp.dll
    winskjp.dll
    pcclpjp.dll
    rchtxjp.dll
    sysinjp.dll
    tabctjp.dll

    mfc42kor.dll
    scrrnko.dll
    vb6ko.dll
    cmct2ko.dll
    cmct3ko.dll
    mscc2ko.dll
    cmctlko.dll
    cmdlgko.dll
    mscmcko.dll
    dbgrdko.dll
    dblstko.dll
    mciko.dll
    msadnko.dll
    adodcko.dll
    mschtko.dll
    msch2ko.dll
    mscomko.dll
    datgdko.dll
    datlsko.dll
    datrpko.dll
    dbrprko.dll
    flxgdko.dll
    mshfgkor.dll
    htmprko.dll
    inetko.dll
    msmpiko.dll
    msmskko.dll
    rdc20ko.dll
    rdo20ko.dll
    stdftko.dll
    mswcrko.dll
    winskko.dll
    pcclpko.dll
    rchtxko.dll
    sysinko.dll
    tabctko.dll

    mfc42cht.dll
    scrrncht.dll
    vb6cht.dll
    cmct2cht.dll
    cmct3cht.dll
    mscc2cht.dll
    cmctlcht.dll
    mscmccht.dll
    cmdlgcht.dll
    dbgrdcht.dll
    dblstcht.dll
    mcicht.dll
    msadncht.dll
    adodccht.dll
    mschtcht.dll
    msch2cht.dll
    mscomcht.dll
    datgdcht.dll
    datlscht.dll
    datrpcht.dll
    dbrprcht.dll
    flxgdcht.dll
    mshfgcht.dll
    htmprcht.dll
    inetcht.dll
    msmpicht.dll
    msmskcht.dll
    rdc20cht.dll
    rdo20cht.dll
    stdftcht.dll
    mswcrcht.dll
    winskcht.dll
    pcclpcht.dll
    rchtxcht.dll
    sysincht.dll
    tabctcht.dll

    mfc42chs.dll
    scrrnchs.dll
    vb6chs.dll
    cmct2chs.dll
    mscc2chs.dll
    cmct3chs.dll
    cmctlchs.dll
    mscmcchs.dll
    cmdlgchs.dll
    dbgrdchs.dll
    dblstchs.dll
    mcichs.dll
    msadnchs.dll
    adodcchs.dll
    mschtchs.dll
    msch2chs.dll
    mscomchs.dll
    datgdchs.dll
    datlschs.dll
    datrpchs.dll
    dbrprchs.dll
    flxgdchs.dll
    mshfgchs.dll
    htmprchs.dll
    inetchs.dll
    msmpichs.dll
    msmskchs.dll
    rdc20chs.dll
    rdo20chs.dll
    stdftchs.dll
    mswcrchs.dll
    winskchs.dll
    pcclpchs.dll
    rchtxchs.dll
    sysinchs.dll
    tabctchs.dll


    ITA

    FRA

    ESP

    DEU

    mfc42ita.dll
    scrrnit.dll
    vb6it.dll
    cmct2it.dll
    mscc2it.dll
    cmct3it.dll
    cmctlit.dll
    mscmcit.dll
    cmdlgit.dll
    dbgrdit.dll
    dblstit.dll
    mciit.dll
    msadnit.dll
    adodcit.dll
    mschtit.dll
    msch2it.dll
    mscomit.dll
    datgdit.dll
    datlsit.dll
    datrpit.dll
    dbrprit.dll
    flxgdit.dll
    mshfgit.dll
    htmprit.dll
    inetit.dll
    msmpiit.dll
    msmskit.dll
    rdc20it.dll
    rdo20it.dll
    stdftit.dll
    mswcrit.dll
    winskit.dll
    pcclpit.dll
    rchtxit.dll
    sysinit.dll
    tabctit.dll

    mfc42fra.dll
    scrrnfr.dll
    vb6fr.dll
    cmct2fr.dll
    mscc2fr.dll
    cmct3fr.dll
    cmctlfr.dll
    mscmcfr.dll
    cmdlgfr.dll
    dbgrdfr.dll
    dblstfr.dll
    mcifr.dll
    msadnfr.dll
    adodcfr.dll
    mschtfr.dll
    msch2fr.dll
    mscomfr.dll
    datgdfr.dll
    datlsfr.dll
    datrpfr.dll
    dbrprfr.dll
    flxgdfr.dll
    mshfgfr.dll
    htmprfr.dll
    inetfr.dll
    msmpifr.dll
    msmskfr.dll
    rdc20fr.dll
    rdo20fr.dll
    stdftfr.dll
    mswcrfr.dll
    winskfr.dll
    pcclpfr.dll
    rchtxfr.dll
    sysinfr.dll
    tabctfr.dll

    mfc42esp.dll
    scrrnes.dll
    vb6es.dll
    cmct2es.dll
    mscc2es.dll
    cmct3es.dll
    cmctles.dll
    mscmces.dll
    cmdlges.dll
    dbgrdes.dll
    dblstes.dll
    mcies.dll
    msadnes.dll
    adodces.dll
    mschtes.dll
    msch2es.dll
    mscomes.dll
    datgdes.dll
    datlses.dll
    datrpes.dll
    dbrpres.dll
    flxgdes.dll
    mshfges.dll
    htmpres.dll
    inetes.dll
    msmpies.dll
    msmskes.dll
    rdc20es.dll
    rdo20es.dll
    stdftes.dll
    mswcres.dll
    winskes.dll
    pcclpes.dll
    rchtxes.dll
    sysines.dll
    tabctes.dll

    mfc42deu.dll
    scrrnde.dll
    vb6de.dll
    cmct2de.dll
    mscc2de.dll
    cmct3de.dll
    cmctlde.dll
    mscmcde.dll
    cmdlgde.dll
    dbgrdde.dll
    dblstde.dll
    mcide.dll
    msadnde.dll
    adodcde.dll
    mschtde.dll
    msch2de.dll
    mscomde.dll
    datgdde.dll
    datlsde.dll
    datrpde.dll
    dbrprde.dll
    flxgdde.dll
    mshfgde.dll
    htmprde.dll
    inetde.dll
    msmpide.dll
    msmskde.dll
    rdc20de.dll
    rdo20de.dll
    stdftde.dll
    mswcrde.dll
    winskde.dll
    pcclpde.dll
    rchtxde.dll
    sysinde.dll
    tabctde.dll

    Hope this helps.

  • Le Café Central de DeVa

    Outlook 2007 : How to obtain Proxy addresses using Outlook Object Model (for an ExchangeUser Object)?

    • 0 Comments

    Earlier i had a requirement, how to obtain Proxy addresses for a specific user programmatically'; also they preferred to do this by using Outlook Object Model API.

    Please Note:

    • The ExchangeUser object does not directly expose the proxy addresses for the user.
    • However, you can use the PropertyAccessor object to obtain the MAPI property PR_EMS_AB_PROXY_ADDRESSES.
    • This property is a multi-valued string property that contains all the foreign addresses for a given user.

    Here is a simple code snippet, which returns an array of strings containing the proxy addresses for the ExchangeUser object passed as a method argument.

    private string[] GetProxyAddresses(Outlook.ExchangeUser exchUser) 
    { 
        const string PR_EMS_AB_PROXY_ADDRESSES = "http://schemas.microsoft.com/mapi/proptag/0x800F101E"; 
        if (exchUser != null) 
        { 
            return exchUser.PropertyAccessor.GetProperty( 
                PR_EMS_AB_PROXY_ADDRESSES) as string[]; 
        } 
        else 
        { 
            throw new ArgumentNullException(); 
        } 
    }

    Hope this helps.

  • Le Café Central de DeVa

    Outlook Object Model : How to programmatically get logged-in user’s CompanyName in Outlook 2003/2007?

    • 0 Comments

    Recently one of my customer updated that they have a requirement to implement the following logic:

    1) Get Contact info from GAL or Address book for the specified contact
    2) Get Contact information regarding his CompanyName etc.

    In the scenario, i provided the following suggestions:

    If you try Outlook 2003 & its prior versions: Using the Microsoft Outlook object model, you can access information that is stored in various address books. For example, you can retrieve information about entries in the Global Address Book, or an Outlook Address Book. But if you want to access additional entries that are typically available for a recipient (such as Office, Title or Phone) you can use the Collaboration Data Objects (CDO) object model.

    You can try like this CDO code snippet… This code fragment compares the Address property of the Recipient object with the Address and Type properties of its child AddressEntry object, accessible through the recipients AddressEntry property, to demonstrate the relationships between these properties.

        If objOneRecip Is Nothing Then
            MsgBox "must select a recipient"
            Exit Function
        End If
        Set objAddrEntry = objOneRecip.AddressEntry
        If objAddrEntry Is Nothing Then
            MsgBox "no valid AddressEntry for this recipient"
            Exit Function
        End If
     
     
        strMsg = "Recipient full address = " & objOneRecip.Address
        strMsg = strMsg & "; AddressEntry type = " & objAddrEntry.Type
        strMsg = strMsg & "; AddressEntry address = " & objAddrEntry.Address
        MsgBox strMsg ' compare display names
        strMsg = "Recipient name = " & objOneRecip.Name
        strMsg = strMsg & "; AddressEntry name = " & objAddrEntry.Name
     
     

    For more information about accessing these properties using CDO and detailed information, please see the following articles in the Microsoft Knowledge Base:

    HOWTO: Read Address Book Properties in Visual Basic
    http://support.microsoft.com/kb/179083/EN-US/

    HOWTO: Work with Distribution Lists Using CDO from VB
    http://support.microsoft.com/kb/178787/EN-US/

    Note: CDO 1.2x/MAPI are not supported in a .NET Framework environment. Refer: http://support.microsoft.com/kb/813349

    If you work with Outlook 2007 and later, then you can try using ExchangeUser Object. This object provides first-class access to properties applicable to Exchange users. You can also access other properties specific to the Exchange user that are not exposed in the object model through the PropertyAccessor object.

    I tried the VBA code sample and obtain the CompanyName.

    Sub GetUserCompany()
     
        Dim oExUser As Outlook.ExchangeUser
     
        'Obtain the AddressEntry for CurrentUser
        Set oExUser = Application.Session.CurrentUser.AddressEntry.GetExchangeUser
     
        MsgBox oExUser.CompanyName
     
     End Sub

    You need to note that, “some of the explicit built-in properties are read-write properties. Setting these properties requires the code to be running under an appropriate Exchange administrator account; without sufficient permissions, calling the ExchangeUser.Update method will result in a "permission denied" error.”

    Hope this helps!! Happy programming & happy holidays!!

  • Le Café Central de DeVa

    Outlook Custom form : Creating a message class when customizing form pages

    • 0 Comments
    In the Publish Form As dialog box, when you type a name in the Display name field, you will notice that the Form name field reflects the display name by default. You can leave the form name to be the same as the display name or you can change the form name. The display name will be the caption at the top of your form. The display name will also be used to construct the name under which your form will be published. When you publish your form, the display name will be listed in the Choose Form dialog box.

    Outlook automatically constructs a message class for the form by preceding the form name with IPM. For instance, if you publish a mail message form that you want to name "MyForm", in the Display name field, type: This is my Form. In the Form name field, type: MyForm. At the bottom of the dialog box, Outlook will display the message class for your new form as: IPM.Note.MyForm.

    When you search in the Choose Form dialog box, you will see "This is my Form" displayed in the list. If you select it, the Display name field at the bottom of the dialog box will display, "This is my Form" and the Form name field will display, "MyForm".

    A message class, which is generated automatically by Outlook from the form name, is assigned to the form. When a form with that message class is selected, Outlook loads and displays an instance of that form. Outlook will use the message class, IPM.Note.MyForm, to locate the form with the display name, "This is my Form".

    Please note:

    • The message class is an internal identifier used by Microsoft Office Outlook and Microsoft Exchange to locate and activate a form .
    • The message class property corresponds to the MAPI property PR_MESSAGE_CLASS.
    • This class property determines which receiving folder the message should be routed to and which form should be activated to view the message.
  • Le Café Central de DeVa

    Non-Dev : How to disable “Reply to all” button in Outlook 2007 using ADM templates?

    • 0 Comments

    Take a scenario,  there are some email messages where recipients shouldn’t be allowed to ‘Reply to all’ or something important to block “Reply All” feature to get replies from a big distribution list (DL). I found that there is a way in Outlook 2007 to disable the option and prevent users from using it.I tried disabling “Reply to all” button for the email items in Outlook 2007 using ADM templates (non-developer perspective).

    I used the following steps to get things done:

    • Download the admin templates from http://www.microsoft.com/downloads/details.aspx?FamilyId=92D8519A-E143-4AEE-8F7A-E4BBAEBA13E7&displaylang=en
    • Extract the templates into a directory
    • Modify the outlk12.adm file with the following changes
    • Goto line 2459 (KEYNAME Software\Policies\Microsoft\Office\12.0\Outlook\Security
    • Move the line VALUENAME PromoteErrorsAsWarnings below this line (it should located under VALUEOFF NUMERIC 0 which causes an error when Group Policy reads the file)
    • Find the line CATEGORY !!L_Disableitemsinuserinterface
    • Add the following lines immediately after that line (this will add the ability to disable the Reply to All button)
    • POLICY "Disable command bar buttons and menu items"
      KEYNAME Software\Policies\Microsoft\Office\12.0\Outlook\DisabledCmdBarItemsList
             PART "Enter a command bar ID to disable" LISTBOX
             VALUEPREFIX TCID
             END PART
             END POLICY
    • Create a GPO
    • Add the outlk12.adm template
    • Browse to Microsoft Office Outlook 2007\Disable items in user interface
    • Open the Properties for Disable command bar buttons and menu items image
    • Enable this object and select “Apply” and “OK”. The "state" of the policy should now show as Enabled.
    • Click the Show button and Add 355
    • You will be returned to the Show Contents page which should now resemble the following. Click OK.
  • Le Café Central de DeVa

    General Info : Common Messaging Formats

    • 0 Comments

    For most organizations, e-mail messaging has become an increasingly important mode of communication. However, not all organizations use the same type of messaging systems. In this blog post, we will see the format of e-mail message and some of the common messaging formats used.

    Format of an e-mail message

    Internet e-mail messages follow the format standards that are defined in RFC 2822. A message is made up of header fields and a body. The header fields are collectively named the "header" of the message. The body of the message is optional. A message can be sent without a body, but not without a header.

    The header contains a sequence of lines of characters that have a special syntax, as defined in the RFC 2822 format standard. The body contains a sequence of characters that follow the header and that are separated from the header by an empty line (that is, a line that has nothing before the Carriage Return and Line Feed [CRLF]).

    Header fields are lines that are composed of a field name followed by a colon (:), followed by a field body, and ended by a CRLF. A field name must be composed of printable US-ASCII characters (that is, characters that have values between 33 and 126, inclusive), except the colon. The colon is used as a separation character.

    A field body may be composed of any US-ASCII characters, except for the CRLF. However, a field body may contain a CRLF when used in header folding and unfolding. Folding is when, for convenience, a single line appears on multiple lines. Unfolding is the reverse of this. All field bodies must follow the syntax described in sections 3 and 4 of the RFC 2822 format standard.

    The body of the message may include one or more sections. Each body section is separated by a boundary. The boundary parameter is a text string that begins with two hyphens (—).

    Now lets see some of the common messaging formats used…

    Plain text

    A plain text message is the most accepted form of messaging format. All e-mail message readers can display text messages in plain text format. However, plain text messages cannot display colors, different fonts, or emphasis such as bold or italic text.

    image

    Rich Text Format (RTF)

    Exchange 2000 uses RTF messaging for messages that are delivered between Microsoft Outlook users. RTF displays colors, fonts, and formatting. However, RTF is only readable by Outlook. Exchange 2003 RTF format is different from the RTF format that is used in a word processor program such as Microsoft Word.

    Note If a recipient receives a file attachment named Winmail.dat in their e-mail, that domain has an RTF incompatibility issue. To work around this issue, you must configure a rule that makes sure that messages that are sent to that domain do not use RTF format.

    image

    HTML format

    HTML mail is a recent implementation that makes it possible to display rich content in a message. When you use the HTML mail format, the message is sent as an HTML page, complete with tags to change the appearance of the text. The recipient's e-mail client program then formats and displays the HTML. The major issue with HTML text is that not all e-mail client programs support HTML text. If the HTML e-mail message is not displayed correctly, the message can become unreadable.

    image

    Plain text and HTML
    Exchange 2003 can send messages to external domains as both plain text and HTML. This format appears correctly on both types of client. However, the messages become two times as large and processing takes longer. You may be able to view both the plain text and the HTML in the replies to the message. This behavior frequently occurs in discussion groups where people have posted messages by using both plain text and HTML.
    MIME and uuencode
    MIME and user-to-user encoding (uuencode) are two different methods of sending binary attachments with messages. Early e-mail client programs used uuencode as the default message format. However, most current e-mail client programs support MIME. You may have to communicate with a domain that continues to use uuencode. In this scenario, you can configure a rule to deliver messages to that domain using the uuencode format.
    Message text word wrapping
    Although this format is not strictly an e-mail messaging format, some earlier versions of e-mail messaging clients require that a line break is placed after the seventy-sixth or seventy-seventh character. If you do not perform this procedure, those clients can only view the first 76 characters of each line. As a result, large portions of the message may not appear.
  • Le Café Central de DeVa

    How i can specify e-mail format using Microsoft Office Outlook 2007 and its previous versions?

    • 0 Comments
    How to specify e-mail format in Microsoft Office Outlook 2007?
    Global Change
    Follow these steps to turn off TNEF:
    1. On the Tools menu, click Options.
    2. Click the Mail Format tab.
    3. In the Compose in this message format box, click Plain Text or HTML, and then click OK.
    Follow these steps to send in TNEF:
    1. On the Tools menu, click Options, and then click the Mail Format tab.
    2. In the Compose in this message format box, click Rich Text, and then click OK.

    How to specify e-mail format in Microsoft Office Outlook 2003 and earlier versions of Outlook

    Global Change
    Follow these steps to turn off TNEF:
    1. On the Tools menu, click Options, and then click the Mail Format tab.
    2. In the Send in this message format box, click Plain Text or HTML, and then click OK.
    Follow these steps to send in TNEF:
    1. On the Tools menu, click Options, and then click the Mail Format tab.
    2. In the Send in this message format box, click to select Microsoft Outlook Rich Text Format, and then click OK.
    Per Recipient Change
    In the Contacts Folder
    Follow these steps to turn off TNEF:
    1. Open the recipient's record in the Contacts folder.
    2. Double-click the recipient's e-mail address.
    3. Choose Send Plain Text only in the Internet Format box.
    Follow these steps to send in TNEF:
    1. Open the recipient's record in the Contacts folder.
    2. Double-click the recipient's e-mail address.
    3. Click Send Using Outlook Rich Text Format in the Internet Format box.
    In the Personal Address Book
    Note Personal Address Books (.pab) can no longer be created or used in Outlook 2007.
    Use the following steps to turn off TNEF:
    1. Locate the recipient in the Personal Address Book.
    2. Double-click the recipient's e-mail address.
    3. Click to clear the Always send to this recipient in Microsoft Exchange Rich Text Format check box, and then click OK.
    Use the following steps to send in TNEF:
    1. Locate the recipient in the Personal Address Book.
    2. Double-click the recipient's e-mail address.
    3. Click to select the Always send to this recipient in Microsoft Exchange Rich Text Format check box, and then click OK.
    Per message change in Outlook 2007
    Use the following steps to turn off TNEF:
    1. Open a new mail message, or click Reply on a received message.
    2. On the Options tab, click HTML or Plain Text.
    Use the following steps to turn on TNEF:
    1. Open a new mail message, or click Reply on a received message.
    2. On the Options tab, click Rich Text.
    Per message change in Outlook 2003 and earlier versions of Outlook
    Use the following steps to turn off TNEF.
    1. Open a New mail message, or click Reply on a recently received message.
    2. On the Mail Format toolbar, click to select Plain Text or HTML from the dropdown menu.
    Use the following steps to turn on TNEF.
    1. Open a New mail message, or click Reply on a recently received message.
    2. On the Mail Format toolbar, click to select Rich Text from the dropdown menu.
  • Le Café Central de DeVa

    Custom forms deployment : Where we can publish Outlook Custom forms?

    • 1 Comments

    In Outlook, custom forms are typically published to a forms library so that only one copy of a form is stored on your computer. Individual items contain a Message Class field that indicates which form to use to display the data that is contained in the item. When you publish custom forms to a forms library, Microsoft Exchange Server-based computers and Outlook use considerably less resources and bandwidth because the form itself does not need to be stored within each individual item.

    Considerations When You Are Deciding Where to Publish a Form:

    There are many questions to take into account when you are deciding where to publish a form:

    • Is the form based on a folder solution, or is it an e-mail message form that is designed to be sent to recipients?
    • Are you using an Exchange Server-based computer? If you are using an Exchange Server-based computer, is it possible to publish the form to the Organizational Forms Library, or has your organization placed restrictions on what types of forms can be stored there?
    • How many people need access to the form?
    • Will the form be updated often, making it important to have only one copy of the form deployed centrally?
    • Does the form need to be available offline?
    • If this is an e-mail message form, will it be used only inside the organization, or will it be sent to other recipients outside of the organization?
    • How will the new form be opened?

    Where we can publish?

    Now we can see where we can publish these custom forms.

    Outlook forms solutions can vary greatly, especially because Outlook has a number of different types of standard forms. It is often difficult to determine the best place to publish a form, and there are many factors to take into account when you make the decision. Forms can be published to three locations:
    (1) A folder (or Folder Forms Library)
    (2) Organizational Forms Library
    (3) Personal Forms Library

    We’ll discuss them in detail and how these three makes differences:

    (1) A folder (or Folder Forms Library):

    • For most folder-based forms solutions, publish the form to the folder so that it is available whenever someone is using the folder.
    • If you publish the form in a public folder, the form is available to everyone who can access the folder.
    • If you publish the form to one of your personal folders, it is available only to you when you are using that folder.
    • Contact, Post, Task, and Journal forms are examples of the types of forms that are typically associated with a folder.
    • One advantage to publishing a form to a folder is that the form is available on the Actions menu when you are in the folder.

    (2) Organizational Forms Library:

    • Publish the form to this library if you want to make the form available to everyone in your organization, such as a form to report vacation time.
    • This library is often used for e-mail message forms because they are typically not based on a specific folder.
    • You can publish a form to the Organizational Forms Library when you want to use the same custom form in more than one folder.
    • When you do this, you can maintain only a single published form.
    • Forms that are published to this library are accessible to everyone in the organization as long as they are given permissions to the library by the administrator.
    • The library is stored on the Microsoft Exchange Server-based computer.
    • The administrator must give you permissions to publish to the Organizational Forms Library.
    • This permission is typically given to only a few individuals or a department that manages the Exchange Server-based computer.

    (3) Personal Forms Library:

    • Forms that are saved in this library are only accessible to you.
    • When you publish a form to the Personal Forms Library, the form is stored as a hidden item in the root folder of your mailbox or Personal Folders (.pst) file, whichever is your default mail delivery location.
    • Like forms that are stored in the Organizational Forms Library, these forms can be opened by using the Choose Form command.
    • Save a form to this library when you create a form for your own personal use, such as a standard e-mail message form that is pre-addressed to recipients.

    Please note: It is also possible to store an Outlook form as a file in the file system or as an item in an Outlook folder. Microsoft recommends that you to avoid these approaches, because the form will be a one-off form.

    image

    Deciding Where to Publish Folder-based Forms:
    • When you create a folder-based solution where the primary focus of the form is to display the items in a single folder, typically publish the form to the folder itself.
    • When you publish the form to the folder, the folder is a self-contained entity and the form is available on the Actions menu.
    • However, there are scenarios where you may not want to publish a typical folder-based form to a folder.
    • If you use a form in more than one folder, and each folder always uses the same version of the form, consider publishing the form into either the Organizational Forms Library or the Personal Forms Library. When you do this, there is only one copy of the published form and it is easier to update if you need to make changes.
    • If you are the only person who needs access to this form, publish the form in Personal Forms Library.
    • If other people need to access to the form, and the form is typical in a public folder on an Exchange Server-based computer, investigate whether or not you may be able to publish the form to the Organizational Forms Library.
    • Note: One potential disadvantage to this approach is that the form will not be available under the Actions menu unless it is published to the folder. However, if it is the default form for the folder, as is typically the case, this will not make too much of a difference because you or the users can use a toolbar button to open new items.
    Deciding Where to Publish Message-based Forms
    • If the form is based on an e-mail message and it is used by you and only a couple of other users, publish the form to the Personal Forms Library for all of the users. However, if you are going to create new items based on this form, you may want to publish it to your Inbox so that you can access it on the Actions menu.
    • If the form is going to be used by many people within an organization, publish it in the Organizational Forms Library so that there is only one copy of the form to maintain and all of the users have access to it. This approach, however, can make the form more difficult to open.
  • Le Café Central de DeVa

    Windows 7 Best Practices : Can i control IT costs in difficult times?

    • 1 Comments

    Control IT costs in difficult times

    More now than ever, companies are under intense pressure to reduce costs while increasing efficiencies. Whether it’s reducing overall IT budgets or determining automated ways to deploy, track, and manage, the need for a better managed IT infrastructure is present and growing. An optimized desktop can help you save money in the short term and the long term.

    Short-term cost savings

    Short-term savings are benefits generally seen in a minimal length of time (less than six-nine months). Here are three cost-saving steps you can take today that are part of the five desktop optimization best practices.

    1. Standardize hardware: By standardizing desktop hardware and software, organizations can ultimately advance toward a more flexible, agile, and optimized infrastructure. Ad hoc PC purchases—often driven by price, or by departmental end-user preferences—can prove much more costly to an organization.

    2. Standardize software image and management: The next step is to standardize the software image to save costs. According to IDC, image management accounts for 20-25 percent of operating system deployment costs, and can cost organizations on average $25-$35 per PC annually.

    3. Manage network, directory, and group policy management: To keep IT labor costs down and to keep end users productive, many IT departments are turning to a greater use of automation and more centralized configuration and policy setting. They are seeking the ability to remotely monitor and maintain the health of the organization's PCs.

    To learn more about short-term cost savings, download this white paper. Or, learn how Getronics upgraded their operating system for reduced IT costs.

    Long-term cost savings

    After an organization has experienced success employing projects to achieve short-term cost savings, it looks to savings opportunities that extend beyond a year. These long-term best practices, while less immediate in impact, are crucial for substantial improvements in effectiveness and efficiencies down the road. Here are three cost-saving steps you can take tomorrow and are part of the five desktop optimization best practices.

    1. Fleet deployment by role: Understanding PC lifecycle costs leads to better fleet strategy decisions, such as prioritization of investments and optimal configuration choices. For example, an average desktop PC and monitor, left on, will consume $400 electricity over a four-year lifecycle. This cost can be significantly reduced by standardizing power management configuration of the PC operating system.

    2. Group-based image configuration: By enabling greater automation and increasing efficiency, a standardized software image helps reduce costs for deployment, image management, and ongoing patches and updates.

    3. Full automation with remote support: Your organization can streamline PC management through the use of effective tools for remote monitoring and support. This setup can increase uptime and reduce the costs of IT support. With a more controlled desktop environment and faster problem resolution, end users benefit from fewer disruptions and greater productivity in their jobs.

    To learn more about short-term cost savings, download this white paper.

  • Le Café Central de DeVa

    How to create recurring tasks using Exchange Web Services for Exchange 2007/2010?

    • 0 Comments
    Earlier i got a chance to play around creating recurring tasks. I followed the article from MSDN and it worked like charm for me.

    public TaskType CreateRecurringTask()
    {
        // Create the task item and set property values.
        TaskType task = new TaskType();
        task.Subject = "Recurring Task";
        task.Body = new BodyType();
        task.Body.BodyType1 = BodyTypeType.Text;
        task.Body.Value = "Occurs every week";
        task.StartDate = DateTime.Now;
        task.StartDateSpecified = true;
     
        // Create the regeneration pattern.
        WeeklyRegeneratingPatternType regenerationPattern = new WeeklyRegeneratingPatternType();
        regenerationPattern.Interval = 1;
     
        // Define the recurrence pattern.
        NoEndRecurrenceRangeType recurrenceRange = new NoEndRecurrenceRangeType();
        recurrenceRange.StartDate = task.StartDate;
     
        // Set the regeneration and recurrence patterns.
        TaskRecurrenceType recurrence = new TaskRecurrenceType();
        recurrence.Item = regenerationPattern;
        recurrence.Item1 = recurrenceRange;
     
        task.Recurrence = recurrence;
     
        // Create the request to make a new task item.
        CreateItemType createItemRequest = new CreateItemType();
        createItemRequest.Items = new NonEmptyArrayOfAllItemsType();
        createItemRequest.Items.Items = new ItemType[1];
        createItemRequest.Items.Items[0] = task;
     
        // Send the request and receive the response.
        CreateItemResponseType createItemResponse = this.Service.CreateItem(createItemRequest);
     
        // Access a response message.
        ItemInfoResponseMessageType responseMessage = createItemResponse.ResponseMessages.Items[0] as ItemInfoResponseMessageType;
     
        // Return the new task item.
        return responseMessage.Items.Items[0] as TaskType;
    }
     
    public ExchangeServiceBinding Service
    {
        get
        {
            if (this.service == null)
            {
                this.service = new ExchangeServiceBinding();
                this.service.Credentials = new NetworkCredential(
                    this.UserName,
                    this.Password,
                    this.Domain);
                this.service.Url = this.Url; 
     
                // Set the request version.
                this.service.RequestServerVersionValue = new RequestServerVersion();
                this.service.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1;
     
                // Specify the time zone for the DateTime properties of tasks.
                TimeZoneDefinitionType tzdt = new TimeZoneDefinitionType();
                tzdt.Id = "Eastern Standard Time";
                TimeZoneContextType tzct = new TimeZoneContextType();
                tzct.TimeZoneDefinition = tzdt;
                this.service.TimeZoneContext = tzct;
            }
            return this.service;
        }
    }
Page 1 of 1 (10 items)