La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1284 - MOSTRAR UN ARCHIVO DE AYUDA (*.CHM)
Autor:  Genaro Sanchez
Hola a todos, tengo una pequeña pregunta.
Como puedo mostrar un archivo de ayuda (*.chm).
Pero no haciendolo desde Project1 Properties y seleccionando un archivo, ni tampoco con control que se llama HHOPEN.OCX, sino que haciendolo con codigo, me imagino que se hace una llamada a la API de Windows. Como le puedo hacer. Yo ya tengo el codigo para hacerlo pero para archivos (*.hlp), no es lo mismo, ya probe. Pero yo quiero hacerlo con archivos (*.chm).
Como puedo hacer eso???

Gracias de antemano

Genaro Sanchez

  Respuesta:  lenin parra
En un módulo de código debemos copiar la siguiente declaración del API y dos constantes públicas:
Declare Function HtmlHelp Lib “HHCtrl.ocx” Alias “HtmlHelpA” _
(ByVal hwndCaller As Long, ByVal pszFile As String, _
ByVal uCommand As Long, dwData As Any) As Long
Public Const HH_DISPLAY_TOPIC = &H0
Public Const HH_HELP_CONTEXT = &HF

Los argumentos de la función HtmlHelp y su respectiva funcionalidad son los siguientes:
Argumento Descripción
HwndCaller Es un manejador de una ventana de aplicación o Null. Este manejador debe ser usado como el propietario o el contenedor de la ayuda HTML, dependiendo como sea usado. En VBA, en vez de usar vbNullString establecer este parámetro a 0.
PszFile Es el string que se corresponde con el path del archivo de ayuda. Opcionalmente puede especificar en que tipo de ventana se ha de visualizar.
UCommand Es la acción a realizar, o como mostar tópicos de ayuda. Pude ser usado con cualquiera de los dos comandos declarados como constantes HH_HELP_CONTEXT o HH_DISPLAY_TOPIC. Sólo se ha llegado a probar con éxito HH_HELP_CONTEXT.
DwData Especifica el topic ID.

Para lanzar la ayuda correspondiente a un formulario únicamente hay que hacer una llamada a la función HtmlHelp con los parámetros deseados. En nuestro ejemplo, se hizo en el evento Click del botón cmdAyuda (dado que no puede ser lanzada pulsando la tecla F1), pero claro está puede hacerse la llamada desde el evento que se desee.

Private Sub cmdAyuda_Click()
Call HtmlHelp(0, "c:\ayudahtml\ejemplo.chm", HH_HELP_CONTEXT, _
ByVal Me.HelpContextID)
End Sub

  Respuesta:  Jose Reynaldo Chavarria Quiñonez
Si lo que queres es solo abrir el Archivo *.chm sin dirigirte a una direccion especifica del archivo entonces podes usar este Modulo que premite abrir cualquier tipo de archivo como si le hicieras doble click en el Explorador de windows...

Por la largada de la respuesta, esta en el archivo resp1284.txt.

  Respuesta:  Antonio M. Estévez Lorenzo
Para poder hacer lo que quieres necesitas dos ficheros llamados htmlhelp.h y htmlhelp.lib que vienen con el compilador de ayuda de Microsoft Html Help Workshop. Si no lo tienes, lo puedes descargar de:
http://msdn.microsoft.com/workshop/author/htmlhelp/default.asp
Una vez instalado, encontrarás los ficheros en los subdirectorios include y lib.
Si utilizas Visual C++, sólo tienes que usar las funciones que aparecen en el fichero htmlhelp.h y enlazar el proyecto con el fichero htmlhelp.lib.
Si usas Borland C++, C++ Builder o Delphi el proceso es más complicado porque hay que convertir htmlhelp.lib al formato de Borland. Yo ya lo tengo convertido, así que si no sabes mándame un e-mail indicándome que compilador usas y te lo envío.