Реализация всплывающего окна + синтез речи [РЕШЕНО]

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Добрый день форумчане. Подскажите как можно реализовать в C# всплывающее окно как на картинке?
Есть ли реализация без создания класса в общем коде?
80880

К примеру данное уведомление я вызвал в PowrShell следующим кодом

C#:
Add-Type -AssemblyName System.Windows.Forms
$global:balmsg = New-Object System.Windows.Forms.NotifyIcon
$path = (Get-Process -id $pid).Path
$balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning
$balmsg.BalloonTipText = "Нужно такое же уведомление, но в Zennoposter"
$balmsg.BalloonTipTitle = "Уведомление "
$balmsg.Visible = $true
$balmsg.ShowBalloonTip(10000)
__________
Сразу до кучи (вдруг повезет)
Как реализовать в кубике C# голосовое уведомление по типу кода ниже

C#:
$a = "Нужно такое же уведомление в Zennoposter"
Add-Type –AssemblyName System.Speech
$SpeechSynthesizer = New-Object –TypeName System.Speech.Synthesis.SpeechSynthesizer
$SpeechSynthesizer.Speak($a)
Предполагаю что раз Powershell и Zennoposter из коробки работают под .NET - то возможно есть решения без бубнов и простыней
Спасибо
 

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
С балуном разобрался. Вот сниппет

C#:
var a= "Тут вывели значение из переменной в первой строчке снипета";
System.Windows.Forms.NotifyIcon NotifyIcon = new System.Windows.Forms.NotifyIcon();
NotifyIcon ballon = new NotifyIcon();
ballon.Icon = SystemIcons.Application;
ballon.Visible = true;
ballon .ShowBalloonTip(3000, "Указываем откуда уведомление",  a,ToolTipIcon.Info);
Не забудьте в директивы общего кода добавить строчку
C#:
using System.Windows.Forms;
80881


Вопрос по синтезу голосового уведомления пока еще открыт
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 943
Благодарностей
4 340
Баллы
113
Вопрос по синтезу голосового уведомления пока еще открыт
У Гугла (как вариант) есть API TTS. Его проще всего использовать. Минус только в том, что будет лаг несколько секунд, потому что созданный файл придётся скачать, но может быть можно и стримить.
 
  • Спасибо
Реакции: DevOps

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
У Гугла (как вариант) есть API TTS. Его проще всего использовать. Минус только в том, что будет лаг несколько секунд, потому что созданный файл придётся скачать, но может быть можно и стримить.
Как раз в эту сторону и смотрю
Мне правда объемы не нужны, только несколько уведомлений озвучить. Заказчик инвалид по зрению
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
631
Благодарностей
543
Баллы
93
Как раз в эту сторону и смотрю
Мне правда объемы не нужны, только несколько уведомлений озвучить. Заказчик инвалид по зрению
просто запиши аудио с необходимым уведомлением и воспользуйся классом
 
  • Спасибо
Реакции: DevOps

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
631
Благодарностей
543
Баллы
93

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
631
Благодарностей
543
Баллы
93
C#:
var a= "Тут вывели значение из переменной в первой строчке снипета";
System.Windows.Forms.NotifyIcon NotifyIcon = new System.Windows.Forms.NotifyIcon();
NotifyIcon ballon = new NotifyIcon();
ballon.Icon = SystemIcons.Application;
ballon.Visible = true;
ballon .ShowBalloonTip(3000, "Указываем откуда уведомление",  a,ToolTipIcon.Info);
Не забудьте в директивы общего кода добавить строчку
C#:
using System.Windows.Forms;
это немного неверное решение, ибо с панели задач уведомления сами не закроются и будут накапливаться:

80882


лучше вот так:

C#:
var a= "Тут вывели значение из переменной в первой строчке снипета";
System.Windows.Forms.NotifyIcon NotifyIcon = new System.Windows.Forms.NotifyIcon();
NotifyIcon ballon = new NotifyIcon();
ballon.Icon = SystemIcons.Application;
ballon.Visible = true;
ballon.ShowBalloonTip(0,"Указываем откуда уведомление",  a,ToolTipIcon.Info);
Thread.Sleep(3000);
ballon.Dispose();
 

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
это немного неверное решение, ибо с панели задач уведомления сами не закроются и будут накапливаться:

Посмотреть вложение 80882

лучше вот так:

C#:
var a= "Тут вывели значение из переменной в первой строчке снипета";
System.Windows.Forms.NotifyIcon NotifyIcon = new System.Windows.Forms.NotifyIcon();
NotifyIcon ballon = new NotifyIcon();
ballon.Icon = SystemIcons.Application;
ballon.Visible = true;
ballon.ShowBalloonTip(0,"Указываем откуда уведомление",  a,ToolTipIcon.Info);
Thread.Sleep(3000);
ballon.Dispose();
Да, когда необходимо в процессе работы выбрасывать несколько разных уведомлений - то Ваша поправка очень актуальна. Спасибо за то что не поленились указать
Хорошего дня
 
  • Спасибо
Реакции: Ilshakin

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Разобрался со звуковыми оповещениями (смена голоса, диктора, скорости и прочего не тестил - нет необходимости, да и времени)
Итак
в директивы вносим

C#:
using System.Speech.Synthesis;
using System.Speech.Recognition;
using System.Speech;
В ссылках GAC выбираем System.Speеach 4.0 (у кого 5.0 - выбирайте его, у кого 3.0 - то его)
80885


И сам код оповещения с текстом передаваемым из переменной
C#:
var a = "Ура, работает";
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.SetOutputToDefaultAudioDevice();
synth.Speak(a);
Теперь любая нестандартная ситуация не останется незамеченной если Вы работаете на нескольких устройствах одновременно :-)
Всем хорошего дня
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63
Не робит.
 

Вложения

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63
4.0 но пробовал и на 3.0
закомментировал 3 строчку - тоже самое.
Пишет ок, а звука нет
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
631
Благодарностей
543
Баллы
93
Последнее редактирование:

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
4.0 но пробовал и на 3.0
закомментировал 3 строчку - тоже самое.
Пишет ок, а звука нет
Зайдите в настройки и посмотрите - установлено ли преобразование текста в речь
Кстати распространенная проблема со сменой диктора и языка именно отсутствие такой установки
80901
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63
Точно, у меня Windows 7 - там только английский
 

Igorii

Client
Регистрация
21.02.2015
Сообщения
369
Благодарностей
292
Баллы
63
Можно проще, - прописать в кубике JS

JavaScript:
new ActiveXObject("SAPI.SpVoice").Speak ("Ура, работает!");
или с переменной

JavaScript:
new ActiveXObject("SAPI.SpVoice").Speak ("{-Variable.text-}");
На десятке русский работает, на семёрке, нет
 

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Можно проще, - прописать в кубике JS

JavaScript:
new ActiveXObject("SAPI.SpVoice").Speak ("Ура, работает!");
или с переменной

JavaScript:
new ActiveXObject("SAPI.SpVoice").Speak ("{-Variable.text-}");
На десятке русский работает, на семёрке, нет
Идеально! Где же Вы утром были :-)
Спасибо
 

murat

Client
Регистрация
25.04.2018
Сообщения
10
Благодарностей
1
Баллы
3
А как реализовать речь в текст?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)