Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как заставить уведомления из Delphi 10.2 оставаться в Центре действий Windows 10?

Delphi , ОС и Железо , Windows

 

В данной статье мы рассмотрим проблему, связанную с отображением уведомлений, созданных в Delphi 10.2, в Центре действий Windows 10. После выполнения кода, предоставленного Embarcadero, уведомления исчезают слишком быстро и не остаются в Центре действий. Мы выясним, как заставить уведомления оставаться в Центре действий без необходимости ручного вмешательства каждого пользователя.

Проблема и предоставленный код

Для начала рассмотрим код, который приводит к проблеме:

procedure TNotify.btnShowClick(Sender: TObject);
var
  MyNotification: TNotification;
begin
  MyNotification := NotificationCenter1.CreateNotification;
  try
    MyNotification.Name := 'Windows10Notification';
    MyNotification.Title := 'Windows 10 Notification #1';
    MyNotification.AlertBody := 'RAD Studio 10 Seattle';

    NotificationCenter1.PresentNotification(MyNotification);
  finally
    MyNotification.Free;
  end;
end;

Уведомление создается, но не сохраняется в Центре действий. Это связано с тем, что по умолчанию настройки Windows не позволяют уведомлениям сохраняться в данном разделе.

Решение проблемы

Для решения проблемы необходимо зарегистрировать ваше приложение для отображения уведомлений в Центре действий. Это делается путем установки значения параметра ShowInActionCenter в реестре:

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\$prodName

Здесь $prodName — это уникальный идентификатор вашего приложения, который можно получить с помощью следующей функции:

function TNotificationsForm.getRegisterToastMessageKey : String;
const
  AppId = 'Embarcadero.DesktopToasts.';
begin
  result := AppId + THashBobJenkins.GetHashString(ParamStr(0));
end;

После получения $prodName необходимо установить значение параметра ShowInActionCenter в 1, что позволит уведомлениям отображаться в Центре действий.

Пример кода для регистрации уведомлений

procedure RegisterToastMessageKey;
var
  regKey: string;
begin
  regKey := TNotificationsForm.getRegisterToastMessageKey;
  // Здесь должен быть код для записи значения `ShowInActionCenter` в реестр
end;

Альтернативные источники и дополнительные замечания

В качестве альтернативного источника информации и для более глубокого понимания проблемы рекомендуется обратиться к следующим материалам:

Заключение

В данной статье мы рассмотрели, как заставить уведомления, созданные в Delphi 10.2, оставаться в Центре действий Windows 10. Ключевым моментом является регистрация приложения для отображения уведомлений в Центре действий через реестр Windows. Следуя инструкциям, вы сможете обеспечить сохранение уведомлений для всех пользователей, использующих ваше приложение, без необходимости ручного вмешательства.

Обратите внимание, что для полной работоспособности может потребоваться дополнительная настройка, в том числе использование активатора, о чем можно узнать из документации Microsoft.


 

Создано по материалам из источника по ссылке.

В статье обсуждается проблема сохранения уведомлений, созданных в Delphi 10.2, в Центре действий Windows 10, и предлагается решение, основанное на регистрации приложения для отображения этих уведомлений в Центре через настройки реестра Windows.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 01:32:51/0.0032238960266113/0