|
Регистрация COM-exe компонента
|
|||
---|---|---|---|
#18+
Нужно опрашивать веб-сервис под разными логинами, для "сброса" идентификаторов сессии нужно или выжыдать паузу порядка минуты-двух или выгружать программу. С паузой долговато, поэтому решил сделать COM-компонент Out of Process (ActiveX EXE) и постоянно загружать/выгружать его. Сделал, проверил, работает. Хотел перенести на работающий сервер, но столкнулся с проблемой. Не могу зарегистрировать получившийся exe-файл как СОМ-компонент. При попытке регистрации (набираю в командной строке) Код: plaintext
сообщение об ошибке Не найдена инструкция PARAMETER Поиск информации на тему какой код нужен для регистрации EXE-сервера ничего не принёс. Везде написанно что после сборки нужно просто зарегистрировать компонент, запустив exe-файл с ключем. И должно быть счастье. Но его нет. Нашел редкие примеры использования COM-компонент Out of Process (ActiveX EXE) на сайте Михаила Дроздова - tmcomexe.zip компонент не регистрируется как написанно в рекомендациях и там же другий пример, который не ругается при регистрации, но при попытке обращения выдает ошибку OLE error code 0x8002801d: Library not registered. Как мне зарегистрировать компоненту? Спасибо. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2010, 12:53 |
|
Регистрация COM-exe компонента
|
|||
---|---|---|---|
#18+
Сообщение об ошибке говорит о том, что файл vfpcom.exe не есть COM-компонент. Собственно, COM-компоненты в FoxPro создаются при помощи довольно специфических настроек загрузочных (стартовых) классов. В данном случае должно быть следующее 1. Главный стартовый файл проекта - это файл PRG в котором одна единственная команда Код: plaintext
По сути, главный стартовый файл - это просто "заглушка чтоб было". Но он вообще ничего не делает 2. Далее создаете класс, на основе любого базового класса FoxPro. Например, я создал на основе класса Line, поскольку он самый "легкий" (в версии VFP6). В этом классе предусматриваете "входы/выходы". Т.е. те методы и свойства к которым будете обращаться как к свойствам и методам COM-объекта 3. При создании класса надо сделать небольшое дополнение. Зайти в его свойства (Class Info) и поставить птичку в пункте "OLE Public". Именно эта птичка и определяет тот факт, что будет создаваться COM-библиотека, а не "обычный" EXE. Теперь, если зайти в окно Project Info \ закладка "Servers", то этот класс будет указан как серверный класс и можно будет (если необходимо) изменить свойство Instansing. 4. Все. Теперь, если при компиляции проекта выбрать пункт "Win32 executable / COM server (exe)" как раз и будет создан файл EXE как COM-сервер и он будет требовать регистрацию описанным способом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2010, 22:50 |
|
Регистрация COM-exe компонента
|
|||
---|---|---|---|
#18+
ВладимирМ, Спасибо, я собирал проект с двумя файлами - config.fpw и MyClass.prg. В MyClass.prg объявление класса с одним методом. Вот этот вариант и не работал. Ближе к вечеру сделал новый проект в котором было тоже два файла - config.fpw и MyClass.vcx. MyClass.vcx содержал мой класс с одним методом. И собранный проект завелся с полоборота. Оба класса делал производными от Custom и оба указывал как OlePublic. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2010, 23:44 |
|
Регистрация COM-exe компонента
|
|||
---|---|---|---|
#18+
Странно, хотел сделать два тестовых проекта для иллюстрации проблемы, сделал с реализацией класса в prg-файле и ... регистрация/разрегистрация заработала. Взял вчерашний exe-файл, не перекомпилируя, который вчера не работал и выдавал ошибку, сегодня работает без вопросов. Наверное фазы луны, но зато узнал несколько новых особенностей фокса ВладимирМСобственно, COM-компоненты в FoxPro создаются при помощи довольно специфических настроек загрузочных (стартовых) классов. А какие настройки? ВладимирМВ данном случае должно быть следующее 1. 2. 3. 4. Все это сделал, только базовым взял класс Custom, т.к. у меня 9 версия. Приложил два тестовых проекта, оба работают. Один на основе класса в prg, другой на основе класса в VCX. Регистрировать нужно запуском с ключём - /regserver. Разрегистрировать - с ключём - /unregserver. Может кому-то будет интересно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2010, 14:38 |
|
Регистрация COM-exe компонента
|
|||
---|---|---|---|
#18+
> Автор: Игорь Горбонос > Приложил два тестовых проекта, оба работают. Да забыл Пример использования Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2010, 14:50 |
|
|
start [/forum/topic.php?fid=41&fpage=84&tid=1584755]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 293ms |
total: | 415ms |
0 / 0 |