Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 09.10.04 - 15:22:35

Titel: Menü: File/Print... abfangen
Beitrag von: TMC am 09.10.04 - 15:22:35
Gegeben:
Geöffnetes Dokument. User betätigt Menü: File/Print....

Genau dies würde ich gerne abfangen (zumindest eine Msgbox anzeigen, wenn User diesen Menübefehl auswählt.)

Gibt es da eine Möglichkeit? Evtl. auch über API?

Matthias

**EDIT**
$KeepPrivate will ich allerdings hier nur ungern verwenden....
Titel: Re: Menü: File/Print... abfangen
Beitrag von: Semeaphoros am 09.10.04 - 15:41:00
Um, da man die Menus im NoC nicht beeinflussen kann - leider - gibt es da nur ein Gehacke über die WinAPI, soweit mir bekannt ist. Und das ist nicht wirklich trivial, da man sich da in die Keyboard-Queue einnisten muss und dann die Tastenfolgen beobachten muss. Erstens gibt es da ja mehrere Wege, dahinzukommen (1. Alt-F P, 2. Ctrl - P, 3. mit der Maus), die alle abgefangen werden müssten, zweitens wird so etwas dann sofort abhängig von der Sprache des installierten Clients
Titel: Re: Menü: File/Print... abfangen
Beitrag von: TMC am 09.10.04 - 15:45:55
Danke für die Info Jens.

da man sich da in die Keyboard-Queue einnisten muss und dann die Tastenfolgen beobachten muss.

Das klingt sehr gruselig.
Ich werde es evtl. doch über $KeepPrivate lösen, mal sehen.....
Titel: Re: Menü: File/Print... abfangen
Beitrag von: eknori am 09.10.04 - 15:51:43
tja, wenn man ein handle zum Menue bekäme, wäre der Rest über

Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As _
    Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long

schnell gemacht. Aber leider bekommt man kein handle zum Menue
Titel: Re: Menü: File/Print... abfangen
Beitrag von: TMC am 09.10.04 - 15:55:22
:-\


Ich mache es jetzt doch über $KeepPrivate. Wenn User unbedingt drucken muss, bekommt er eine Print-Form.

Ein Print-Buthong in der normalen Form enthält folgenden Code:

Code
Sub Click(Source As Button)
	
	Dim session As New NotesSession	
	Dim doc As NotesDocument
	Dim uiws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument	
	Dim uidocTempPrint As NotesUIDocument	
	
	Set uidoc = uiws.CurrentDocument
	Set doc = uidoc.Document
	
	doc.Form = "frmPrint"
	doc.~$KeepPrivate = ""
	Set uidocTempPrint = uiws.EditDocument( False, doc, True)
	Call uidocTempPrint.Print (1)
	Call uidocTempPrint.close
	
End Sub


Trotzdem danke für Eure Infos.
Titel: Re: Menü: File/Print... abfangen
Beitrag von: Semeaphoros am 09.10.04 - 20:45:39
Das klingt sehr gruselig.

Das klingt nicht nur, das ist es auch, und - ohne es jetzt genauer anzuschauen - wahrscheinlich nicht ohne zusätzliche DLL machbar.
Titel: Re: Menü: File/Print... abfangen
Beitrag von: TMC am 09.10.04 - 21:04:45
Eigentlich etwas schade, dass dies mit Boardmittel nicht möglich ist.

Warum schade:
Notes wurde ja eigentlich für das papierlose Büro geschaffen, Drucken ist daher auch wirklich keine Stärke von Notes.
Daher wäre es wünschenswert, für Print-Aktionen mehr Programmier-Unterstützung zu bekommen, um eben diese abfangen zu können. Cool wäre z.B.ein "QueryPrint" - Form- und View - Event.

Ich habe zwar jetzt ein $KeepPrivate implementiert, aber muss die Nachteile dadurch in Kauf nehmen (z.B. keine Textkopie mehr via Ctrl+C möglich).