HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Beépülő menü készítése Word alkalmazáshoz


Példaprogram letöltése

19279 bájt

Cikkünkben az Office alkalmazáscsomag elemeihez létrehozható beépülő modulok (Add-in) világába kalandozunk. A .NET Framework segítségével ilyen modulokat minden eddiginél egyszerűbben készíthetünk. A mellékelt példában egy olyan modult készítünk el, mely a Word alkalmazás indulásakor betöltődik, és egy új menüpontot hoz létre a menüsorban, egy almenüvel.

A mellékelt példa használata előtt fordítsa le a forráskódot, majd a MenuAddinSetup projekt MenuAddinSetup.msi állományának elindításával telepítse a modult. Ezt követően indítsa el a Word alkalmazást.
Az elkészítendő modul tehát egy beépülő menü, amely egy almenüponttal rendelkezik. A menüpontra kattintva megnyitunk egy saját készítésű dialógus ablakot, melyben megjelennek az Outlook alkalmazásunk Névjegyalbumában megtalálható bejegyzések.
Beépülő modul
A beépülő modulok készítését a Visual Studio.NET-ben külön projekttípussal végezhetjük el. A típus az OTHER PROJECTS kategóriában, ezen belül is az EXTENSIBILITY PROJECTS alkategóriában található, neve Shared Add-in.
A létrehozást varázsló segíti. A létrehozott projektben egy Connect.cs állományban helyezhetjük el a menü létrehozásának kódját. A projekt mellett automatikusan generálódik egy telepítő projekt is, mely segíti a modul elhelyezését a COM komponensek közt, és elvégzi a szükséges regisztrációs bejegyzéseket.
A beépülő menü létrehozásához el kell helyeznünk egy referenciát a Microsoft.Office.Core névtérre, mert ebben találhatók a menüobjektumok deklarációi, valamint egy hivatkozást a Word alkalmazás komponensére, hogy el tudjuk érni a célalkalmazást.
A menüsor újabb pontjai CommandBarPopup típusú elemek, míg a menü alpontjainak típusa CommandBarButton.
A Connect osztályban deklarálunk mindkét típusból egyet, hiszen egy alpontot fogunk a menüben megjeleníteni. Szükségünk van továbbá egy példányra a Word alkalmazásból is.
public Microsoft.Office.Core.CommandBarPopup menuMain;
public Microsoft.Office.Core.CommandBarButton menuItem;
private Word.Application wa;
A menü felirata „Beépülő menü”, míg az alpont felirata „Outlook felhasználói” lesznek. A megvalósításhoz a következő lépéseket kell tennünk az OnStartupComplete függvénynél, mely akkor kerül meghívásra, amikor a Word már elindult és a modulunk betöltése után már létrejött a kapcsolat a két alkalmazás között.
public void OnStartupComplete(ref System.Array custom)
{
  CreateMenu();
}
A művelet elvégzését a CreateMenu metódusba ágyaztuk. Ehhez el kell érnünk azt a kollekciót, melyben az egyes objektumcsoportok találhatók. A kollekciókat a CommandBars osztály kezeli. Első lépés a metódusban, hogy példányosítjuk a Word.Application objektumot.
wa = (Word.Application)applicationObject;
Majd egy TRY-CATCH blokkban ellenőrizzük, hogy a létrehozandó menü nem jött-e létre már korábban, egy másik betöltődéskor.
try
{
menuMain = (Microsoft.Office.Core.CommandBarPopup)wa.CommandBars["Menu Bar"].Controls[mainText];
menuItem = (Microsoft.Office.Core.CommandBarButton)menuMain.Controls[itemText];
}
Ha nem jött létre, akkor a hivatkozás a menüpontra hibát eredményez, és a CATCH blokkban létrehozzuk azt. A CommandBars kollekcióból kiválasztjuk a menüsort („Menu Bar” hivatkozással), majd a Controls listába felvesszük az új menüpontot.
catch
{
  menuMain = (Microsoft.Office.Core.CommandBarPopup)wa.CommandBars["Menu Bar"].Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlPopup,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
  menuMain.Caption = mainText;
A menüpont alpontja esetében is ezt tesszük, csak itt már a létrehozott menüpont Controls gyűjteményéhez adjuk az elemet.
  menuItem = (Microsoft.Office.Core.CommandBarButton)menuMain.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlButton,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
  menuItem.Caption = itemText;
  ...
}
A lekérdezés, vagy létrehozás után a kód egy közös pontban folytatódhat. Itt beállítjuk a menüpont láthatóságát, majd megadjuk a gombra kattintás eseménykezelőjét.
menuMain.Visible = true;
menuItem.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(Button_Click);
A kezelőfüggvénynek speciális paraméterlistával kell rendelkeznie, az első paraméterben kérdezhető le a küldő menüpont.
private void Button_Click(Microsoft.Office.Core.CommandBarButton cmdBarbutton,ref bool cancel)
{
A gomb segítségével egyszerűen példányosítjuk a másik projektben elkészített űrlapunk osztályát, majd megjelenítjük azt. A Form ListBox kontrolja tartalmazza az Outlook névjegyalbumában található neveket, és azok e-mail címét.
  Form1 f = new Form1();
  f.ShowDialog();
A Form osztálya rendelkezik egy nyilvános taggal, mely a választott elem értékét tartalmazza, így a Form bezárása után is lekérdezhetjük értékét. Ha ez nem üres karakterlánc, vagyis történt választás, akkor beszúrjuk a karakterláncot a Word dokumentum aktuális kurzorpozíciójába.
  if (f.entry != "")
  {
    wa.Selection.TypeText(f.entry);
    wa.Selection.TypeParagraph();  
  }
  ...
Megjelenő ablak projektje
A Form kódjában el kell érnünk az Outlook alkalmazásunkat. Példányosítjuk az Outlook Application osztályát.
Outlook.Application oa = new Outlook.Application();
A MAPI névtérből kiválasztjuk a névjegyalbum bejegyzéseit tartalmazó mappát.
Outlook.NameSpace on = oa.GetNamespace("MAPI");
Outlook.MAPIFolder mf = on.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
Szükségünk van egy ContactItem objektumra is, hogy az egyes bejegyzések információit kinyerhessük.
Outlook.ContactItem ci = null;
Lekérdezzük a bejegyzéseket, majd az egyes névjegy-objektumok FullName és Email1Address property-jét elhelyezzük a ListBox kontrol egy sorában.
for (int i=1; i<=mf.Items.Count;i++)
{
  ci = (Outlook.ContactItem)mf.Items.Item(i);
  listBox1.Items.Add(ci.FullName + " " + ci.Email1Address);
}
A COM modulunk telepítése után ellenőrizzük, hogy a telepítő beállította-e a Windows regisztrációs adatbázisába az alábbi kulcsot és értéket:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins\MenuAddin.Connect
LoadBehavior 3
A telepítő futása után jelentkezzünk ki a rendszerből és újra be, majd ha ezt követően indítjuk a Word-öt, akkor a menüsorban már ott kell lennie az új menüpontnak is.

Cikksorozat

#IDKategóriaCikk címeSorozat
2591WindowsTippek és trükkök - RAS - Modem csengetési szám állítása1. rész
2622WindowsTippek és trükkök - Program futtatása más felhasználóként2. rész
2640WindowsA Windows ikonméretének megváltoztatása és Windows 2000 Asztaltémák3. rész
2657WindowsTippek és trükkök - Internet Explorer4. rész
2667WindowsTippek és trükkök5. rész
2684WindowsAlapértelmezések állítása, telepítési fájlok helye, intéző nézetek6. rész
2696WindowsBiztonsági trükkök7. rész
2702WindowsWindows XP trükkök8. rész
2729WindowsWindows 2000 és XP tippek, trükkök9. rész
2757WindowsRegistry trükkök10. rész
2784WindowsTippek, trükkök11. rész
2829WindowsTippek, trükkök12. rész
2889WindowsWindows XP tippek13. rész
2909WindowsTippek Windows XP-hez14. rész
2919WindowsWindows tippek15. rész
2924WindowsWindows tippek16. rész
2963WindowsWindows tippek17. rész
2973WindowsWindows Tippek18. rész
2981WindowsWindows tippek19. rész
2990WindowsTippek-trükkök20. rész
3027WindowsIIS tippek21. rész
3034WindowsWindows XP tippek-trükkök22. rész
3088WindowsWindows 2000/XP tippek, trükkök23. rész
3133WindowsWindows XP tippcsokor24. rész
3140WindowsWindows XP tippek, trükkök25. rész
3152WindowsXP és IIS tippek - trükkök26. rész
3158WindowsWindows XP tippek, trükkök27. rész
3168WindowsTippek, trükkök28. rész
3170WindowsRegistry trükkök29. rész
3179WindowsTippek, trükkök30. rész
3197WindowsWindows XP tippek, trükkök31. rész
3205WindowsTippek, trükkök32. rész
3214WindowsTippek, trükkök33. rész
3223WindowsTippek, trükkök34. rész
3233WindowsTippek, trükkök35. rész
3271WindowsTippek, trükkök36. rész
3307WindowsTippek, trükkök37. rész
3370WindowsTippek, trükkök38. rész
3399WindowsTippek, trükkök39. rész
3510WindowsTippek, trükkök40. rész
3611WindowsHardverrel kapcsolatos tippek, trükkök41. rész
3668WindowsRegistry trükkök42. rész
3711WindowsTippek, trükkök43. rész
3771WindowsTippek, trükkök44. rész
3801WindowsTippek, trükkök45. rész
3831WindowsTippek, trükkök46. rész
3891WindowsTippek, trükkök47. rész
3921WindowsTippek, trükkök48. rész
3981WindowsTippek, trükkök49. rész
4041WindowsTippek, trükkök50. rész
4071WindowsTippek, trükkök51. rész
4151WindowsTippek, trükkök52. rész
4171C#Tippek, trükkök53. rész
4211WindowsTippek, trükkök54. rész
4251WindowsTippek, trükkök55. rész
4281WindowsTippek, trükkök56. rész
3589DelphiTippek, trükkök57. rész
3718DelphiTippek, trükkök58. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 434. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |