Comment faire clignoter la barre des tâches dans mon application, comme le fait Messenger, lorsqu'un nouveau message arrive?

StackOverflow https://stackoverflow.com/questions/73162

  •  09-06-2019
  •  | 
  •  

Question

Existe-t-il un appel d'API dans .NET ou une DLL native que je peux utiliser pour créer un comportement similaire à Windows Live Messenger lorsqu'une réponse provient d'une personne avec laquelle je discute?

Était-ce utile?

La solution

FlashWindowEx est la voie à suivre. Voir ici pour la documentation MSDN

.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FlashWindowEx(ref FLASHWINFO pwfi);

[StructLayout(LayoutKind.Sequential)]
public struct FLASHWINFO
{
    public UInt32 cbSize;
    public IntPtr hwnd;
    public UInt32 dwFlags;
    public UInt32 uCount;
    public UInt32 dwTimeout;
}

public const UInt32 FLASHW_ALL = 3; 

Appel de la fonction:

FLASHWINFO fInfo = new FLASHWINFO();

fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
fInfo.hwnd = hWnd;
fInfo.dwFlags = FLASHW_ALL;
fInfo.uCount = UInt32.MaxValue;
fInfo.dwTimeout = 0;

FlashWindowEx(ref fInfo);

Ceci a été inséré sans vergogne depuis Pinvoke.net

Autres conseils

HWND hHandle = FindWindow(NULL,"YourApplicationName");
FLASHWINFO pf;
pf.cbSize = sizeof(FLASHWINFO);
pf.hwnd = hHandle;
pf.dwFlags = FLASHW_TIMER|FLASHW_TRAY; // (or FLASHW_ALL to flash and if it is not minimized)
pf.uCount = 8;
pf.dwTimeout = 75;

FlashWindowEx(&pf);

Volé de gtokas, membre d’échange d’experts.

FlashWindowEx .

Extrait d'un billet de blog Raymond Chen:

  

Comment puis-je flasher ma légende de fenêtre et bouton de la barre des tâches manuellement?

     

Comment flasher ma légende de fenêtre et   bouton de la barre des tâches manuellement? Commentateur   Jonathan Scheepers s'interroge sur ceux   programmes qui clignotent leur barre des tâches   bouton indéfiniment, en remplaçant le   nombre de flashs par défaut défini par   SysteParametersInfo (SPI_SETFOREGROUNDFLASHCOUNT).

     

La fonction FlashWindowEx et son   précurseur plus simple FlashWindow laisser un   programme flash sa légende de la fenêtre et   bouton de la barre des tâches manuellement. La fenêtre   le responsable affiche la légende   automatiquement (et Explorer suit   la légende en faisant clignoter la barre des tâches   bouton) si un programme appelle   SetForegroundWindow quand ce n'est pas le cas   avoir la permission de prendre le premier plan,   et c'est ce clignotement automatique qui   le SPI_SETFOREGROUNDFLASHCOUNT   réglage des contrôles.

     

À titre d'illustration, je vais   montrer la légende   manuellement. C'est en général   pas recommandé, mais depuis que vous avez demandé,   Je vais te montrer comment. Et puis promis   vous ne le ferez pas.

     

Commencez par le programme de travail et   faites ce simple changement:

void
OnSize(HWND hwnd, UINT state, int cx, int cy)
{
  if (state == SIZE_MINIMIZED) {
    FLASHWINFO fwi = { sizeof(fwi), hwnd,
                       FLASHW_TIMERNOFG | FLASHW_ALL };
    FlashWindowEx(&fwi);
  }
}
     

Compilez et exécutez ce programme, puis   minimiser. Quand vous le faites, sa barre des tâches   le bouton clignote indéfiniment jusqu'à ce que vous   Clique dessus. Le programme répond à   être minimisé en appelant le   Fonction FlashWindowEx demandant   tout ce qui est possible (actuellement le   légende et bouton de la barre des tâches)   flashé jusqu'à ce que la fenêtre arrive à la   au premier plan.

     

Autres membres de FLASHWINFO   structure vous permet de personnaliser le   comportement clignotant plus loin, comme   contrôler la fréquence du flash et   le nombre de clignotements. et si tu   vraiment envie de prendre le contrôle, vous pouvez   utilisez FLASHW_ALL et FLASHW_STOP pour activer   votre légende et le bouton de la barre des tâches et   exactement comme vous le souhaitez. (Qui   sait, peut-être que vous voulez envoyer un   message en code Morse.)

     

Publié le lundi 12 mai 2008 à 07h00   by oldnewthing Classé dans: Code

L’API FlashWindowEx Win32 est l’appel utilisé pour cela. La documentation pour cela est à: http://msdn.microsoft.com/en-us /library/ms679347(VS.85).aspx

Je pense que vous recherchez SetForegroundWindow .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top