Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Регистрация контролов в приложениях MSOffice Добавлено: 15.07.02 23:12  

Автор вопроса:  yuniki
Я в файле Excel, который положен на сервер для пользования всеми желающими использую форму ввода, на ней имеется контрол,
который , вообще говоря, может отсутствовать на компьютере клиента
( MSComCt2.ocx - DateTimePicker, выбирает дату ).
Поэтому при открытии книги я проверяю возможность создания некоторого тестового объекта Set ob = CreateObject("MsComCtl2.DTPicker")
И в случае Err.Number<>0 копирую этот файл MSComCt2.ocx в системную папку клиента с серверного директория и запускаю
shell "regsvr32 -s C:\WINNT\System32\mscomct2.ocx"
Если после этого Err.Number<>0 то закрываю книгу по аварийному останову без сохранения.

Проблема в том, что регистрация может быть неуспешной ,
а Err.Number =0 . Тогда пользователь, запустивший книгу, может
запросто закрыть ее с сохранением. При этом из формы теряются ссылки на данный контрол и книга при открытии уже оказывается без них, и , как следствие, неработоспособной.
Помогите, если кто знает надежный способ регистрации контролов приложениях MS-Office.

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 paul_sn



Вопросов: 16
Ответов: 164
 Web-сайт: sergeyev.zzn.com
 Профиль | | #1
Добавлено: 17.07.02 02:17

Привет, насчет офиса не знаю, мало имел с ним дело. Но оставлю примерчик регистрации OCX  просто в VB:

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Function Reg(ByVal Str_Reg As String) As Long
    On Error Resume Next
    Reg = LoadLibrary(Str_Reg)
    CallWindowProc GetProcAddress(Reg, "DllRegisterServer"), 0, 0, 0, 0
End Function
Потом просто вызываешь функцию:

Call Reg (Путь)

 

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам