using System; using System.Runtime.InteropServices; using System.Windows.Forms; using Microsoft.Win32; using AccCoreLib; namespace MyPlugin { /// /// Summary description for Class1. /// /// /// Important! Replace the lines below with your own key strings! /// Keys can be obtained from http://developer.aim.com. #if DEBUG [GuidAttribute("your-development-key-here")] #else [GuidAttribute("your-deployment-key-here")] #endif public class Class1 : IAccPlugin, IAccCommandTarget { const int kCommandId = 0; private AccSession m_session; public Class1() { // // TODO: Add constructor logic here // } #region IAccPlugin Members public void Init(AccSession session, IAccPluginInfo pluginInfo) { m_session = session; m_session.OnStateChange += new DAccEvents_OnStateChangeEventHandler(m_session_OnStateChange); IAccCommand command = pluginInfo.AddCommand(kCommandId); command.set_Property(AccCommandProp.AccCommandProp_Text, "My Command"); } public void Shutdown() { m_session = null; } #endregion #region Plugin Registration [ComRegisterFunctionAttribute] public static void RegisterFunction(Type t) { RegistryKey key = Registry.LocalMachine.CreateSubKey(PluginKeyName(t)); key.SetValue("Name", t.Name); } [ComUnregisterFunctionAttribute] public static void UnregisterFunction(Type t) { Registry.LocalMachine.DeleteSubKey(PluginKeyName(t)); } private static string PluginKeyName(Type t) { return "Software\\America Online\\AIM\\Plugins\\" + '{' + t.GUID.ToString() + '}'; } #endregion private void m_session_OnStateChange(AccSession session, AccSessionState State, AccResult hr) { } #region IAccCommandTarget Members public void Exec(int command, object users) { if (command == kCommandId) MessageBox.Show("Hi I am a command"); else if (command == (int)AccCommandId.AccCommandId_Preferences) { Form MyForm = new Form(); MyForm.Text = "My Plugin Settings"; MyForm.Show(); } } public bool QueryStatus(int command, object users) { if (command == (int)AccCommandId.AccCommandId_Preferences || command == kCommandId) return true; else return false; } #endregion } }