AFAIK, нет способа получить имя модуля BAS в коде. Обычное решение - использовать константу уровня модуля, как в ответе Майка .
AFAIK единственный способ получить ProgID (программный идентификатор, Имя проекта в диалоговом окне свойств проекта) - это вызвать ошибку в модуле BAS, перехватить ее и прочитать Err.Source
.
Это все довольно хлопотно, и поэтому мы обычно не пытаемся включать имя модуля или ProgID в наши стандартные обработчики ошибок. Мы «катим свой» стек вызовов с именами подпрограмм. Этого всегда достаточно, чтобы узнать, какие модули задействованы. Подпрограммы в модулях BAS обычно имеют уникальные имена, верно?
Что-то вроде this , и вы можете добавить это автоматически с помощью бесплатной надстройки MZTools VB6.
Sub / Function whatever
On Error Goto Handler
do some stuff
Exit Sub / Function
Handler:
Err.Raise Err.Number, "(function_name)->" & Err.source, Err.Description
End Sub
Каждая подпрограмма верхнего уровня в DLL или OCX имеет аналогичный обработчик ошибок, но также включает App.ExeName
, поэтому мы можем определить, когда ошибки пересекают границы компонента.