Hi
with referene to your mail below :
Must be an interop issue, though it works on my machine.
When i print the type of the return value of the
Getnamespace method it is as follows
Console.WriteLine((l_objOutlookApp.GetNamespace
("mapi")).GetType());
// Prints "Outlook.NameSpaceClass"
So try out the following
1.
//Comment the original assignment statement
//Add the following modified line
//Outlook.NameSpace l_objOutlookNamespace =
l_objOutlookApp.GetNamespace("mapi");
Outlook.NameSpaceClass l_objOutlookNamespace =
(Outlook.NameSpaceClass) l_objOutlookApp.GetNamespace
("mapi");//watch out for line wraps.
2.
//Comment the original assignment statement
//Outlook.NameSpace l_objOutlookNamespace =
l_objOutlookApp.GetNamespace("mapi");
//Add the following modified line
Outlook.NameSpaceClass l_objOutlookNamespace =
(Outlook.NameSpaceClass) l_objOutlookApp.GetNamespace
("mapi"); //watch out for line wraps.
let me know if this also gives problems...Also once the
l_objOutlookApp is initialized, check the value of the obj
var in the watch window.
The funny part is why is the queryinterface for the
outlook._Application failing??? Im able to see this in
the ILDASM of my interop assembly. If possible mail me the
interop assembly of the Outlook that is created(zipped) so
that i can use ILDASM to check it out
would appreciate any comments from others also
regards,
sr
regards,
sr
[color=blue]
>From: "Fritz Switzer" <fritz.switzer@abletfactory.com>
>To: <rs_tiin@hotmail.com>
>Subject: Outlook Contacts code
>Date: Wed, 13 Aug 2003 13:45:52 -0500
>
>SR,
>
>Thanks for the code sample. It looks very close and I[/color]
really appreciate the[color=blue]
>effort.
>
>The word wrap was a problem but I think I got everything[/color]
cleared up. But[color=blue]
>
>I am getting an exception on the NameSpace call: Here is[/color]
the error.[color=blue]
>
>An unhandled exception of[/color]
type 'System.InvalidCastException' occurred in[color=blue]
>Dummy_PullOutlookContactsFromCSharp.exe
>
>Additional information: QueryInterface for interface[/color]
Outlook._Application[color=blue]
>failed.
>
>It is right on this line:
>
> Outlook.NameSpace l_objOutlookNamespace =
>l_objOutlookApp.GetNamespace("mapi");
>
>I am running Outlook 2000.
>
>I set my reference to MSOUTL9.OLB and using Outlook;
>
>Any thoughts?
>
>TIA
>
>Fritz
>
>
>
><< winmail.dat >>[/color]
[color=blue]
>-----Original Message-----
>SR,
>
>Great reply.
>
>Thanks, that looks like exactly what I need. I'll give[/color]
it a try.[color=blue]
>
>Fritz
>
>
>
>--
>Fritz Switzer
>View my Ink Blog at:
>
www.abletFactory.com
>
>
>
>SR wrote:[color=green]
>> Hi Fritz
>>
>> thought ill give it a go and here u are.. It will loop
>> thru ur outlook app and print the info of each contact
>> item.
>>
>> Pls note the following
>>
>> a) the code is in C# as u require it
>>
>> b) i set reference in vs.net to the Outlook 2000 library
>> (C:\Program Files\Microsoft Office\Office\MSOUTL9.OLB)[/color][/color]
as[color=blue][color=green]
>> i dont have Outlook XP. At code level there should not[/color][/color]
be[color=blue][color=green]
>> any problem if u refer to the XP libraries(unless MS has
>> changed some basic interfaces. If u do not use VS.Net[/color][/color]
and[color=blue][color=green]
>> want to do a tlb, check for a similar file in ur office
>> folder.
>>
>>
>> c) Watch out for linewraps. if the code gets wrapped
>> (warped :) ) in this post, then mail me at
>>
rs_tiin@hotmail.com and would be happy to send u the[/color][/color]
code[color=blue][color=green]
>> in a VS.Net solution format(zipped)
>>
>> Here is the code
>>
>>
>> using System;
>> using Outlook;
>>
>> namespace Dummy_PullOutlookContactsFromCSharp
>> {
>> /// <summary>
>> /// Summary description for Class1.
>> /// </summary>
>> class Class1
>> {
>> /// <summary>
>> /// The main entry point for the
>> application.
>> /// </summary>
>> [STAThread]
>> static void Main(string[] args)
>> {
>> //
>> // TODO: Add code to start
>> application here
>> //
>> OutlookClient
>> l_objOutClient=new OutlookClient();
>>
>> l_objOutClient.fnPrintOutlookContactsInfo();
>>
>> }
>> }
>>
>> class OutlookClient
>> {
>> public void fnPrintOutlookContactsInfo()
>> {
>>
>> Outlook.Application
>> l_objOutlookApp =new Outlook.Application();
>> Outlook.MAPIFolder cContacts;
>> Outlook.Items l_objContactItems;
>> Outlook.ContactItem
>> l_objContactItem;
>> int l_intContactItemCtr ;
>>
>> // Get NameSpace.
>> Outlook.NameSpace
>> l_objOutlookNamespace = l_objOutlookApp.GetNamespace
>> ("mapi");
>>
>> // Logon. If an outlook app is
>> already open, then it will reuse that session. Else
>> // it will perform a fresh
>> logon. Note that if u have psts and passwords for the
>> // same, u need to enter the
>> passwords in the dialogbox when they are shown
>> l_objOutlookNamespace.Logon
>> ("SR", "", true, true);
>>
>> // Get all the Contacts Folder
>> cContacts =
>> l_objOutlookNamespace.GetDefaultFolder
>> (Outlook.OlDefaultFolders.olFolderContacts);
>>
>> //get all the COntacts from the
>> Contacts Folder
>> l_objContactItems =
>> cContacts.Items;
>>
>> try
>> {
>> for
>>[/color][/color]
(l_intContactItemCtr=1;l_intContactItemCtr<=l_objC ontactIte[color=blue][color=green]
>> ms.Count;l_intContactItemCtr++)
>> {
>> l_objContactItem =
>> (Outlook.ContactItem)l_objContactItems.Item
>> (l_intContactItemCtr);
>> // Display some
>> common properties.
>> print("------------
>> -------------------------------------------------");
>> print("Information
>> for Contact #" + l_intContactItemCtr + " of Total[/color][/color]
Contacts[color=blue][color=green]
>> #" + l_objContactItems.Count);
>> print("------------
>> -------------------------------------------------");
>>
>> print("Full
>> Name : " + l_objContactItem.FullName);
>> print("Title : "
>> + l_objContactItem.Title);
>> print
>> ("BirthDay : " + l_objContactItem.Birthday);
>> print
>> ("CompanyName : " + l_objContactItem.CompanyName);
>> print
>> ("Department : " + l_objContactItem.Department);
>> print("Body : " +
>> l_objContactItem.Body);
>> print("FileAs : "
>> + l_objContactItem.FileAs);
>> print
>> ("Email1Address : " + l_objContactItem.Email1Address);
>> print
>> ("BusinessHomePage : " +
>> l_objContactItem.BusinessHomePage);
>> print
>> ("MailingAddress : " +[/color][/color]
l_objContactItem.MailingAddress);[color=blue][color=green]
>> print
>> ("BusinessAddress : " +[/color][/color]
l_objContactItem.BusinessAddress);[color=blue][color=green]
>> print
>> ("OfficeLocation : " +[/color][/color]
l_objContactItem.OfficeLocation);[color=blue][color=green]
>> print
>> ("Subject : " + l_objContactItem.Subject);
>> print
>> ("JobTitle : " + l_objContactItem.JobTitle);
>> print("------------
>> -------------------------------------------------");
>> Console.WriteLine
>> ("");
>> // If you want the
>> contact to be displayed, then uncomment the line below
>> // After each item
>> info is printed, the contact window will be shown and
>> // only on closing
>> that window, will the next contact be shown
>> //l_objContactItem.Display(true);
>> }
>>
>>
>>
>> }
>> catch(System.Exception
>> p_objException)
>> {
>> print("Error : " +
>> p_objException.Message);
>> }
>> finally
>> {
>>
>> Console.Write("");
>> Console.Write("Press Enter
>> to quit application");
>> Console.ReadLine ();
>> Console.Write("");
>> Console.Write("Logging off
>> and Closing Outlook Application. This will take a
>> moment.Pls wait...");
>>
>> // Log off.
>>
>> l_objOutlookNamespace.Logoff();
>>
>> // Clean up.
>> l_objOutlookApp = null;
>> l_objOutlookNamespace =
>> null;
>> l_objContactItems = null;
>> l_objContactItem = null;
>>
>> }
>>
>>
>> }
>>
>>
>> public void print(object o)
>> {
>> if(o != null && o.ToString
>> ()!="")
>> {
>> Console.WriteLine
>> (o);
>> }
>> }
>>
>> }
>> }
>>
>>
>>
>> hth
>>
>> regards,
>>
>> sr[color=darkred]
>>> -----Original Message-----
>>> Can anyone provide a small snippet in C# that pulls[/color][/color][/color]
out the Contacts[color=blue][color=green][color=darkred]
>>> in Outlook XP.
>>>
>>> I've seen a couple of examples in C++ and VB in[/color][/color][/color]
previous newsgroup[color=blue][color=green][color=darkred]
>>> posts, but either the originals didn't work or my[/color][/color][/color]
conversion skills[color=blue][color=green][color=darkred]
>>> are weak. And if I have to use tlbimp.exe what is the[/color][/color][/color]
right file to[color=blue][color=green][color=darkred]
>>> use.
>>>
>>> Thanks for the help.
>>> --
>>> Fritz
>>>
>>>
>>> .[/color][/color]
>
>
>.
>[/color]