
04/04/2004, 13:29
|
| | Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 21 años, 1 mes Puntos: 0 | |
No es necesario utilizar algun ActiveX para abrir los archivos CHM, y usar la funcion Shell tampoco es la mejor opción, ya que tantas veces como se ejecute esa función sera el número de ventanas que estaran abiertas, todas ellas con el mismo archivo, es decir, si pones la sentencia Shell(....) en una opción de menú, si el usuario de la aplicación accede tres veces a esa opción de menú, este tendra tres ventanas con el mismo archivo CHM abiertas.
No se cómo funcione el ActiveX que te sugirierón utilizar, no se si tenga esa misma problematica, o alguna otra, yo te recomendaría utilizar mejor la función API que realiza la tarea de abrir el archivo CHM, esta abrira solo una ventana con el archivo CHM independientemente de cuantas veces se ejecute esta.
Lo siguiente lo tendras que agregar en un modulo, para poder tenerlo accesible desde cualquier parte de la aplicación:
Public Enum HH_COMMAND
HH_DISPLAY_TOPIC = &H0
HH_HELP_FINDER = &H0
HH_DISPLAY_TOC = &H1
HH_DISPLAY_INDEX = &H2
HH_DISPLAY_SEARCH = &H3
HH_SET_WIN_TYPE = &H4
HH_GET_WIN_TYPE = &H5
HH_GET_WIN_HANDLE = &H6
HH_GET_INFO_TYPES = &H7
HH_SET_INFO_TYPES = &H8
HH_SYNC = &H9
HH_ADD_NAV_UI = &HA
HH_ADD_BUTTON = &HB
HH_GETBROWSER_APP = &HC
HH_KEYWORD_LOOKUP = &HD
HH_DISPLAY_TEXT_POPUP = &HE
HH_HELP_CONTEXT = &HF
HH_TP_HELP_CONTEXTMENU
HH_TP_HELP_WM_HELP = &H11
HH_CLOSE_ALL = &H12
HH_ALINK_LOOKUP = &H13
End Enum
Public Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" _
(ByVal hwndCaller As Long, ByVal pszFile As String, _
ByVal uCommand As HH_COMMAND, ByVal dwData As Long) As Long
Ahora, para abrir el archivo chm, como por ejemplo desde una opción de menú, tendras que tener algo cómo lo que sigue:
Private Sub mnuAyuda_Click()
'De esta forma se muestra en el tópico por defecto
Dim h As Long
h = HtmlHelp(Me.hWnd, "hhw_vb.chm", HH_DISPLAY_TOPIC, 0&)
End Sub
Espero que te sea de utilidad o a alguien más |