2015-05-14 3 views
0

Есть ли способ узнать, что агент работает в режиме отладки (Tools/Debug LotusScript активирован)?Как проверить, работает ли агент в Debug?

Я ничего не нашел в классе NotesAgent, что-то вроде RunOnServer, но RunInDebugger.

Мне нужно это, чтобы избежать использования функции индикатора выполнения, расположенной в NNOTESWS.DLL, которая всплывает над отладчиком и запрещает любой щелчок (шаг или просмотр переменных). Кстати, если это происходит с кем-то, кого вы все еще можете нажать F8/F5, это поможет хотя бы не убивать Notes.

ответ

2

Есть очень хороший пример для этого в OpenNTF. Вы можете найти его here.

И на самом деле это для индикатора выполнения, поэтому вы можете использовать весь класс оттуда.

Трюк: вы добавляете функцию с инструкцией stop. Вы измеряете время до постановки остановки и после. Если пройденное время превышает 100 мс, пользователь должен был нажать «продолжить», чего ему никогда не удавалось сделать за такое небольшое количество времени. Если отладчик не включен, то остановка игнорируется - без задержек ...

Вот функция, используемая в связанном OpenNTF статье:

Public Function IsDebugMode() As Boolean 
    Dim start As Variant 
    start = Getthreadinfo(6) ' LSI_THREAD_TICKS 
    Stop 
    If Getthreadinfo(6) - start > 100 Then IsDebugMode = True 
    ' If you debug the application you will not be able to press the CONTINUE-Buton 
    ' within less then 100 milliseconds, otherwise the STOP-statement is not in function 
    ' and you will always be quicker then 100 milliseconds 
End Function 

Хотя комментарий является на самом деле неправильным (100 тиков не 100 мс, вам нужно будет делиться тиками в секунду, чтобы получить это значение), код все еще работает и делает именно то, что вы хотите.

+0

Он отвечает на мою проблему (даже если я получаю одну нежелательную остановку) это доступное решение, я, вероятно, буду использовать timer() вместо Getthreadinfo. Благодаря! –

Смежные вопросы