Wie wäre es mit WM_SETTINGCHANGE? Das Ereignis sollte glaube ich immer gefeuert werden und hier zeig ich wie Du den aktuellen Basis-Druckernamen bekommen könntest:
Delphi-Quellcode:
uses ...Vcl.Printers...
...
procedure WMSettingChange(var Message: TMessage); message WM_SETTINGCHANGE;
...
implementation
procedure TForm12.WMSettingChange(var Message: TMessage);
begin
Printer.PrinterIndex := -1;
Label1.Caption := Printer.Printers[Printer.PrinterIndex];
end;
Hilft das?
Das wird nur ausgelößt, wenn der Standarddrucker geändert wird oder wenn ein neuer Drucker hinzukommt. Aber NICHT wenn ein Drucker gelöscht wird!