Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podsumowanie
Ten artykuł zawiera szczegółowy przykład tworzenia aplikacji programu Microsoft Visual Studio 2010, która automatyzuje Microsoft Outlook 2010 i korzysta z języka C++ wraz z klasami Microsoft Foundation Classes (MFC).
Więcej informacji
W tym artykule opisano sposób tworzenia projektu programu Visual Studio 2010, który automatyzuje działanie programu Outlook w następujący sposób:
- Tworzenie i zapisywanie kontaktu
- Tworzenie i zapisywanie terminu
- Tworzenie i wysyłanie wiadomości e-mail
Mimo że można zaimplementować wszystkie poniższe sekcje, możesz również pominąć jedną lub dwie z tych sekcji, aby utworzyć tylko jeden lub dwa rodzaje elementów.
Uwaga
We wszystkich poniższych przykładach kodu przyjęto założenie, że ścieżki plików są przeznaczone dla 32-bitowego systemu operacyjnego. Upewnij się, że wprowadzono wszelkie niezbędne zmiany w ścieżce, aby były one prawidłowe dla danego systemu operacyjnego i konfiguracji. Ponadto kod tworzy elementy programu Outlook, które zawierają fikcyjne informacje, i zawiera fikcyjny adres e-mail. Upewnij się, że adres e-mail został zmieniony na jeden z prawidłowych adresów e-mail na potrzeby testowania.
Krok 1. Tworzenie projektu
- Uruchom program Visual Studio 2010.
- Kliknij pozycję Plik, kliknij pozycję Nowy, a następnie kliknij pozycję Projekt. Na liście zainstalowanych szablonów rozwiń węzeł C++, wybierz pozycję MFC, a następnie wybierz pozycję Projekt aplikacji MFC . Nadaj projektowi nazwę AutomateOutlookWithMFC, a następnie kliknij przycisk OK.
- Po uruchomieniu Kreatora aplikacji MFC kliknij przycisk Dalej.
- W Kreatorze aplikacji MFC pozostaw wartości domyślne z wyjątkiem sekcji Typ aplikacji . W tej sekcji wybierz pozycję Oparte na oknie dialogowym.
- Kliknij przycisk Zakończ , aby ukończyć pracę Kreatora aplikacji MFC.
Krok 2. Dołączanie biblioteki obiektów pakietu Microsoft Office 14.0
W oknie Eksplorator rozwiązań otwórz plik stdafx.h.
Na końcu pliku dodaj następujący wiersz. Upewnij się, że ścieżka jest odpowiednia dla określonego systemu operacyjnego i konfiguracji:
#import "C:\\Program Files\\Common Files\\microsoft shared\\OFFICE14\\mso.dll" no_namespace rename("RGB", "MsoRGB") exclude("IAccessible")
Uwaga Ten wiersz kieruje midl do utworzenia pliku nagłówka bez interfejsu IAccessible, aby uniknąć potencjalnych błędów ponownego definiowania. Każdy plik klasy wymaga tego odwołania. W związku z tym jest on uwzględniony w pliku nagłówka stdafx.h.
Krok 3. Tworzenie obiektu aplikacji programu Outlook
W oknie Eksplorator rozwiązań wybierz plik AutomateOutlookWithMFCDlg.cpp.
Kliknij menu Projekt , a następnie kliknij pozycję Kreator klas.
Kliknij strzałkę w dół na przycisku Dodaj klasę , a następnie kliknij pozycję Klasa MFC z klasy TypeLib.
W obszarze Dostępne biblioteki typów wybierz pozycję Biblioteka obiektów programu Microsoft Outlook 14.0.
Na liście Interfejsy kliknij pozycję _Application.
Kliknij przycisk strzałki w prawo, aby dodać _Application do listy wygenerowanych klas.
Kliknij przycisk Zakończ , aby wygenerować klasę, a następnie kliknij przycisk OK , aby zamknąć Kreatora klas.
Otwórz nowo utworzony plik nagłówka CApplication.h. Znajdź ten wiersz:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace
Zastąp wiersz znajdujący się w kroku 8 następującym:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace rename("Folder", "OlkFolder") rename("CopyFile", "OlkCopyFile") rename("GetOrganizer", "GetOrganizerAE")
Otwórz plik AutomateOutlookWithMFCDlg.cpp , a następnie dodaj następujące elementy do listy instrukcji #include:
#include "CApplication.h"
Krok 4. Dodawanie przycisku do projektu
Przejdź do okna dialogowego.
Użyj przybornika kontrolki, aby dodać przycisk do okna dialogowego.
Aby dodać procedurę obsługi przycisku, kliknij dwukrotnie przycisk i znajdź ten wiersz:
// TODO: Add your control notification handler code here
Zastąp wiersz znajdujący się w kroku 3 następującym kodem:
CApplication olApp; COleException e; if (!olApp.CreateDispatch(_T("Outlook.Application"), &e)) { CString strErr; strErr.Format(_T("CreateDispatch() failed w/error 0x%08lx"), e.m_sc); AfxMessageBox(strErr, MB_SETFOREGROUND); return; }
Krok 5. Tworzenie obiektu przestrzeni nazw programu Outlook
W menu Project (Projekt ) kliknij pozycję Kreator klas.
Kliknij strzałkę w dół na przycisku Dodaj klasę , a następnie kliknij pozycję Klasa MFC z typelib.
W obszarze Dostępne biblioteki typów wybierz pozycję Biblioteka obiektów programu Microsoft Outlook 14.0.
Na liście Interfejsy kliknij pozycję _Namespace.
Kliknij przycisk strzałki w prawo, aby dodać _Namespace do listy wygenerowanych klas.
Kliknij przycisk Zakończ , aby wygenerować klasę, a następnie kliknij przycisk OK , aby zamknąć Kreatora klas.
Otwórz nowo utworzony plik nagłówka CNamespace.h. Znajdź ten wiersz:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace
Zastąp wiersz znajdujący się w kroku 7 następującym:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace rename("Folder", "OlkFolder") rename("CopyFile", "OlkCopyFile") rename("GetOrganizer", "GetOrganizerAE")
Przejdź do pliku AutomateOutlookWithMFCDlg.cpp i dodaj następujące elementy do listy instrukcji #include:
#include "CNamespace.h"
W funkcji AutomateOutlookWithMFCDlg::OnBnClickedButton1() (kod obsługi przycisku) dodaj ten kod po ostatnim wierszu:
// Logon. Doesn't hurt if you are already running and logged on... CNameSpace olNs(olApp.GetNamespace(_T("MAPI"))); COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); olNs.Logon(covOptional, covOptional, covOptional, covOptional);
Krok 6. Tworzenie i zapisywanie elementu ContactItem
W menu Project (Projekt ) kliknij pozycję Kreator klas.
Kliknij strzałkę w dół na przycisku Dodaj klasę , a następnie kliknij pozycję Klasa MFC z typelib.
W obszarze Dostępne biblioteki typów wybierz pozycję Biblioteka obiektów programu Microsoft Outlook 14.0.
Na liście Interfejsy kliknij pozycję _ContactItem.
Kliknij przycisk strzałki w prawo, aby dodać _ContactItem do listy wygenerowanych klas.
Kliknij przycisk Zakończ , aby wygenerować klasę, a następnie kliknij przycisk OK , aby zamknąć Kreatora klas.
Otwórz nowo utworzony plik nagłówka CContactItem.h. Znajdź ten wiersz:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace
Zastąp wiersz znajdujący się w kroku 7 następującym:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace rename("Folder", "OlkFolder") rename("CopyFile", "OlkCopyFile") rename("GetOrganizer", "GetOrganizerAE")
Przejdź do pliku AutomateOutlookWithMFCDlg.cpp , a następnie dodaj następujące elementy do listy instrukcji #include:
#include "CContactItem.h"
W funkcji AutomateOutlookWithMFCDlg::OnBnClickedButton1() (kod obsługi przycisku) dodaj ten kod po ostatnim wierszu:
// Create and open a new contact CContactItem olContactItem(olApp.CreateItem(olContactItem)); olContactItem.put_FullName(_T("John Doe")); COleDateTime bdDate; bdDate.SetDate(1975, 9, 15); olContactItem.put_Birthday(bdDate); olContactItem.put_CompanyName(_T("Microsoft")); olContactItem.put_HomeTelephoneNumber(_T("KL5-555-1234")); olContactItem.put_Email1Address(_T("john.doe@microsoft.com")); olContactItem.put_HomeAddress(_T("123 Main Street.\nAnytown, WA 12345")); // Save the contact olContactItem.Save();
Krok 7. Tworzenie i zapisywanie elementu AppointmentItem
W menu Project (Projekt ) kliknij pozycję Kreator klas.
Kliknij strzałkę w dół na przycisku Dodaj klasę , a następnie kliknij pozycję Klasa MFC z typelib.
W obszarze Dostępne biblioteki typów wybierz pozycję Biblioteka obiektów programu Microsoft Outlook 14.0.
Na liście Interfejsy kliknij pozycję _AppointmentItem.
Kliknij przycisk strzałki w prawo, aby dodać _AppointmentItem do listy wygenerowanych klas.
Kliknij przycisk Zakończ , aby wygenerować klasę, a następnie kliknij przycisk OK , aby zamknąć Kreatora klas.
Otwórz nowo utworzony plik nagłówka CAppointmentItem.h. Znajdź ten wiersz:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace
Zastąp wiersz znajdujący się w kroku 7 następującym:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace rename("Folder", "OlkFolder") rename("CopyFile", "OlkCopyFile") rename("GetOrganizer", "GetOrganizerAE")
Przejdź do pliku AutomateOutlookWithMFCDlg.cpp i dodaj następujące elementy do listy instrukcji #include:
#include "CAppointmentItem.h"
W funkcji AutomateOutlookWithMFCDlg::OnBnClickedButton1() (kod obsługi przycisku) dodaj ten kod po ostatnim wierszu:
// Create a new appointment CAppointmentItem olApptItem(olApp.CreateItem(olAppointmentItem)); COleDateTime apptDate = COleDateTime::GetCurrentTime(); // Set the Start time to occur 2 minutes from now apptDate += DATE(2.0/(24.0*60.0)); olApptItem.put_Start(apptDate); // Set the duration to be 1 hour olApptItem.put_Duration(60); // Set other appointment info olApptItem.put_Subject(_T("Meeting discuss plans")); olApptItem.put_Body(_T("Meeting with John to discuss plans")); olApptItem.put_ReminderMinutesBeforeStart(1); olApptItem.put_ReminderSet(TRUE); // Save Apptointment olApptItem.Save();
Krok 8. Tworzenie i zapisywanie elementu MailItem
W menu Project (Projekt ) kliknij pozycję Kreator klas.
Kliknij strzałkę w dół na przycisku Dodaj klasę , a następnie kliknij pozycję Klasa MFC z typelib.
W obszarze Dostępne biblioteki typów wybierz pozycję Biblioteka obiektów programu Microsoft Outlook 14.0.
Na liście Interfejsy kliknij pozycję _MailItem.
Kliknij przycisk strzałki w prawo, aby dodać _MailItem do listy wygenerowanych klas.
Kliknij przycisk Zakończ , aby wygenerować klasę, a następnie kliknij przycisk OK , aby zamknąć Kreatora klas.
Otwórz nowo utworzony plik nagłówka CMailItem.h. Znajdź ten wiersz:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace
Zastąp wiersz znajdujący się w kroku 7 następującym:
#import "C:\\Program Files\\Microsoft Office\\Office14\\msoutl.olb" no_namespace rename("Folder", "OlkFolder") rename("CopyFile", "OlkCopyFile") rename("GetOrganizer", "GetOrganizerAE")
Przejdź do pliku AutomateOutlookWithMFCDlg.cpp i dodaj następujące elementy do listy instrukcji #include:
#include "CMailItem.h"
W funkcji AutomateOutlookWithMFCDlg::OnBnClickedButton1() (kod obsługi przycisku) dodaj ten kod po ostatnim wierszu:
// Prepare a new mail message CMailItem olMailItem(olApp.CreateItem(olMailItem)); olMailItem.put_To(_T("john.doe@microsoft.com")); olMailItem.put_Subject(_T("About our meeting...")); olMailItem.put_Body( _T("Hi John,\n\n") _T("\tI'll see you in two minutes for our meeting!\n\n") _T("btw: I've added you to my contact list!")); // Send the message olMailItem.Send(); AfxMessageBox(_T("All done."), MB_SETFOREGROUND);
Krok 9. Implementowanie kodu do wylogowania
W pliku AutomateOutlookWithMFCDlg.cpp dodaj następujący kod na końcu kodu procedury obsługi przycisku:
olNs.Logoff();
Krok 10. Kompilowanie i uruchamianie projektu
- W menu Kompilacja kliknij pozycję Kompiluj rozwiązanie. Upewnij się, że nie ma żadnych błędów kompilacji.
- Skompiluj i uruchom kod. Należy utworzyć i zapisać kontakt i termin, a następnie utworzyć i wysłać nową wiadomość e-mail.
Dodatkowe uwagi
Nazwy trzech metod są zmieniane, aby uniknąć potencjalnych konfliktów podczas kompilowania. Mimo że metody Folder i CopyFile generują ostrzeżenia, metoda GetOrganizer uniemożliwi kompilowanie projektu.
Metoda _Appointment::GetOrganizer zwraca wartość AddressEntry i została zmieniona na _Appointment::GetOrganizerAE. Nazwa tej metody została zmieniona, ponieważ _Appointment::Organizer jest właściwością w tym samym interfejsie, a duplikowanie powoduje konflikt. W takim przypadku midl tworzy funkcję pomocnika dla właściwości _Appointment::Organizer o nazwie _Appointment::GetOrganizer. W związku z tym funkcja pomocnika staje się przeciążoną metodą, która zwraca różne typy (na przykład BSTR* a AddressEntry*). Przeciążone metody różniące się tylko typem zwracanym są niedozwolone.