如何让吐司通知留在使用Delphi的Windows 10操作中心

时间:2018-03-04 10:06:15

标签: windows delphi notifications toast

我在Windows 10中使用Delphi 10.2。以下代码是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;

ADDED:打开Windows设置>的切换后系统>通知&动作我可以看到HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \通知\设置\ Embarcadero.DesktopToasts.0579D43A \ ShowInActionCenter是1,但谁可以使用这个应用程序的每个用户可以'吨手动做这一切的时候,我不能预测密钥的名称。

1 个答案:

答案 0 :(得分:4)

你会在这里找到答案: powershell script creates Windows 10 notification and it disappears after popup

您必须注册“在行动中心显示通知”的申请 “HKCU:\ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Notifications \ Settings \ $ prodName” - Name“ShowInActionCenter” - Type Dword -Value“1”

要使用$ prodName:

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

Embarcadero在这里做得不好,但是你得到了钥匙, 或者从System.Win.Notification单元制作副本并根据需要进行更改。