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

  • Автор темы Автор темы DevOps
  • Дата начала Дата начала

DevOps

Client
Регистрация
30.11.2020
Сообщения
497
Реакции
316
Баллы
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 - то возможно есть решения без бубнов и простыней
Спасибо
 
С балуном разобрался. Вот сниппет

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


Вопрос по синтезу голосового уведомления пока еще открыт
 
Вопрос по синтезу голосового уведомления пока еще открыт
У Гугла (как вариант) есть API TTS. Его проще всего использовать. Минус только в том, что будет лаг несколько секунд, потому что созданный файл придётся скачать, но может быть можно и стримить.
 
  • Оценить
Реакции: DevOps
У Гугла (как вариант) есть API TTS. Его проще всего использовать. Минус только в том, что будет лаг несколько секунд, потому что созданный файл придётся скачать, но может быть можно и стримить.
Как раз в эту сторону и смотрю
Мне правда объемы не нужны, только несколько уведомлений озвучить. Заказчик инвалид по зрению
 
Как раз в эту сторону и смотрю
Мне правда объемы не нужны, только несколько уведомлений озвучить. Заказчик инвалид по зрению

просто запиши аудио с необходимым уведомлением и воспользуйся классом
 
  • Оценить
Реакции: DevOps
Если простой пример, будем признательны безмерно.

на здоровье ;-)
C#:
Развернуть Свернуть Копировать
System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.SoundLocation = @"C:\Users\Sleep\Desktop\1.wav";
player.Play();
 
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();
 
это немного неверное решение, ибо с панели задач уведомления сами не закроются и будут накапливаться:

Посмотреть вложение 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
Разобрался со звуковыми оповещениями (смена голоса, диктора, скорости и прочего не тестил - нет необходимости, да и времени)
Итак
в директивы вносим

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);
Теперь любая нестандартная ситуация не останется незамеченной если Вы работаете на нескольких устройствах одновременно :-)
Всем хорошего дня
 
Не робит.
 

Вложения

  • speech.zp
    speech.zp
    10,5 KB · Просмотры: 172
4.0 но пробовал и на 3.0
закомментировал 3 строчку - тоже самое.
Пишет ок, а звука нет
 
Последнее редактирование:
4.0 но пробовал и на 3.0
закомментировал 3 строчку - тоже самое.
Пишет ок, а звука нет
Зайдите в настройки и посмотрите - установлено ли преобразование текста в речь
Кстати распространенная проблема со сменой диктора и языка именно отсутствие такой установки
80901
 
Точно, у меня Windows 7 - там только английский
 
Можно проще, - прописать в кубике JS

JavaScript:
Развернуть Свернуть Копировать
new ActiveXObject("SAPI.SpVoice").Speak ("Ура, работает!");

или с переменной

JavaScript:
Развернуть Свернуть Копировать
new ActiveXObject("SAPI.SpVoice").Speak ("{-Variable.text-}");

На десятке русский работает, на семёрке, нет
 
Можно проще, - прописать в кубике JS

JavaScript:
Развернуть Свернуть Копировать
new ActiveXObject("SAPI.SpVoice").Speak ("Ура, работает!");

или с переменной

JavaScript:
Развернуть Свернуть Копировать
new ActiveXObject("SAPI.SpVoice").Speak ("{-Variable.text-}");

На десятке русский работает, на семёрке, нет
Идеально! Где же Вы утром были :)
Спасибо
 
А как реализовать речь в текст?
 

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