• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Запуск Ui агента из скрипта...

  • Автор темы fedotxxl
  • Дата начала
F

fedotxxl

Странно, всегда думал, что метод run для этого и сделан - чтобы агенты отрабатывались на локале.... но нет =(
Нужно запустить агент через LS (пусть кнопкой), чтобы работали messagebox'ы и т.д.
 
A

Azrael

notesAgent.Run( [ noteID$ ] )

This method runs any agent regardless of source language (simple action, formula, LotusScript, Java).
You cannot run an agent recursively (cannot call it from itself).
The user cannot interact directly with a called agent. User output goes to the Domino log.
You cannot debug a called agent.
You cannot use the Notes UI classes in an agent called by this method.
For COM applications, the Notes program directory must be in the application path.

Только последовательностью агентов, запускаемых на @-формулах, либо централизацией - задать в LotusScript-библиотеке функцию, вызывать из агента и из других мест, где понадобилось :unsure:
 
F

fedotxxl

либо централизацией - задать в LotusScript-библиотеке функцию, вызывать из агента и из других мест, где понадобилось
Прости, не понял тебя...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
а чё понимать-то "наливай - да пей" :unsure:...
зачем вызывать агент из агента? Если код используется более одного раза (зависимо от контекста) - его надо вынести в библу (ИМХО)
 
A

Akupaka

зачем вызывать агент из агента? Если код используется более одного раза (зависимо от контекста) - его надо вынести в библу (ИМХО)
и шо? библиотечный код, вызванный из агента, не считается кодом вызванным из агента? :wacko:
 
A

Akupaka

а хз... шо ему надо )) неужто fedotxxl не знает, что код можно поместить в либу и вызвать оттуда, а не писать для этого агент?
что-то сомневаюсь...
мне вот почему-то кажется, что его агент должен был как-то умно собрать документы, либо чего-то еще... поэтому и агент...
 
A

Akupaka

а я-то глупый и не заметил!... спасибо, что подсказал! :D))
я это тоже читал и понял, в чем проблема, но боюсь, что ни запуская агент собаками, ни вызывая из агента библиотечный код, мессаджи не появятся...

просто, автор как бы не указал, что ему нужно в действительности, т.е. чего он хочет добиться вызывая агент...
возможно, если автор не знает, что код можно поместить в библиотеку и вызвать его из любого другого места, то есть смысл рекомендовать ему это сделать... но, может автор преследует другие цели... хз :wacko:)
 
F

fedotxxl

Что мне нужно:
мне нужно "динамически" исполнять UI код. Т.е. аналитик указал, что перед кнопка должна отображать messageBox. В кнопке я это прокодировать не могу (не спрашивайте почему), я могу "динамически" подтянуть нужный мне агент и запустить его... но тут облом получился
Единственное, что пришло на ум - execute... прийдется так
 
A

Akupaka

пажди... в кнопке не можешь закодить мессаджбокс, а закодить нужный агент проще?! О_О
в чем динамичность вообще? и что за "динамичность" нужна?

воркфлов строите, что ли? ;)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
дык почему UI код низя в библе создать?
Кнопка же не диктует цепочку агентов, она могет тока один вызвать, или она и вызывает агент через скрипт?
 
F

fedotxxl

Akupaka
Угу =) У меня кнопка настраивается настроечными документом. Почти все можно учесть, но что-то нужно позволить прокодить. Соотв. это кодирует разработчик, а налитик должен указать, что нужно (в теории) запустить такой-то агент.
Этот агент должен испонять UI методы... сейчас я сделал так - разработчик добавляется в класс метод, а аналитик указывает какой метод запустить. Метод запускается при помощи execute. Есть какое другое решение?
 
D

dobozy

Если всё так динамично, то наверное Execute и есть самое оптимальное решение. Только тут надо помнить, что всередине его не работает
On Error ...

Или я ошибаюсь?
 
A

Akupaka

работает, на сколько мне известно...
 
D

dobozy

работает, на сколько мне известно...

Если вы пишите

str_LS = "g_MyClass.Method1()"

И перехватчик ошибок зашит в методе, то всё будет хорошо.

А если вы пишите в строке код типа

On Error Goto ErrorHandler

Set g_s = New NotesSession
Exit Function

ErrorHandler:
Messagebox "Error"
Exit Function

То метки не отработают...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
наскока я помню... Print тоже не будет работать в таком коде
 
A

Azrael

У меня похожий проект есть, либа, в ней функции, со стандартным набором параметров (документ, над которым совершается действие, карточка действия), в функции On Error Goto ErrLabel, мессаджбоксы, принты, ui-шные классы - все робит). Единственное неудобство, код внутри Execute отлаживать низзя.
 
A

Akupaka

короче, мы тут с dobozy пообщались и пришли к выводу, что:

1) метки в execute в виде (ниже) не будут работать

Код:
exec_str = |
on error goto label1
...
|
execute(exec_str)

2) обработчик вызывающего execute кода, если есть, успешно справляется с обработкой ошибок в execute, но имеет несколько странный вид :eek:
а именно, обработчик такого вида

Код:
Messagebox Error & " (" & Cstr(Erl) & ")"

выдаст

$EXECUTE$+11: Division by zero (28)

где, 28 - строка соотв. вызову execute, $EXECUTE$+11 - место в коде, который передан в execute

3) для того, чтобы корректно создать обработчик, если все-таки понадобиться свой, в execut'e, необходимо описать в коде execute процедуру, в которой будет обработчик, а потом ее же вызвать

Код:
Sub Initialize
On Error Goto errh

Dim execStr As String

execStr = |
sub TestSub()
on error goto errh
dim i as Integer
dim r as Double
i = i + 5
r = i/0
eos:
Exit Sub
errh:
Messagebox Error & " (" & Cstr(Erl) & ")"
Resume eos
end sub

call TestSub()
|

Execute(execStr)

eos:
Exit Sub

errh:
Messagebox Error & " (" & Cstr(Erl) & ")"
Resume eos
End Sub

dobozy, поправь меня, если в чем-то твои мысли не сошлись )))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!