ЖУРНАЛ «СТА» №3/2002

87 СТА 3/2002 www.cta.ru В З АПИС Н УЮ К НИЖК У ИНЖЕ Н Е РА / ВОП Р ОСЫ - О Т В Е Т Ы ' Декларация стандартной APIфункции RemoveMenu Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Integer, ByVal nPosition _ As Integer, ByVal wFlags As Integer) _ As Integer ' Декларация стандартной APIфункции FindWindow Declare Function FindWindow Lib «user32» Alias _ "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long ' Стандартная константа кнопки закрытия окна Global Const MF_BYPOSITION = &H400 Public Sub DisableCloseButton(ThehWnd As Long) Dim SystemMenu As Integer Dim iRes As Integer SystemMenu = GetSystemMenu(ThehWnd, 0) iRes = RemoveMenu(SystemMenu%, 6, MF_BYPOSITION) End Sub В результате получится форма, кнопка закрытия кото- рой будет неактивна и для закрытия которой понадобится нажать на специальную кнопку. В ОПРОС Как в программе на VBA получить значение OPC-тега? О ТВЕТ Ответ на этот вопрос можно разделить на две части. Первая половина относится к тегам, которые существуют в доступных серверах ОРС, но не используются в данной экранной форме, то есть не подключены ни к одному из существующих объектов GraphWorx. В этом случае необхо- димо написать довольно объемный код на VBA, пример которого есть в разделе AppNotes на любом стандартном диске GENESIS32. Если же тег ОРС имеет соединение с какимлибо объек- том GraphWorx, то получить его значение не представляет никакого труда. Достаточно воспользоваться функцией ThisDisplay.GetPointObjectFromName() с параметром, в котором необходимо указать имя тега, например, создав в проекте кнопку и привязав к этой кнопке такой VBAскрипт: Sub a(o As GwxPick) Dim p As GwxPoint ‘ Определяем объект и соединяем с тегом Set p = ThisDisplay.GetPointObjectFromName("ICON- ICS.Simulator.1\SimulatePLC.Sine") MsgBox p.value End Sub Получим: В ОПРОС Как можно в программе на VBA определить, кто именно из операторов в настоящее время зарегистрирован в системе? О ТВЕТ Для доступа к этой информации необходимо воспользо- ваться двумя библиотеками Security Automation, поставля- емыми вместе с GENESIS32. Для этого в меню ToolsReferences в окне редактора VBA добавьте библиоте- ки Iconics Security Automation Library и Iconics Security Automation Helper Library: Все, что Вам теперь необходимо сделать в Вашей про- грамме на VBA, — это получить свойство LoggedIn у объ- екта класса SecDual, например так: Sub a(o As GwxPick) Dim SecServer As SecDual ' Определение объекта класса Security server Set SecServer = New SecDual ' Создание объекта SecServer.Node = «GUSEV» ' Здесь необходимо ука- зать наименование Вашего узла MsgBox SecServer.LoggedIn ' Вывод имени зарегист- рированного пользователя End Sub ● С.А. Гусев — сотрудник фирмы ПРОСОФТ 119313 Москва, а/я 81 Телефон: (095) 234-0636, факс: (095) 234-0640 E-mail: info@prosoft.ru

RkJQdWJsaXNoZXIy MTQ4NjUy