NotifyIcon + DLL для 1С8 - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток коллеги! В общем у руководства "встал" вопрос расширения фукнционала 1С8 хотят чтобы в трее появлялось окошко с уведомлением о каком либо событии Данный случая я реализовал через DLL вписал в нее вот этот код, компилирую и т.д. все ок. НО! каждый раз когда я вызываю функцию прописанную в DLL система не удаляет ярлык с появившимся уведомлением а создает новый, и так пока я не закрою саму 1С. Я думаю что вся проблема в строке:

NotifyIcon ni = new NotifyIcon();

но как то это обойти у меня не получается помогите пожалуйста!
Листинг программы
  1. using System;
  2. using System.Text;
  3. using System.Runtime.InteropServices;
  4. using SpeechLib;
  5. using System.Windows.Forms;
  6. using System.Drawing;
  7.  
  8. namespace test1C8
  9. {
  10.  
  11. [Guid("68C6A956-A711-46DF-B426-D3B8617C6155")]
  12. internal interface IsMyClass
  13. {
  14. [DispId(1)]
  15. void SendSMS(string SMSText);
  16. }
  17. [Guid("70DD7E62-7D82-4301-993C-B7D919430990"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
  18. public interface IMyEvents
  19. {
  20. }
  21.  
  22. [Guid("2660B1B1-AA71-45C8-967A-AC2E0D4708B0"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))]
  23.  
  24. public class TestClass : IsMyClass
  25. {
  26.  
  27. public void SendSMS(string SMSText)
  28. {
  29. NotifyIcon ni = new NotifyIcon();
  30. ni.Icon = SystemIcons.Exclamation;
  31. ni.BalloonTipTitle = "Уведомление";
  32. ni.BalloonTipText = SMSText;
  33. ni.BalloonTipIcon = ToolTipIcon.Error;
  34. ni.Visible = true;
  35. ni.ShowBalloonTip(25000);
  36. }
  37.  
  38. }
  39. }

Решение задачи: «NotifyIcon + DLL для 1С8»

textual
Листинг программы
  1. [Guid("2660B1B1-AA71-45C8-967A-AC2E0D4708B0"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))]
  2. public class TestClass : IsMyClass
  3. {
  4.     private NotifyIcon _ni = new NotifyIcon();
  5.     public void SendSMS(string SMSText)
  6.     {
  7.         _ni.Icon = SystemIcons.Exclamation;
  8.         _ni.BalloonTipTitle = "Уведомление";
  9.         _ni.BalloonTipText = SMSText;
  10.         _ni.BalloonTipIcon = ToolTipIcon.Error;
  11.         _ni.BalloonTipClosed += OnBalloonTipClosed;
  12.         _ni.Visible = true;
  13.         _ni.ShowBalloonTip(25000);
  14.     }
  15.     private void void OnBalloonTipClosed(object sender, EventArgs e)
  16.     {
  17.         if (_ni != null)
  18.         {
  19.            _ni.BalloonTipClosed -= OnBalloonTipClosed;
  20.             _ni.Visible = false;
  21.             _ni.Dispose();
  22.             _ni = null;
  23.         }
  24.     }
  25. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут