Как заставить панель задач мигнуть, мое приложение как Messenger делает, когда новое сообщение прибывает?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

20
задан Peter Mortensen 11 February 2010 в 21:23
поделиться

5 ответов

FlashWindowEx является способом пойти. См. здесь для документации 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; 

Вызывание Функции:

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);

Это было бесстыдно включено от Pinvoke.net

23
ответ дан 30 November 2019 в 00:23
поделиться
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);

Украденный от обменного экспертами участника gtokas.

FlashWindowEx.

5
ответ дан 30 November 2019 в 00:23
поделиться

FlashWindowEx Win32 API является вызовом, используемым, чтобы сделать это. Документация для него в: http://msdn.microsoft.com/en-us/library/ms679347 (По сравнению с 85) .aspx

2
ответ дан 30 November 2019 в 00:23
поделиться

Из записи в блоге Raymond Chen:

, Как я высвечиваю свою подпись окна и кнопку панели задач вручную?

, Как я высвечиваю свою подпись окна и кнопку панели задач вручную? Комментатор Jonathan Scheepers задается вопросом о тех программах, которые высвечивают их кнопку панели задач неограниченно долго, переопределяя количество флэш-памяти по умолчанию, установленное SysteParametersInfo (SPI_SETFOREGROUNDFLASHCOUNT).

функция FlashWindowEx и ее более простой предшественник FlashWindow позволяют программе высветить свою подпись окна и кнопку панели задач вручную. Менеджер окон высвечивает подпись автоматически (и Проводник следует подписи путем высвечивания кнопки панели задач), если программа называет SetForegroundWindow, когда это не имеет разрешения взять передний план, и случается так, что автоматическое высвечивание, которым управляет установка SPI_SETFOREGROUNDFLASHCOUNT.

В целях иллюстрации, я продемонстрирую высвечивание подписи вручную. Это вообще говоря, не рекомендуется, но так как Вы спросили, я покажу Вам как. И затем обещание Вы не сделаете этого.

Запускаются с программы царапины и вносят это простое изменение:

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);
  }
}

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

Другие члены структуры FLASHWINFO позволяют Вам настроить высвечивающееся поведение далее, такое как управление частотой флэш-памяти и количеством вспышек. и если Вы действительно хотите взять на себя управление, можно использовать FLASHW_ALL и FLASHW_STOP для включения и выключения подписи и кнопки панели задач точно способ, которым Вы хотите это. (Кто знает, возможно, Вы хотите отправить сообщение в азбуке Морзе.)

Опубликованный понедельник, 12 мая 2008 7:00 oldnewthing, Зарегистрированным под: Код

3
ответ дан 30 November 2019 в 00:23
поделиться

Я полагаю, что Вы ищете SetForegroundWindow .

0
ответ дан 30 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: