Új alkalmazásunkhoz ne felejtsük el hozzáadni egy referenciát a Word-höz, mivel csak így érhetjük el annak szolgáltatásait. (Project - Add reference - COM - Microsoft Word)
Miután felvettük a kapcsolatot a Word alkalmazással, létrehozunk egy üres dokumentumot, mivel csak így tudjuk használni a szinonima szótárt.
private void button1_Click(object sender, System.EventArgs e)
{
listBox1.Items.Clear();
Word.Application wa = new Word.Application();
wa.Documents.Add(ref m, ref m, ref m, ref m);
A Word program objektumától lekérjük a szinonima információt a get_SynonymInfo függvény segítségével. Első paraméterként a kérdéses szót adjuk át, másodikként a magyar nyelv kódját, feltételezve, hogy a beírt szó is magyar én ennek szinonimáit keressük.
object lang = Word.WdLanguageID.wdHungarian;
Word.SynonymInfo si = wa.get_SynonymInfo(textBox1.Text, ref lang);
Ha a SynonymInfo által visszaadott objektum Found property-je igaz, akkor van szinonima találat.
Ha van találat, akkor egy kettős for ciklusra lesz szükségünk, hogy az összes szinonimát kiolvashassuk. Az első ciklus 1-től a talált jelentések számáig megy, amit a MeanigCount property árul el. Mivel egy szónak több jelentése is lehet, ezért van szükség a kettős ciklusra: először végigmegyünk az összes jelentésen, majd minden jelentésnél kiolvassuk a szinonimákat.
Array ml = (Array)si.MeaningList;
for (int i=1; i<si.MeaningCount; i++)
{
A második ciklus előtt lekérjük a SynonymInfo objektum adott csoportjának tömbjét, melynek minden egyes eleme egy-egy szinonimát tárol szövegként.
object o = i;
Array sl = (Array)si.get_SynonymList(ref o);
Most jöhet a második ciklus mely végigmegy az adott szó adott jelentéséhez tartozó szinonimákon.
listBox1.Items.Add(i.ToString()+". jelentése: "+ml.GetValue(i)+"; szinonimái:");
for (int j=1; j<sl.Length; j++)
{
listBox1.Items.Add("\t"+sl.GetValue(j));
}
}
}
Végül zárjuk a dokumentumot és a Word-öt.
wa.ActiveDocument.Close(ref m, ref m, ref m);
wa.Quit(ref m, ref m, ref m);
}