Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: rar am 21.04.04 - 15:48:16

Titel: C-Api Workaround von EditDeselectAll
Beitrag von: rar am 21.04.04 - 15:48:16
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
Titel: Re:C-Api Workaround von EditDeselectAll
Beitrag von: eknori am 21.04.04 - 15:51:16
http://www.onvice.de/tipps/visualbasic-keybd_event.html (http://www.onvice.de/tipps/visualbasic-keybd_event.html)
Titel: Re:C-Api Workaround von EditDeselectAll
Beitrag von: Semeaphoros am 21.04.04 - 15:51:32
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.
Titel: Re:C-Api Workaround von EditDeselectAll
Beitrag von: koehlerbv am 21.04.04 - 16:07:41
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
Titel: Re:C-Api Workaround von EditDeselectAll
Beitrag von: rar am 21.04.04 - 16:15:20
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.
Titel: Re:C-Api Workaround von EditDeselectAll
Beitrag von: Semeaphoros am 21.04.04 - 16:17:43
Das ist es ja gerade, ist nicht abschätzbar, was passiert, wenn die Umgebung ändert .... aber warum probierst Du meinen Vorschlag nicht? Kein zweiter Agent, direkt in der Aktion, welche auch den vorhergehenden Arbeitsagenten aufruft, den EditDeselectAll aufrufen.
Titel: Re:C-Api Workaround von EditDeselectAll
Beitrag von: rar am 21.04.04 - 16:37:45
Problem gelöst.  :D
Ich hatte den ersten Agent mit einer einfachen Aktion aufgerufen.
Danach war das Dokument, das schon weg ist noch immer ausgewählt.
Jetzt hab ich das in ToolsRunMacro geändert, um danach den DeselectAll aufzurufen. Beim testen bin ich dann draufgekommen, daß die Dokumente bereits nach dem ToolsRunMacro nicht mehr markiert sind. So wie es eigentlich sein sollte.
Also ein Bug bei der Einfachen Aktion.

Und was lerne ich daraus?
Nicht so faul sein und ab jetzt die Einfachen Aktionen ignorieren.

Vielen, vielen Dank euch allen.
Jens, du hast ein Bier gut.

lG
-dani
Titel: Re:C-Api Workaround von EditDeselectAll
Beitrag von: Semeaphoros am 21.04.04 - 16:41:35
Wow, ich hol mir das gelegentlich ab :)

Fein, dass es funktioniert.
Titel: Re:C-Api Workaround von EditDeselectAll
Beitrag von: koehlerbv am 21.04.04 - 16:50:27
Zitat
Nicht so faul sein und ab jetzt die Einfachen Aktionen ignorieren.

Genau so ! Das Zeug ist für ernsthaftere Aufgaben völlig ungeeignet. Aber darum heisst es ja auch "einfache Aktionen"  ;)

@Jens: Wenn dani die Flasche Bier ausgibt, sag' Bescheid - Andreas und Ulrich und Matthias und Martin und Anton und Thomas (mal sehen, wer noch) kommen dann mit und helfen Dir  ;D

Bernhard
Titel: Re:C-Api Workaround von EditDeselectAll
Beitrag von: Semeaphoros am 21.04.04 - 16:52:32
Entwicklercamp Version 4.1  ;D