Domino 9 und frühere Versionen > Entwicklung

Drucker und Druckoptionen einstellen

<< < (8/13) > >>

muR:
@enny, sorry, hat ich vergessen vor dem Speichern zu löschen. Eine andere Möglichkeit als mit SendMessage die Programme zu informieren ist mir nicht bekannt. Im Internet ist auch nur diese SendM.. Möglichkeit zu finden. Ich frag mich auch warum Notes erst auf die zweite SendMessage reagiert. Hat das schon mal jemand mit Notes 6 probiert? Geht's da einfacher?

Es schein auch ein Unterschied zu sein ob Du in der Systemsteuerung den Drucker umstellst oder per Programm. Bei einer Umstellung in der Systemsteuerung reagiert Notes sofort darauf beim Programm nicht. Hat jemand hierfür eine Erklärung? ???

enny:
@mur: Dafür habe ich eine Erklärung:
Wenn du über die Systemsteuerung den Drucker umstellst übernimmt Windows selber die Aufgabe die Programme davon zu informieren! Wenn du genau aufpasst merkst du das auch, denn die Umstellung dauert auch eine gewisse Zeit und das müsste dann der HWND_Broadcast sein.
Übrigens muss es eine andere Lösung als SendMessage geben. Wenn Du dir mal den Link zur SendMessage Beschreibung bei MSDN anschaust den ich gepostet habe, steht dort nämlich das man gerade für solche Programme, die sowas bloß über Broadcasts verstehen, eine andere Funktion nutzen soll. Ich habe bloß das Problem das ich keine Ahnung hab was ich dieser Funktion übergeben soll!!!

muR:
Hab' mir die SendMessage nochmal angesehen, dabei ist auch der "HWND_BROADCAST" beschrieben.


Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
  (ByVal hWnd As Long, ByVal Msg As Long, wParam As Any, _
  lParam As Any) As Long

Beschreibung:
SendMessage sendet eine Nachricht an ein anderes Fenster und wartet auf eine Antwort. Die Nachricht umgeht die Nachrichtenwarteschlange und wird unmittelbar verarbeitet.

Parameter:
hWnd Das Handle des Fensters, das die Nachricht erhalten soll. Über die Konstante "HWND_BROADCAST" erreicht man, dass diese Nachricht an alle TopLevel-Fenster gesendet wird.
Msg Legt die zu versendende Nachricht fest.
wParam Zusätzliche Informationen über die Fensternachricht in "Msg".
lParam Zusätzliche Informationen über die Fensternachricht in "Msg".


Beispiele und Infos unter: http://www.vbarchiv.net/vbapi/SendMessage.php

Der Link (enny) zu MSDN funktioniert bei mir nicht, werde es später nochmal versuchen, vielleicht findet sich dort noch etwas.

Manfred:
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

ata:
@manfred

... das ist auch mein Stand der Dinge...

ata

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln