Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ActiveX не работает на других компах, как внедрить в код нужные библиотеки 
:(
    Опции темы
Max_1_
Дата 6.11.2007, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Всем привет! Помогите пожалуйста.
Написал программу на Visual C++. Проект такого типа MFC->SDI. (не использовал .NET, )
В программе использовал activex - компонент таблицу (от ComponentOne)
Программа работает на моем компе, а на других нет. 
(выскакивает сообщение: An supported operation was attempted)
Думаю, что необходимо както внедрить в код библиотеки компонента.
Как мне это сделать?
Причем до этого прогу написал с использованием тоже activex-компонента таблицы, но уже микрософтовской.
Та прога работала везде.

Это сообщение отредактировал(а) Max_1_ - 6.11.2007, 22:26
PM MAIL   Вверх
xvr
Дата 7.11.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Max_1_ @ 6.11.2007,  22:25)
Всем привет! Помогите пожалуйста.
Написал программу на Visual C++. Проект такого типа MFC->SDI. (не использовал .NET, )
В программе использовал activex - компонент таблицу (от ComponentOne)
Программа работает на моем компе, а на других нет. 
(выскакивает сообщение: An supported operation was attempted)
Думаю, что необходимо както внедрить в код библиотеки компонента.
Как мне это сделать?
Причем до этого прогу написал с использованием тоже activex-компонента таблицы, но уже микрософтовской.
Та прога работала везде.

Отсуствует ActiveX компонент на другом компе. Необходимо инсталировать его на этом самом компе. Вариантов инсталяции может быть много, и в первую очередь это зависит от самого ActiveX компонента. В простейшем случае будет достаточно скопировать файл с ним куда-нибудь в папку к Windows (или в папку со своим приложением) и вызвать regsvr32 /s <ActiveX file>. Файл с компонентом можно поместить в ресурс приложения и извлечь его оттуда при инсталяции. Если компонент требует более одного файла или идет со своим собственным инсталятором, то можно все это завернуть в самораспаковывающийся архив, поместить его в ресурс и при инсталяции извлечь и распаковать, после чего установить.
Для проверки, установлен ли компонент на машине можно попробовать создать экземпляр объекта - если будет ошибка REGDB_E_CLASSNOTREG то компонент не установлен.

PM MAIL   Вверх
Max_1_
Дата 7.11.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Спасибо понял в чем дело.
А если я смогу проверить установлен ли компонент на машине как ты сказал, то можно ли прям из программы зарегистрировать?
Наверно придется пользоваться Api функциями?
PM MAIL   Вверх
xvr
Дата 7.11.2007, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Max_1_ @ 7.11.2007,  18:50)
Спасибо понял в чем дело.
А если я смогу проверить установлен ли компонент на машине как ты сказал, то можно ли прям из программы зарегистрировать?
Наверно придется пользоваться Api функциями?

Зарегистрировать можно. Нужно вызвать функцию DllRegisterServer из файла с компонентом ActiveX (это обычная dll). Приблизительно так (копия из MSDN):
Код

HINSTANCE hLib = LoadLibrary(pszDllName);

if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
   DisplayMessage(IDS_LOADLIBFAILED, pszDllName); //unable to load DLL
   iReturn = FAIL_LOAD;                           //unable to load DLL
}

// Find the entry point.
(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib,   _T("DllRegisterServer"));
if (lpDllEntryPoint != NULL)
   (*lpDllEntryPoint)();
else
   // Unable to locate entry point


Еще оттуда же:
Цитата

Note   Before your setup program installs an ActiveX control, it should call OleInitialize. When your setup program is finished, call OleUnitialize. This ensures that the OLE system DLLs are in the proper state for registering an ActiveX control.


PM MAIL   Вверх
Max_1_
Дата 8.11.2007, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Большое спасибо!
Буду пробовать...
PM MAIL   Вверх
Max_1_
Дата 8.11.2007, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



заработало! УРА! 
вот это супер.
Ещё раз спасибо XVR smile


_______________________
Проблема решена.
PM MAIL   Вверх
Fobos
Дата 30.5.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 9.2.2008
Где: Москва

Репутация: нет
Всего: нет



У меня аналогичная проблема: в результате запуска программы вылазить сообщение 
Приложение не было запущено, поскольку оно некорректно настроено.
Повторная установка приложения может решить данную проблему.
Писал в Visual Studio с использованием MFC.
Если я не ошибаюсь, то List Control который я использовал в программе является ActiveX компонентом, как мне найту ту библиотеку в которой он содержится, чтобы установить ее на другом компе.
PM MAIL ICQ   Вверх
xvr
Дата 30.5.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Fobos @ 30.5.2009,  18:24)
У меня аналогичная проблема: в результате запуска программы вылазить сообщение 
Приложение не было запущено, поскольку оно некорректно настроено.
Повторная установка приложения может решить данную проблему.

Это не ActiveX, это банальное отсуствие нужных dll
Цитата

Писал в Visual Studio с использованием MFC.
Скорее всего отсуствуют run-time библиотеки VS. Посмотри какие библиотеки использует приложение и перенеси недостающие. Или слинкуй приложение статически
Цитата

Если я не ошибаюсь, то List Control который я использовал в программе является ActiveX компонентом, как мне найту ту библиотеку в которой он содержится, чтобы установить ее на другом компе.
Что бы сломалось из-за отсуствия ActiveX программа должна как минимум запустится, т.к. ActiveX контролы грузятся динамически, т.е. РАБОТАЮЩЕЙ программой

PM MAIL   Вверх
Fobos
Дата 30.5.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 9.2.2008
Где: Москва

Репутация: нет
Всего: нет



Я просмотрел таблицу импорта этого приложения, все библиотеки которые там были я скинул в папку программы, но сообщение выпадает тоже самое. 
PM MAIL ICQ   Вверх
jonie
Дата 30.5.2009, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



скинули те длл-ки и что? это ничего не значит. Могут быть более глубокие зависимости. Используйте depends.exe (входит в поставку студии) для анализа зависимостей.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Fobos
Дата 30.5.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 9.2.2008
Где: Москва

Репутация: нет
Всего: нет



Ну я по этой рограмме все зависимости посмотрел, у меня все есть, за иключением этих трех, но они есть в папке программы:
MFC80U.DLL MSVCP80.DLL MSVCR80.DLL
программа не работает, может еще у кого есть какие мысли
PM MAIL ICQ   Вверх
xvr
Дата 31.5.2009, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Fobos @ 30.5.2009,  21:57)
Ну я по этой рограмме все зависимости посмотрел, у меня все есть, за иключением этих трех, но они есть в папке программы:
MFC80U.DLL MSVCP80.DLL MSVCR80.DLL
программа не работает, может еще у кого есть какие мысли

Глупый вопрос - а сама программа есть в папке с программой?  smile Она случайно не лежит в какой нибудь вложенной папке. А запускается она оттуда, её случайно не скопировали куда нибудь в %WINDOWS% ?
Попробуй (в качестве эксперимента) эти - MFC80U.DLL MSVCP80.DLL MSVCR80.DLL в %WINDOWS%/System32 бросить


Это сообщение отредактировал(а) xvr - 31.5.2009, 09:15
PM MAIL   Вверх
Fobos
Дата 31.5.2009, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 9.2.2008
Где: Москва

Репутация: нет
Всего: нет



Скинул библиотеки в папку system32 тоже не помогло. Может выложить файл, кто-нибудь сам посмотрит или в связи с эпидемиями вирусов такой вариант не прокатит, могу в исходниках выложить чтобы была возможность саоммоу скомпилировать.
PM MAIL ICQ   Вверх
Cheloveck
Дата 31.5.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Fobos, скинуть библиотеки мало, они регятся в системе ещё. Поставь vc redistributable своей версии


--------------------
user posted image
PM Jabber   Вверх
Fobos
Дата 31.5.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 9.2.2008
Где: Москва

Репутация: нет
Всего: нет



Зарегистрировать их не получилось, выскакивает сообщение Runtime error, неправльное обращение с библиотеке выполнения С.
Слушайте, но проблема с  которой я сталкиваюсь должна встречаться всем кто пишет программы не только для себя( у него-то понятно она запустится). Не может быть чтобы на этом форуме никто больше не сталкивался с этой проблемой.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.