NotifyIcon + DLL для 1С8 - C#
Формулировка задачи:
Доброго времени суток коллеги!
В общем у руководства "встал" вопрос расширения фукнционала 1С8
хотят чтобы в трее появлялось окошко с уведомлением о каком либо событии
Данный случая я реализовал через DLL
вписал в нее вот этот код, компилирую и т.д. все ок.
НО!
каждый раз когда я вызываю функцию прописанную в DLL система не удаляет ярлык с появившимся уведомлением а создает новый, и так пока я не закрою саму 1С.
Я думаю что вся проблема в строке:
NotifyIcon ni = new NotifyIcon();
но как то это обойти у меня не получается помогите пожалуйста!using System; using System.Text; using System.Runtime.InteropServices; using SpeechLib; using System.Windows.Forms; using System.Drawing; namespace test1C8 { [Guid("68C6A956-A711-46DF-B426-D3B8617C6155")] internal interface IsMyClass { [DispId(1)] void SendSMS(string SMSText); } [Guid("70DD7E62-7D82-4301-993C-B7D919430990"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface IMyEvents { } [Guid("2660B1B1-AA71-45C8-967A-AC2E0D4708B0"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))] public class TestClass : IsMyClass { public void SendSMS(string SMSText) { NotifyIcon ni = new NotifyIcon(); ni.Icon = SystemIcons.Exclamation; ni.BalloonTipTitle = "Уведомление"; ni.BalloonTipText = SMSText; ni.BalloonTipIcon = ToolTipIcon.Error; ni.Visible = true; ni.ShowBalloonTip(25000); } } }
Решение задачи: «NotifyIcon + DLL для 1С8»
textual
Листинг программы
[Guid("2660B1B1-AA71-45C8-967A-AC2E0D4708B0"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))] public class TestClass : IsMyClass { private NotifyIcon _ni = new NotifyIcon(); public void SendSMS(string SMSText) { _ni.Icon = SystemIcons.Exclamation; _ni.BalloonTipTitle = "Уведомление"; _ni.BalloonTipText = SMSText; _ni.BalloonTipIcon = ToolTipIcon.Error; _ni.BalloonTipClosed += OnBalloonTipClosed; _ni.Visible = true; _ni.ShowBalloonTip(25000); } private void void OnBalloonTipClosed(object sender, EventArgs e) { if (_ni != null) { _ni.BalloonTipClosed -= OnBalloonTipClosed; _ni.Visible = false; _ni.Dispose(); _ni = null; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д