Le Café Central de Deva
... Deva blogs!!
I changed the way of blogging, developing, designing and assisting my customers. Re-designed the site and started using the latest Windows Live Writer!! Additionally added Microsoft Translator gadget available @ top of page, so that you can change the page in your preferred language!!
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
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.
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
VB6 Supported Runtime - Files Shipping in Windows
VB6 Supported Runtime – Extended Files to Distribute with Your Application
Windows 7, all 32bit editions
Yes*, Extended support until April 2008, Custom Support after April 2008
Windows 7, all 64bit editions
Yes* 32bit apps running in WOW only
Windows Vista, all 32bit editions
Windows Vista, all x64 editions
32bit apps running in WOW only
Windows Server 2008, all 32bit editions including R2
Windows Server 2008, all x64 editions including R2
Windows XP, all 32bit editions
Windows XP, all x64 editions
Windows 2003 server, all 32bit editions including R2
Windows 2003 server. all x64 editions including R2
Windows 2000 Professional, all editions
Windows 2000 Server, all editions
* 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.
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
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.
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.
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)
PR_EMS_AB_PROXY_ADDRESSES) as string;
throw new ArgumentNullException();
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 contact2) 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"
Set objAddrEntry = objOneRecip.AddressEntry
If objAddrEntry Is Nothing Then
MsgBox "no valid AddressEntry for this recipient"
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 Basichttp://support.microsoft.com/kb/179083/EN-US/
HOWTO: Work with Distribution Lists Using CDO from VBhttp://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.
Dim oExUser As Outlook.ExchangeUser
'Obtain the AddressEntry for CurrentUser
Set oExUser = Application.Session.CurrentUser.AddressEntry.GetExchangeUser
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!!
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".
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:
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…
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.
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.
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.
How to specify e-mail format in Microsoft Office Outlook 2003 and earlier versions of Outlook
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.
There are many questions to take into account when you are deciding where to publish a form:
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):
(2) Organizational Forms Library:
(3) Personal Forms Library:
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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;
createItemRequest.Items.Items = task;
// Send the request and receive the response.
CreateItemResponseType createItemResponse = this.Service.CreateItem(createItemRequest);
// Access a response message.
ItemInfoResponseMessageType responseMessage = createItemResponse.ResponseMessages.Items as ItemInfoResponseMessageType;
// Return the new task item.
return responseMessage.Items.Items as TaskType;
public ExchangeServiceBinding Service
if (this.service == null)
this.service = new ExchangeServiceBinding();
this.service.Credentials = new NetworkCredential(
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;