Einzelnen Beitrag anzeigen

sjansen

Registriert seit: 16. Okt 2019
Ort: Siegen
9 Beiträge
 
Delphi 10.4 Sydney
 
#1

Windows Notification Reaktion

  Alt 3. Feb 2022, 09:07
Delphi-Version: 10.4 Sydney
Hi,

ich habe eine Verständnis Frage bzgl (Windows)-Notifications.

Einfacher ist vermutlich wenn ich erkläre, was ich erreichen möchte.
Wenn ein Benutzer auf eine gesendete Notification klickt, möchte ich eine Action ausführen (einen Link öffnen oder ein ShellExecute).
In RecieveLocalNotification komme ich aber nur, wenn die Notification noch gezeigt wird. Befindet sich die Notification nicht mehr auf dem Bildschirm, sondern wird nur noch im Benachrichtigungs-Teil von Windows angezeigt, funktioniert das ganze nicht mehr. Lässt sich das überhaupt umsetzen?

Vielen Dank

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.Notification;

type
  TForm1 = class(TForm)
    btnSendNotification: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btnSendNotificationClick(Sender: TObject);
  private
    { Private-Deklarationen }
    ANotificationCenter: TNotificationCenter;
    procedure RecieveLocalNotification(Sender: TObject; ANotification: TNotification);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnSendNotificationClick(Sender: TObject);
begin
  var tmpNotification: TNotification;
  tmpNotification := TNotification.Create;
  tmpNotification.Name := 'Windows Notification';
  tmpNotification.Title := 'My first Notification';
  tmpNotification.AlertBody := 'Notification send by my application.';
  ANotificationCenter.PresentNotification(tmpNotification);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ANotificationCenter := TNotificationCenter.Create(Self);
  ANotificationCenter.OnReceiveLocalNotification := RecieveLocalNotification;
end;

procedure TForm1.RecieveLocalNotification(Sender: TObject; ANotification: TNotification);
begin
  Beep;
end;

end.
  Mit Zitat antworten Zitat