Hallo,
da ich mich im letzten Jahr auch mit dem Problem erfolglos rumgeschlagen habe, möchte ich einige Bermerkungen dazu loslassen.
Meiner Meinung nach gibt es keine Möglichkeit, dass der Notes-Client in der Version 5.x richtig auf die Änderung des Standarddruckers reagiert (weder wenn dieser per Hand über die Systemsteuerung noch per Programmbefehl umgestellt wird) - zumindest unter Windows NT und 2000. Liegt wohl daran, dass der Notes-Client eben nicht - oder nicht immer - auf WM_SETTINGCHANGE (alt: WM_WININICHANGE) reagiert. Ich bin mir auch ziemlich sicher, das irgendwo bei Lotus als "eingestandenen Fehler" gelesen zu haben, der ab Version 6 behoben sein soll.
Zu der hier häufig angegeben Methode SendMessage ist zu sagen, dass sie in dem Sinne kein "Ressourcen-Fresser ist", sondern so arbeitet, wie sie eingesetzt wird: Wird als Fenster-Handle HWND_BROADCAST verwendet, werden eben alle Top-Level-Window informiert. Zusätzlich wartet die Methode darauf, bis jedes Top-Level-Window auch die Nachricht verarbeitet hat.
Als Alterrnativen bieten sich an: SendNotifyMessage und SendMessageTimeout. Die erste Methode sendet die Nachricht an alle Fenster ohne auf die Bearbeitung zu warten. Bei der zweiten Methode kann man angeben, wie lange sie jeweils auf die Bearbeitung warten soll.
BOOL SendNotifyMessage(
HWND hWnd, // handle to window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
LRESULT SendMessageTimeout(
HWND hWnd, // handle to window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam, // second message parameter
UINT fuFlags, // send options
UINT uTimeout, // time-out duration
PDWORD_PTR lpdwResult // return value for synchronous call
);
Manfred