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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д