none
BalloonTips RRS feed

  • Question

  • Bonjour tout le monde,

    Depuis une dizaine de jours j'introduis dans un programme C# Winforms la notion de Balloontips.

        notifyIcon1.BalloonTipText = "Salut tout le monde, tout va bien ?";
        notifyIcon1.BalloonTipTitle = "Hello ! Venir aux nouvelles ...";
        notifyIcon1.ShowBalloonTip(10000);
    
    

    Ça se passe bien avec ça, sauf depuis hier : le code ne m'affiche pas d'erreur, mais ... autre chose non plus (sauf à mettre un MessageBox dans notifyIcon1_BalloonTipShown). Du moins, sur Windows 10 (64 bits, version 1809,  17763.1098), alors que la machine pour laquelle je développe, sous Vista, continue de les afficher. Donc, ce sont les mises à jour automatiques de Windows 10 qui ont fait le coup.

    J'ai alors pensé aux points de restauration. Hélas ce que j'ai vu signifiait "non non mon gars, tu n'as pas été foutu de penser avant à activer la protection système, alors les points de restauration, nada, tu es trop benêt pour les mériter."

    Est-ce que ça sera le dernier mot de Microsoft ? Est-ce que ça peut s'arranger ?

    lundi 16 mars 2020 16:22

Réponses

  • J'ai fait un test sous mon OS (Windows 10, mais version 1803)

    et ça fonctionne normalement, la notification est bien affichée :

                    var notification = new System.Windows.Forms.NotifyIcon()
                    {
                        Visible = true,
                        Icon = System.Drawing.SystemIcons.Information,
                        BalloonTipText = "Notification ...",
                        BalloonTipTitle = "Title"
                    };
                    notification.ShowBalloonTip(5000);

    • Marqué comme réponse Gloops lundi 16 mars 2020 23:42
    lundi 16 mars 2020 22:31
  • Bonjour,

    Donc, aux dernières nouvelles, j'étais à chercher dans les virus et les malwares.

    Fausse piste.

    Je viens de lire quelqu'un de mieux informé dans un autre fil : il suffisait de désactiver l'assistant de concentration.

    Sinon les infobulles pouvaient être trouvées, mais en cliquant sur la "bulle" en bas à droite de l'écran.

    Ça y est, après trente secondes de paramétrage, ma machine affiche normalement les baloontips.

    Ah mais du coup, au fait : je réalise qu'il faudrait que mon programme détecte si l'assistant de concentration est activé, et au lancement propose à l'utilisateur de le désactiver.

    J'ai cherché "C# assistant de concentration", et on me dit de cliquer sur le drapeau Windows, d'appeler le panneau de configuration ...

    • Marqué comme réponse Gloops samedi 11 avril 2020 15:04
    • Modifié Gloops samedi 11 avril 2020 15:51
    samedi 11 avril 2020 15:03

Toutes les réponses

  • J'ai fait un test sous mon OS (Windows 10, mais version 1803)

    et ça fonctionne normalement, la notification est bien affichée :

                    var notification = new System.Windows.Forms.NotifyIcon()
                    {
                        Visible = true,
                        Icon = System.Drawing.SystemIcons.Information,
                        BalloonTipText = "Notification ...",
                        BalloonTipTitle = "Title"
                    };
                    notification.ShowBalloonTip(5000);

    • Marqué comme réponse Gloops lundi 16 mars 2020 23:42
    lundi 16 mars 2020 22:31
  • OK merci.

    À un moment a été affichée l'erreur ‭-2147467259‬.

    C'est une curieuse idée d'afficher ça en décimal, puisque les sites de nettoyage s'expriment en hexadécimal.

    C'est une des raisons pour lesquelles la calculatrice Windows fait partie des outils de débogage : il est donc question de l'erreur 80004005‬. Si c'est dû à un malware, le plus étonnant est que je n'aie constaté de dysfonctionnement que sur une fonctionnalité.

    Je suis en train de ramer avec adwCleaner (qui pour une fois n'a rien trouvé), zhpCleaner (pas des masses non plus), MalwareBytes, qui m'a aussi conseillé Restoro, lequel ne s'est pas avéré très utile car il s'avère incapable de trouver sur quel disque il a (largement) de la place pour s'installer, ni à défaut de me poser la question.

    Sur l'établi j'ai encore zhpDiag et FRST, avec ensuite le forum qui va avec.

    Si on considère que le but d'un malware est de faire perdre du temps, je dois bien reconnaître qu'il a réussi.

    Si il faut lui reconnaître un intérêt, c'est de me rappeler à l'ordre : il me paraîtrait logique que la protection système (points de restauration) soit activée par Microsoft pendant l'installation du système. Il semble que d'après eux non, c'est aux automobilistes d'installer les rambardes au bord des routes de montagne -et du coup aussi aux utilisateurs d'activer la protection système.




    • Marqué comme réponse Gloops lundi 16 mars 2020 23:42
    • Non marqué comme réponse Gloops dimanche 12 avril 2020 09:06
    • Modifié Gloops dimanche 12 avril 2020 09:08
    lundi 16 mars 2020 23:39
  • Pour info, si Castorix m'a permis de savoir que normalement Windows 10 affiche bien les BalloonTips, et donc de m'orienter plutôt vers le nettoyage de Windows, en revanche j'ai parcouru un peu plus de la moitié du cursus de nettoyage, et encore rien trouvé, alors qu'habituellement des choses suspectes sont trouvées dès le premier programme.

    Donc si quelqu'un a une idée elle sera bienvenue.

    [HS] J'ai entendu la semaine dernière que Microsoft envisage d'arrêter le support de Windows 10 1803.

    • Modifié Gloops lundi 23 mars 2020 22:34
    lundi 23 mars 2020 22:30
  • Bonjour,

    Donc, aux dernières nouvelles, j'étais à chercher dans les virus et les malwares.

    Fausse piste.

    Je viens de lire quelqu'un de mieux informé dans un autre fil : il suffisait de désactiver l'assistant de concentration.

    Sinon les infobulles pouvaient être trouvées, mais en cliquant sur la "bulle" en bas à droite de l'écran.

    Ça y est, après trente secondes de paramétrage, ma machine affiche normalement les baloontips.

    Ah mais du coup, au fait : je réalise qu'il faudrait que mon programme détecte si l'assistant de concentration est activé, et au lancement propose à l'utilisateur de le désactiver.

    J'ai cherché "C# assistant de concentration", et on me dit de cliquer sur le drapeau Windows, d'appeler le panneau de configuration ...

    • Marqué comme réponse Gloops samedi 11 avril 2020 15:04
    • Modifié Gloops samedi 11 avril 2020 15:51
    samedi 11 avril 2020 15:03
  • En anglais, c'est "Focus Assist"

    Apparemment, ce n'est pas documenté dans MSDN, mais on peut trouver des exemples de code avec

    NtQueryWnfStateData

    un exemple parmi quelques autres : NtQueryWnfStateData exemple

    samedi 11 avril 2020 17:53
  • OK merci.

    Apparemment, il faut se le farcir en C++, alors ?

    samedi 11 avril 2020 18:01
  • En .NET, avec P/Invoke, comme pour les APIs Win32 documentées
    samedi 11 avril 2020 18:05
  • Ah oui aussi.

    OK merci.

    S'agit de se concentrer dessus le temps qu'il faut, quoi ...

    samedi 11 avril 2020 18:22
  • J'ai fait un test en C# à partir du code C++, et ça fonctionne sur mon OS (Windows 10 - 1803) =>

    uint nChangeStamp = 0;
    IntPtr pBuffer = IntPtr.Zero;
    uint nBufferSize = (uint)Marshal.SizeOf(typeof(IntPtr));
    IntPtr pStateName = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WNF_STATE_NAME)));
    Marshal.StructureToPtr(WNF_SHEL_QUIETHOURS_ACTIVE_PROFILE_CHANGED, pStateName, false);
    uint nRet = NtQueryWnfStateData(pStateName, IntPtr.Zero, IntPtr.Zero, out nChangeStamp, out pBuffer, ref nBufferSize);
    if (nRet == 0)
    {
        FocusAssistResult nFocusAssist = (FocusAssistResult)pBuffer;
        Console.WriteLine("Focus Assist : {0}", nFocusAssist);
    }
    Marshal.FreeHGlobal(pStateName);

    Declarations :

            [DllImport("NtDll.dll", SetLastError = true)]
            private static extern uint NtQueryWnfStateData(IntPtr pStateName, IntPtr pTypeId, IntPtr pExplicitScope, out uint nChangeStamp, out IntPtr pBuffer, ref uint nBufferSize);
    
            [StructLayout(LayoutKind.Sequential)]
            public struct WNF_TYPE_ID
            { 
                public Guid TypeId;
            }
         
            [StructLayout(LayoutKind.Sequential)]
            public struct WNF_STATE_NAME
            {
                [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
                public uint[] Data;          
    
                public WNF_STATE_NAME(uint Data1, uint Data2) : this()
                {
                    uint[] newData = new uint[2];
                    newData[0] = Data1;
                    newData[1] = Data2;
                    Data = newData;
                }
            }  
    
            WNF_STATE_NAME WNF_SHEL_QUIETHOURS_ACTIVE_PROFILE_CHANGED = new WNF_STATE_NAME(0xA3BF1C75, 0xD83063E);
    
            public enum FocusAssistResult
            {
                NOT_SUPPORTED = -2,
                FAILED = -1,
                OFF = 0,
                PRIORITY_ONLY = 1,
                ALARMS_ONLY = 2
            };


    • Modifié Castorix31 dimanche 12 avril 2020 10:53
    dimanche 12 avril 2020 10:51