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

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

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

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

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

Обновление фреймов

  • Автор темы mtrx
  • Дата начала
M

mtrx

Помогите плиз
Есть набор 3-х фреймов и менюшка, в каждом фрейме открываются вьюи из других баз с помощью менюшки.
Нужно сделать агент, который каждые 5 мин обновляет все фреймы на случай, если там инфа изменится.
Чувствую, что легко и просто, но не получается никак
 
Y

Yakov

mtrx
Я не знаю, обновляются ли представления во всех фреймах при нажатии на клавишу F9. Если обновляются все фреймы, то есть одно очень простое решение. Суть. Пишем небольшую программу на Си, которая посылает окну клиента Notes сообщения об однократном нажатии клавиши F9. Вот текст этой программы:
Код:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND handle;
handle = FindWindow("NOTES", NULL);
if (handle != 0)
{
PostMessage(handle, WM_KEYDOWN, VK_F9, 1);
PostMessage(handle, WM_KEYUP, VK_F9, 0xC0000001);
}
return 0;
}
Затем настраивается Планировщик заданий Windows на запуск этой программы с нужной периодичностью. Всё.

Вот, кстати, и сама программка.
 

Вложения

  • refresher.zip
    522 байт · Просмотры: 102
M

mtrx

мысль хорошая, но надо сделать с помощью агента, всем пользователям ставить программку нереально
 
Y

Yakov

Насколько я знаю, если БД расположена на сервере, то агенты по расписанию работают на сервере. Чтобы агент работал по расписанию на клиенте, БД должна быть локальной.

всем пользователям ставить программку нереально
Lotus как-то всем поставили, вполне реально было...
 
M

mtrx

Насколько я знаю, если БД расположена на сервере, то агенты по расписанию работают на сервере. Чтобы агент работал по расписанию на клиенте, БД должна быть локальной.
В БД собственных документов нет, она служит только в качестве оболочки, поэтому, впринципе, может быть и локальной

а, кстати, по нажатии F9 обновляется только активный фрейм, а все остальные нет. Надо чтобы все сразу обновлялись..
 
G

Guest

@Command( [RefreshFrame]; targetFrame ) не пробовали?
 
O

Omh

Как я понимаю, во фреймах отображаются view.
Теороетически могу предложить:
ws.ViewRefresh на PostOpen у view по таймеру :)
 
Y

Yakov

Или еще один скрытый фрейм с формой, у которой на PostOpen @Command( [RefreshFrame]; targetFrame ) по таймеру.
 
M

mtrx

@Command( [RefreshFrame]; targetFrame ) в агенте не работает, выдает:
Ошибка в формуле: Использование операторов @Command и других функций интерфейса не разрешено в поиске этого типа; укажите 'Нет' как конечную це■
На основе формулы изменено документов: 0
а если повесить на кнопку, то все ок... а как сделать, чтобы она по таймеру выполнялась?
или еще, как можно на Lotus Script обновить фрейм по имени, типа @Command( [RefreshFrame]; targetFrame ) ?
 
M

mtrx

что то похожее
Sub Initialize
Dim session As New NotesSession

Dim workspace As New NotesUIWorkspace
'Call workspace.OpenframeSet("Main")
Call workspace.ReloadWindow

End Sub

но этот код переоткрывает базу, а не обновляет
 
G

Guest

Да все вроде нормуль, я конечно на глаз не вижу обновляется что или нет, но ошибки никакой нет. Делаете агент, там выбираете формула (на чем писать), туда запихиваете @Command( [RefreshFrame]; targetFrame ). В свойствах агента выбираете на что распространяются действия агента (target), в этом пункте ставити "None". Теперь лотус ниже пишет серым шрифтом, что как раз в таком агенте и надо писать @Command. После этого никаких ошибок не возникает. Проверить обновляется ли фрейм на самом деле - лень :wacko:
 
M

mtrx

В свойствах агента выбираете на что распространяются действия агента (target), в этом пункте ставити "None". Теперь лотус ниже пишет серым шрифтом, что как раз в таком агенте и надо писать @Command.
Может это косяк лотуса...
Если ставить триггер на "событие", то пункт "None" есть, и с ним, при выборе агента из меню, все работает, а если поставить триггер "по расписанию", то такого пункта нет.... только "Все новые и измененные документы" и "Все документы в базе данных"...
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Это не косяк. @Command только для работы через UI. Шедульные агенты по определению такими быть не могут.
 
30.05.2006
1 345
12
BIT
0
Есть такой NotesTimer-класс.
Прикручиваете его к UIView и оно автоматом рефрешится каждые N секунд
 
M

mtrx

А если из одного агента по расписания запускать уже тот самый наш агент?
Пробовал, тоже не работает..
Есть такой NotesTimer-класс.
Прикручиваете его к UIView и оно автоматом рефрешится каждые N секунд
А можно поподробней? Мне так и не удалось найти аналог @Command( [RefreshFrame]; targetFrame ) для LotusScript
 
Мы в соцсетях:

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