Visual2000 · Архив статей А.Колесова & О.Павловой

Советы тем, кто программирует на Visual Basic

Андрей Колесов, Ольга Павлова

© 1997, Андрей Колесов, Ольга Павлова
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале "КомпьютерПресс" N 1/97, с. 58-59.


Совет 76 . Как зарегистрировать OCX-элементы и OLE-сервера

При работе с VB3 никаких особых проблем с установкой на компьютер модулей VBX не было: модули можно было просто скопировать на дискету, затем переписать на жесткий диск и сразу начать с ними работать. Для элементов управления OCX такой метод не подходит — их надо не просто переписать, но и зарегистрировать. Аналогичная проблема возникает и с in-process OLE-серверами, которые можно разрабатывать в VB4.

Для регистрации модулей OCX и OLE-серверов необходимо воспользоваться утилитами REGOCX16.EXE и REGOCX32.EXE, которые можно найти в каталоге /TOOLS/PSS на компакт-диске с VB4. Первая из этих утилит предназначена для 16-разрядных элементов управления OLE, а вторая — для 32-разрядных. Будет полезно скопировать обе утилиты на свой жесткий диск. Объяснение процедуры регистрации приведем на примере элемента управления SYSINFO.OCX, находящегося на том же на компакт-диске.

Сначала скопируем OCX-файл на жесткий диск (обычно это делается в каталог WINDOWS\SYSTEM). Затем воспользуемся утилитой REGOCX32.EXE для регистрации этого элемента управления:

REGOCX32.EXE SYSINFO.OCX

После того как утилита завершит свою работу, в диалоговом окне References (оно вызывается из меню Tools) появится новый элемент, который теперь можно пометить как доступный. Наконец, в меню Tools выберите позицию Custom Controls и установите флажок в строке "Microsoft SysInfo Control".

Для регистрации in-process OLE-сервера потребуется использовать файл REGSVR32.EXE, который также можно найти в каталоге /TOOLS/PSS на компакт-диске с VB. Данная утилита поддерживает следующие опции:

  1. регистрация in-process DLL-библиотеки:
    REGSVR32.EXE C:\MYDIR\MYINPROC.DLL
    

  2. отмена регистрации in-process DLL-библиотеки:

    REGSVR32.EXE /U C:\MYDIR\MYINPROC.DLL
    

Эти утилиты можно использовать для регистрации элементов управления OCX, а также in-process DLL-библиотек, написанных в VB4. При создании автономных OLE-серверов они будут скомпилированы в исполняемый файл. Если дважды щелкнуть по OLE-серверу из Windows Explorer в Windows 95 или из Диспетчера Файлов (File Manager) в Windows 3.11, автономные OLE-серверы зарегистрируются самостоятельно. С другой стороны, можно зарегистрировать или отменить регистрацию автономных OLE-серверов из командной строки:

  1. регистрация автономного сервера:

    C:>MYOLESVR.EXE /REGSERVER
    

  2. отмена регистрации автономного сервера:

    C:>MYOLESVR.EXE /UNREGSERVER
    

В начало статьи

Совет 77. Совместное использование массивов для нескольких форм

Проблема здесь заключается в том, что массив, зарезервированный в некоторой форме, нельзя описать как Public. Попытка такого объявления вызовет следующее сообщение об ошибке: "Constants, fixed-length strings, arrays, and Declare statements not allowed as Public members of class or form module". То есть для того чтобы сделать массив доступным, например в разных формах, его нужно поместить в общий программный модуль. Однако иногда бывает удобнее все же резервировать массив в модуле формы. Для доступа к нему из других форм можно предложить различные варианты.

Вариант 1. Следует объявить переменную Public Variant в форме, содержащей массив, а затем присвоить ей содержимое всего массива:

Вариант 2. Внутри формы можно создать процедуру Property Get, которая будет возвращать заданный элемент массива:

В начало статьи

Совет 78. Как создать быстрые клавиши в Win95

Иногда бывает полезно уметь создавать быстрые клавиши в среде Windows 95 из программ, написанных на VB. Сделать это можно следующим образом.

В исходном коде, записанном в Setup Kit из VB4 (SETUP1.VBP), можно обнаружить следующее объявление функции:

Declare Function fCreateShellLink Lib "STKIT432.DLL" _ (ByVal lpstrFolderName As String _ ByVal lpstrLinkName As String _ ByVal lpstrLinkPath As String _ ByVal lpstrLinkArgs As String) As Long

Программа Setup обращается к этой функции, чтобы добавить быструю клавишу (в технической документации Microsoft она называется "Shell Link") для инсталлированной программы в меню Start в Win95. Не сразу очевидно, что данная функция может использоваться для создания быстрой клавиши в любой позиции каталога, содержащего меню Start.

Первый параметр этой функции (lpstrFolderName) относится к папке Programs из меню Start, которая в большинстве систем находится в каталоге \Windows\Start_Menu\Programs. Это означает, что если передать пустую символьную переменную в качестве первого параметра, Windows создаст быструю клавишу в самой папке Programs. Аналогично можно передвигаться от папки Programs к любому другому каталогу на жестком диске. Например, следующий код создает быструю клавишу на рабочем столе пользователя:

lResult = fCreateShellLink ("..\..\Desktop", _
  "Название быстрой клавиши", "d:\path\appname.exe", "")

В начало статьи