Уведомление Windows не отображается при вызове .exe в vb.net с process.start - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть программа vb.net, которая вызывает .exe с Process.start() Краткая сводка об этом .exe: он загружает файл с веб-сервера и отправляет некоторые уведомления Windows, когда начинается загрузка. Этот алгоритм работает нормально, если я просто запускаю свой файл "LiveUpdate.exe".

Это мой звонок в коде vb.net:

Process.Start(location & "LiveUpdate.exe", "-f "settings.ini")

А это мой метод уведомления c #

public void Popup(string title, string description, Icon systemIcon, ToolTipIcon icon = ToolTipIcon.Info)
        {
            var notification = new NotifyIcon()
            {
                Visible = true,
                Icon = systemIcon, //SystemIcons.Information,
                BalloonTipIcon = icon,
                BalloonTipTitle = title,
                BalloonTipText = description
            };
            Task.Run(() => OpenAndCloseNotification(notification, 2));
        }

        public void OpenAndCloseNotification(NotifyIcon notification, int secconds)
        {
            var milisecconds = secconds * 1000;
            notification.ShowBalloonTip(milisecconds);
            Thread.Sleep(milisecconds);
            notification.Dispose();
        }

Может быть, vb.net не позволяет всплывать Windows-уведомления? Я приложу больше кода, если вам это нужно, заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

извините за опоздание

Вот так это выглядит, вы можете изменить фоновое изображение и удалить прозрачные пленки. если вы этого не сделаете, выберите фон с простым фоном, поэтому он установит этот цвет как прозрачный, и останется только форма центрального изображения.

<blockquote class="imgur-embed-pub" lang="en" data-id="a/V2WnhOA"><a href="//imgur.com/V2WnhOA"></a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>

     Private x, y As Integer
    Private fondo As Image
    Private icono As Icon
    Private WithEvents temporizador As Timer
    Private inicio As DateTime
    Private tiempo As Integer


    Private Sub FNotifi_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim destination = New Bitmap(Size.Width, Size.Height)
        Dim original = Image.FromFile(".\Resources\Imagenes\Fondo1_2.bmp")
        Using g = Graphics.FromImage(destination)
            g.InterpolationMode = InterpolationMode.NearestNeighbor
            g.DrawImage(original, New Rectangle(0, 0, destination.Width, destination.Height), New Rectangle(0, 0, original.Width, original.Height), GraphicsUnit.Pixel)
        End Using


        Dim bmp As Bitmap
        ' bmp = New Bitmap(".\Resources\Imagenes\Fondo1_2.bmp")
        bmp = New Bitmap(destination)
        'el color del pixel(1,1) (esquina sup. izda.) del Bitmap será renderizado
        'como transparente en el Bitmap (color RGB 255,0,0)
        'bmp.MakeTransparent(bmp.GetPixel(1, 1))
        'colocar el Bitmap como fondo del formulario
        Me.BackgroundImage = bmp
        'el color del pixel(1,1) (esquina sup. izda.) del Bitmap será renderizado
        'como transparente también en el formulario (color RGB 255,0,0)
        Me.TransparencyKey = bmp.GetPixel(1, 1)
        Me.BackgroundImageLayout = ImageLayout.Zoom

        Dim workingArea As Rectangle = Screen.GetWorkingArea(Me)
        x = workingArea.Right - Size.Width
        y = workingArea.Bottom - Size.Height
        Me.Location = New Point(x, y)

    End Sub

    Public Sub New(Titulo As String, mensaje As String, ByRef tempo As Timer, Optional tiempo As Integer = 10000)
        ' Esta llamada es exigida por el diseñador.
        InitializeComponent()

        inicio = Now
        temporizador = tempo
        Me.tiempo = tiempo

        LblTitulo.Text = Titulo
        LblMensaje.Text = mensaje

    End Sub

<blockquote class="imgur-embed-pub" lang="en" data-id="a/BW171wJ"><a href="//imgur.com/BW171wJ"></a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-html lang-html prettyprint-override"><code><blockquote class="imgur-embed-pub" lang="en" data-id="a/BW171wJ"><a href="//imgur.com/BW171wJ"></a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>
0 голосов
/ 09 апреля 2019

У меня также было много проблем с уведомлениями windows начиная с windows10. Я не знаю, от чего это зависит, но иногда работает, а другие нет.

Вы пытались показать уведомление непосредственно о событии нажатия кнопки? по крайней мере, таким образом, вы проверите, работает ли он.

В любом случае, в конце концов мне нужно было создать свои собственные уведомления с формой, которая отображается в углу стола в течение необходимого времени.

Если вас заинтересовало это решение, я покажу вам код

...