2009-05-05 6 views
5

के साथ Outlook प्रारंभ करें क्या मैं कोड में सी # प्रारंभ Outlook कर सकता हूं?सी #

VB6 में हम वस्तु 'Outlook.Application' और लिखने का उपयोग करें: 'लिंक से

Set oOutlook = CreateObject("Outlook.Application") 
Set oNameSpace = oOutlook.GetNamespace("MAPI") 
Set oInbox = oNameSpace.Folders(1) 
'Set oInbox = oInbox.Folders("Inbox") 
oInbox.Display 
'oOutlook.Quit 'Close All Outlook copies 

कॉपी/पेस्ट: http://www.ozgrid.com/forum/showthread.php?t=73886

उत्तर

4

तुम सिर्फ दृष्टिकोण प्रारंभ करना चाहते हैं; System.Diagnostics.Process का उपयोग करना सबसे आसान तरीका होगा। :)

+0

मुझे लगता है कि :) काम करेंगे। धन्यवाद! – jeje1983

+0

वास्तव में प्रश्न में कोड पर लागू नहीं होता है, लेकिन ठीक है –

7

System.Diagnostics.Process केवल एक प्रक्रिया शुरू करेगा।

फ़ोल्डर्स चुनने जैसी अतिरिक्त कार्रवाइयां करने के लिए, आपको Office (VSTO) के लिए Microsoft Visual Studio Tools का उपयोग करने की आवश्यकता है। और here यह संदर्भ है। उदाहरण के लिए:

var outlook = new Microsoft.Office.Interop.Outlook.ApplicationClass(); 
outlook.Quit(); 
+1

मुझे बताया गया है कि Office interop का उपयोग करते समय, XXXClass कक्षाओं का कभी भी उपयोग न करें। मुझे लगता है कि आप var दृष्टिकोण = नया माइक्रोसॉफ्ट.ऑफिस.इंटरोप.ऑटlook.एपप्लिकेशन(); – foson

+0

धन्यवाद! बहुत दिलचस्प राय। क्या आप जानते हैं - क्यों उपयोग नहीं करते? मेरे पास जटिल एक्सेल-टू-एक्सेल डेटा प्रोसेसिंग के साथ एक एप्लीकेशन है जहां एक्सेल के बहुत सारे अनुप्रयोग हैं। क्लास क्लासेस का उपयोग करते हैं। सब ठीक से काम करता है! इसके अलावा http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.application.aspx एक इंटरफ़ेस है, है ना? – abatishchev

+1

यदि Outlook पहले से चल रहा है तो एप्लिकेशन का उपयोग करना है लेकिन यह Outlook का एक नया उदाहरण नहीं बुलाएगा। मुझे एप्लिकेशन क्लास का उपयोग करना पड़ा जो या तो मौजूदा उदाहरण का उपयोग करेगा या यदि आवश्यक हो तो एक नया उदाहरण पेश करेगा। – Damien

4

आप प्रकार और उत्प्रेरक

Type objectType = Type.GetTypeFromProgID("Outlook.Application"); 
object outlook = Activator.CreateInstance(objectType); 

लेकिन सी # में इस का उपयोग करते हुए आप सभी प्रकार की जानकारी (यानी कोई IntelliSense) खो देंगे प्राप्त करने के लिए अपने ProgID इस्तेमाल कर सकते हैं और आप कॉल करने की आवश्यकता LateBinding (Type.Invoke के लिए google) के साथ ऑपरेशन का आह्वान करने के लिए कुछ बदसूरत विधि

अन्य विकल्प Microsoft.Office.Interop.Outlook.AplicationClass का संदर्भ जोड़ता है, इसलिए आपने टाइम प्रकार की जानकारी संकलित की है और Outlook के लिए एक उदाहरण बना दिया है सामान्य तरीके से

using Microsoft.Office.Interop.Outlook; 
Microsoft.Office.Interop.Outlook.ApplicationClass outlook 
    = new Microsoft.Office.Interop.Outlook.ApplicationClass(); 

या आप मेरी Late Binding Helper पुस्तकालय का उपयोग करें और इस

Invoker outlook = BindingFactory.CreateAutomationBinding("Outlook.Application"); 
outlook.Method("Quit").Invoke(); 

नहीं इस एक के साथ Intellisense की तरह उपयोग कर सकता है, लेकिन कम से कम पुस्तकालय Type.Invoke और देने के लिए बदसूरत कॉल से आप की बचत होगी आप इसके बजाय एक धाराप्रवाह इंटरफ़ेस।

0

यह काम करता है (कि तुम क्या यह मशीन है जिस पर एप्लिकेशन चलेंगे पर है करने के लिए पथ को बदलने के लिए हो सकता है):

public static void StartOutlookIfNotRunning() 
{ 
    string OutlookFilepath = @"C:\Program Files (x86)\Microsoft Office\Office12\OUTLOOK.EXE"; 
    if (Process.GetProcessesByName("OUTLOOK").Count() > 0) return; 
    Process process = new Process(); 
    process.StartInfo = new ProcessStartInfo(OutlookFilepath); 
    process.Start(); 
}