// OnMyButtonClick routine handles all button click events // and displays IRibbonControl.Context in message box //public void OnMyButtonClick(Office.IRibbonControl control) public void ButtonClicked(Office.IRibbonControl control) { String ContactName = ""; String numbers = ""; Outlook.ContactItem contactItem = null; //int handle = Win32.FindWindow(null, appName); if (true) // handle != 0 { try { if (control.Id == "outcallContacts") { Outlook.Explorer explorer = control.Context as Outlook.Explorer; Object item = explorer.Selection[1]; contactItem = item as Outlook.ContactItem; } else if (control.Id == "outcallMenuContact") { Outlook.Selection selection = control.Context as Outlook.Selection; OutlookItem olItem = new OutlookItem(selection[1]); Object item = new Object(); item = selection[1]; contactItem = item as Outlook.ContactItem; } else if (control.Id == "outcallMenuMail" || control.Id == "outcallMail") { Outlook.MailItem mailItem = null; Object item = null; List<string> accounts = new List<string>(); if (control.Id == "outcallMail") { Outlook.Explorer explorer = control.Context as Outlook.Explorer; item = explorer.Selection[1]; } else if (control.Id == "outcallMenuMail") { Outlook.Selection selection = control.Context as Outlook.Selection; OutlookItem olItem = new OutlookItem(selection[1]); item = new Object(); item = selection[1]; } mailItem = item as Outlook.MailItem; Outlook.Folder folder = mailItem.Parent as Outlook.Folder; Outlook.Folder contacts = (Outlook.Folder)folder.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); if (mailItem != null) { foreach (Outlook.Account account in folder.Session.Accounts) { accounts.Add(account.SmtpAddress); } bool isOut = false; if (mailItem.Sender == null) { isOut = true; } else if (accounts.Contains(mailItem.Sender.Address)) { isOut = true; } if (isOut) { Outlook.Recipients recipients = mailItem.Recipients; foreach (Outlook.Recipient recipient in recipients) { contactItem = recipient.AddressEntry.GetContact(); if (contactItem != null) break; } } else { contactItem = mailItem.Sender.GetContact(); } } } else { MessageBox.Show("The selected item is not supported. Please select a Contact or an Email."); } } catch (Exception e) { MessageBox.Show("Please select a contact."); return; } if (contactItem != null) { ContactName = contactItem.FullName; /*if (ContactName != "") { ContactName = contactItem.FirstName + " | " + contactItem.MiddleName + " | " + contactItem.LastName; } else { ContactName = contactItem.CompanyName; }*/ String strTemp = contactItem.AssistantTelephoneNumber; if (strTemp != null) numbers += "Assistant:" + strTemp + " | "; strTemp = contactItem.BusinessTelephoneNumber; if (strTemp != null) numbers += "Business:" + strTemp + " | "; strTemp = contactItem.Business2TelephoneNumber; if (strTemp != null) numbers += "Business2:" + strTemp + " | "; strTemp = contactItem.BusinessFaxNumber; if (strTemp != null) numbers += "Business Fax:" + strTemp + " | "; strTemp = contactItem.CallbackTelephoneNumber; if (strTemp != null) numbers += "Callback:" + strTemp + " | "; strTemp = contactItem.CarTelephoneNumber; if (strTemp != null) numbers += "Car:" + strTemp + " | "; strTemp = contactItem.CompanyMainTelephoneNumber; if (strTemp != null) numbers += "Company Main:" + strTemp + " | "; strTemp = contactItem.HomeTelephoneNumber; if (strTemp != null) numbers += "Home:" + strTemp + " | "; strTemp = contactItem.Home2TelephoneNumber; if (strTemp != null) numbers += "Home2:" + strTemp + " | "; strTemp = contactItem.HomeFaxNumber; if (strTemp != null) numbers += "Home Fax:" + strTemp + " | "; strTemp = contactItem.ISDNNumber; if (strTemp != null) numbers += "ISDN:" + strTemp + " | "; strTemp = contactItem.MobileTelephoneNumber; if (strTemp != null) numbers += "Mobile:" + strTemp + " | "; strTemp = contactItem.OtherTelephoneNumber; if (strTemp != null) numbers += "Other:" + strTemp + " | "; strTemp = contactItem.OtherFaxNumber; if (strTemp != null) numbers += "Other Fax:" + strTemp + " | "; strTemp = contactItem.PagerNumber; if (strTemp != null) numbers += "Pager:" + strTemp + " | "; strTemp = contactItem.PrimaryTelephoneNumber; if (strTemp != null) numbers += "Primary:" + strTemp + " | "; strTemp = contactItem.RadioTelephoneNumber; if (strTemp != null) numbers += "Radio:" + strTemp + " | "; strTemp = contactItem.TelexNumber; if (strTemp != null) numbers += "Telex:" + strTemp + " | "; strTemp = contactItem.TTYTDDTelephoneNumber; if (strTemp != null) numbers += "TTY/TDD:" + strTemp + " | "; } else { MessageBox.Show("Contact not found in your Address book."); return; } if (numbers == "") { MessageBox.Show("There are no phone numbers for the selected contact."); return; } String strDataToSend = "Dial#####" + ContactName + "#####" + numbers; strDataToSend = strDataToSend.Replace(" ", "&&&"); /*Win32.COPYDATASTRUCT cpd; cpd.dwData = IntPtr.Zero; cpd.cbData = strDataToSend.Length; cpd.lpData = strDataToSend; Win32.SendMessage(handle, WM_COPYDATA, 0, ref cpd);*/ RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Bicom Systems\\OutCALL"); string outcall_path = (string)key.GetValue("InstallDir"); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.UseShellExecute = false; startInfo.FileName = outcall_path + "\\" + appBinary; startInfo.WindowStyle = ProcessWindowStyle.Normal; startInfo.Arguments = strDataToSend; try { // Start the process with the info we specified. // Call WaitForExit and then the using statement will close. using (Process outcallProcess = Process.Start(startInfo)) { outcallProcess.WaitForExit(); } } catch { // Log error. Debug.WriteLine("outcall execute error"); } } else { /*RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\BicomSystems\\outcall"); String applicationName = (string)key.GetValue("app_name"); MessageBox.Show(applicationName + " is not running.");*/ MessageBox.Show(appName + " is not running."); } }
// OnMyButtonClick routine handles all button click events // and displays IRibbonControl.Context in message box //public void OnMyButtonClick(Office.IRibbonControl control) public void ButtonClicked(Office.IRibbonControl control) { String ContactName = ""; String numbers = ""; Outlook.ContactItem contactItem = null; //int handle = Win32.FindWindow(null, appName); if (true) // handle != 0 { try { if (control.Id == "outcallContacts") { Outlook.Explorer explorer = control.Context as Outlook.Explorer; Object item = explorer.Selection[1]; contactItem = item as Outlook.ContactItem; } else if (control.Id == "outcallMenuContact") { Outlook.Selection selection = control.Context as Outlook.Selection; OutlookItem olItem = new OutlookItem(selection[1]); Object item = new Object(); item = selection[1]; contactItem = item as Outlook.ContactItem; } else if (control.Id == "outcallMenuMail" || control.Id == "outcallMail") { Outlook.MailItem mailItem = null; Object item = null; List <string> accounts = new List <string>(); if (control.Id == "outcallMail") { Outlook.Explorer explorer = control.Context as Outlook.Explorer; item = explorer.Selection[1]; } else if (control.Id == "outcallMenuMail") { Outlook.Selection selection = control.Context as Outlook.Selection; OutlookItem olItem = new OutlookItem(selection[1]); item = new Object(); item = selection[1]; } mailItem = item as Outlook.MailItem; Outlook.Folder folder = mailItem.Parent as Outlook.Folder; Outlook.Folder contacts = (Outlook.Folder)folder.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); if (mailItem != null) { foreach (Outlook.Account account in folder.Session.Accounts) { accounts.Add(account.SmtpAddress); } bool isOut = false; if (mailItem.Sender == null) { isOut = true; } else if (accounts.Contains(mailItem.Sender.Address)) { isOut = true; } if (isOut) { Outlook.Recipients recipients = mailItem.Recipients; foreach (Outlook.Recipient recipient in recipients) { contactItem = recipient.AddressEntry.GetContact(); if (contactItem != null) { break; } } } else { contactItem = mailItem.Sender.GetContact(); } } } else { MessageBox.Show("The selected item is not supported. Please select a Contact or an Email."); } } catch (Exception e) { MessageBox.Show("Please select a contact."); return; } if (contactItem != null) { ContactName = contactItem.FullName; /*if (ContactName != "") * { * ContactName = contactItem.FirstName + " | " + contactItem.MiddleName + " | " + contactItem.LastName; * } * else * { * ContactName = contactItem.CompanyName; * }*/ String strTemp = contactItem.AssistantTelephoneNumber; if (strTemp != null) { numbers += "Assistant:" + strTemp + " | "; } strTemp = contactItem.BusinessTelephoneNumber; if (strTemp != null) { numbers += "Business:" + strTemp + " | "; } strTemp = contactItem.Business2TelephoneNumber; if (strTemp != null) { numbers += "Business2:" + strTemp + " | "; } strTemp = contactItem.BusinessFaxNumber; if (strTemp != null) { numbers += "Business Fax:" + strTemp + " | "; } strTemp = contactItem.CallbackTelephoneNumber; if (strTemp != null) { numbers += "Callback:" + strTemp + " | "; } strTemp = contactItem.CarTelephoneNumber; if (strTemp != null) { numbers += "Car:" + strTemp + " | "; } strTemp = contactItem.CompanyMainTelephoneNumber; if (strTemp != null) { numbers += "Company Main:" + strTemp + " | "; } strTemp = contactItem.HomeTelephoneNumber; if (strTemp != null) { numbers += "Home:" + strTemp + " | "; } strTemp = contactItem.Home2TelephoneNumber; if (strTemp != null) { numbers += "Home2:" + strTemp + " | "; } strTemp = contactItem.HomeFaxNumber; if (strTemp != null) { numbers += "Home Fax:" + strTemp + " | "; } strTemp = contactItem.ISDNNumber; if (strTemp != null) { numbers += "ISDN:" + strTemp + " | "; } strTemp = contactItem.MobileTelephoneNumber; if (strTemp != null) { numbers += "Mobile:" + strTemp + " | "; } strTemp = contactItem.OtherTelephoneNumber; if (strTemp != null) { numbers += "Other:" + strTemp + " | "; } strTemp = contactItem.OtherFaxNumber; if (strTemp != null) { numbers += "Other Fax:" + strTemp + " | "; } strTemp = contactItem.PagerNumber; if (strTemp != null) { numbers += "Pager:" + strTemp + " | "; } strTemp = contactItem.PrimaryTelephoneNumber; if (strTemp != null) { numbers += "Primary:" + strTemp + " | "; } strTemp = contactItem.RadioTelephoneNumber; if (strTemp != null) { numbers += "Radio:" + strTemp + " | "; } strTemp = contactItem.TelexNumber; if (strTemp != null) { numbers += "Telex:" + strTemp + " | "; } strTemp = contactItem.TTYTDDTelephoneNumber; if (strTemp != null) { numbers += "TTY/TDD:" + strTemp + " | "; } } else { MessageBox.Show("Contact not found in your Address book."); return; } if (numbers == "") { MessageBox.Show("There are no phone numbers for the selected contact."); return; } String strDataToSend = "Dial#####" + ContactName + "#####" + numbers; strDataToSend = strDataToSend.Replace(" ", "&&&"); /*Win32.COPYDATASTRUCT cpd; * cpd.dwData = IntPtr.Zero; * cpd.cbData = strDataToSend.Length; * cpd.lpData = strDataToSend; * * Win32.SendMessage(handle, WM_COPYDATA, 0, ref cpd);*/ RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Bicom Systems\\OutCALL"); string outcall_path = (string)key.GetValue("InstallDir"); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.UseShellExecute = false; startInfo.FileName = outcall_path + "\\" + appBinary; startInfo.WindowStyle = ProcessWindowStyle.Normal; startInfo.Arguments = strDataToSend; try { // Start the process with the info we specified. // Call WaitForExit and then the using statement will close. using (Process outcallProcess = Process.Start(startInfo)) { outcallProcess.WaitForExit(); } } catch { // Log error. Debug.WriteLine("outcall execute error"); } } else { /*RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\BicomSystems\\outcall"); * String applicationName = (string)key.GetValue("app_name"); * MessageBox.Show(applicationName + " is not running.");*/ MessageBox.Show(appName + " is not running."); } }