Domino 9 und frühere Versionen > Entwicklung
C-Api Workaround von EditDeselectAll
rar:
Hi,
Ich suche eine Möglichkeit die selektierten Dokumente in einer Ansicht am Ende meines Scriptagents wieder zu deselektieren.
DeselectAll gibts leider nur im uidoc.
Ich dachte mir: dann ruf halt ein 2ten Agent auf, der @Command([EditDeselectAll]) ausführt. Aber das Funktioniert 'in diesem Kontext' nicht.
Auf der Suche nach einer Lösung habe ich folgendes gefunden:
Declare Sub keybd_event Lib "user32.dll" (Byval bVk As Integer, Byval bScan As Integer, Byval dwFlags As Integer,Byval dwExtraInfo As Integer)
keybd_event 18,0,0,0 ' Alt key down
keybd_event 69,0,0,0 ' E key down
keybd_event 69,0,2,0 ' E key up
keybd_event 18,0,2,0 ' Alt key up
keybd_event 68,0,0,0 ' D key down
keybd_event 68,0,2,0 ' D key up
Ich bin mir zwar nicht sicher, ob das mein mein Problem lösen kann, aber es schaut nicht so schlecht aus.
Beim DeutschenClient braucht man aber um die Auswahl aufzuheben Alt+B H und nicht Alt+E D.
Jetzt weiß ich aber nicht wie ich an die Zahlenkombination von B und H komme.
Wäre fein, wenn mir ein CAPI-Mensch weiterhelfen könnte.
Natürlich wäre ich für andere Anregungen auch dankbar.
lg
-rar
eknori:
http://www.onvice.de/tipps/visualbasic-keybd_event.html
Semeaphoros:
Ist das im gleichen Zusammenhang wie Dein vorheriges Problem mit Actions? Wenn ja, geht es recht einfach: in der Action rufst Du zuerst per @Formula oder per einfache Aktion den Agenten auf und danach führst Du EditDeselectAll aus. Das Senden von Key-Events via Win-API ist ziemlich heikel - nicht sprachunabhängig, auch nicht kontextunabhängig.
koehlerbv:
Stimme Jens voll zu: Finger weg von keybd_event ! Das ist äusserst unsauber.
Zumal Jens ja gezeigt hat, dass viel eleganter und sicherer geht ;-)
Bernhard
rar:
Hängt voll damit zusammen.
Ich habe 2 Dokumente gewählt und laß den Agent laufen. Der Agent ändert ein Status und durch die Änderung fliegen die Dokumente aus Ansicht.
Wenn ich danach ein Dok auswähle steht in der Statusleiste, daß 3 Dokumente ausgewählt sind.
Wenn ich dann nach dem ersten Agent ein Agent mit @Command([EditDeselectAll]) aufruf, kommt erst die Meldung
Notes Error: Im Hintergrund ausgeführter oder eingebetteter Agent verwendet ein nicht unterstützten Auslöser und Suchtyp
und dann kommt:
Um diesen Agent auszuwählen, muß wenigstens ein Dokument ausgewählt sein
Kann ich irgendwas hin machen, wenn ich die 6 Key-Events aufrufe?
*edit
Und dann hängt sich die DB auf. Hab ich noch nie geehen. Db reagiert nicht mehr. Man kann sie nur noch schließen.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln