| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
aloplop Cdt

Registrado: 09 Sep 2008Mensajes: 6
|
Publicado: Lun 22 Sep, 2008 12:23 pm Asunto: JavaScript y C++ |
|
|
Hola,
en mi aplicación en C++ quiero llamar a unas funciones de JavaScript que están definidas en un fichero html que se ejecuta al iniciar dicha aplicación.
Quería preguntar si es esto posible y cómo podría llamar a dichas funciones (quiero hacerlo cuando se produzca un evento en el programa principal).
Un saludo a todos. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 23 Sep, 2008 8:57 pm Asunto: |
|
|
Hola, aunque no dices que estas usando para mostrar el html, viendo tu pregunta anterior supongo que estas usando el componente TCppWebBrowser.
En este ejemplo puedes ver como llamar a una función en javascript del documento que este cargado en ese momento en el TCppWebBrowser. Como prueba he usado el siguiente código html:
| Código: | <html><head><script>
function MostrarMensaje(msg) {
alert(msg);
}
</script></head><body>
Prueba
</body></html> |
Y para llamar a la función "MostrarMensaje" del fichero de ejemplo:
| Código: | //Añadir: #include<utilcls.h> #include<atl\atlbase.h> #include<mshtml.h>
CComQIPtr<IHTMLDocument2> doc(CppWebBrowser1->Document);
CComPtr<IHTMLWindow2> win;
doc->get_parentWindow(&win);
CComVariant ret(0);
win->execScript(CComBSTR(L"MostrarMensaje('prueba');"),
CComBSTR(L"Javascript"), &ret);
|
|
|
| Volver arriba |
|
 |
aloplop Cdt

Registrado: 09 Sep 2008Mensajes: 6
|
Publicado: Mie 24 Sep, 2008 8:24 am Asunto: JavaScript & C++ |
|
|
Hola,
gracias por tu pronta respuesta, Leo, parece que no mucha gente sabe del tema....el caso es que he desarrollado la aplicación en Borland Builder y esos tipos de datos no me los deja usar (al menos no me los ofrece en su ayuda...).
He dejado mensajes en muchos foros pero es que debe ser bastante raro eso de cruzar lenguajes. De hecho, me he dado que cuenta que mi problema se reduce a lo siguiente:
En el puerto 80 de una máquina remota tengo una cámara IP que contiene un applet. Yo lo que quiero hacer es mover la cámara desde otro ordenador enviando directamente órdenes al applet.
Ej:
<APPLET>
Y yo querría ejecutar "cvcs.Zoom(1)" o algo parecido. EL caso es que en el código html aparecen funciones de javaScript y eso me hizo confundirme....
Gracias de todas formas. Un saludo. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 24 Sep, 2008 10:17 am Asunto: |
|
|
| aloplop escribió: | | el caso es que he desarrollado la aplicación en Borland Builder y esos tipos de datos no me los deja usar (al menos no me los ofrece en su ayuda...) |
Quieres decir que el ejemplo de arriba no te funciona ? Has añadido las cabeceras que menciono en la primera línea del código ?
| Código: | //Añadir: #include<utilcls.h> #include<atl\atlbase.h> #include<mshtml.h> |
Esta probado en la versión 6 de C++Builder. No aparece en la ayuda como muchas otras cosas. Esto es parte del API de Windows y la ayuda que trae la versión 6 sobre el API está un poco anticuada. Pero tienes la documentación online en la web de Microsoft, por ejemplo:
[IHTMLDocument2]
http://msdn.microsoft.com/en-us/library/aa752574.aspx |
|
| Volver arriba |
|
 |
aloplop Cdt

Registrado: 09 Sep 2008Mensajes: 6
|
Publicado: Mie 24 Sep, 2008 11:27 am Asunto: Java, CGI, C++.... |
|
|
Hola de nuevo,
de hecho no lo probé, ya que el problema en realidad es mayor....de todas formas muchas gracias.
A ver si me podéis ayudar:
el caso es que tengo 2 aplicaciones en C++ Builder. En la primera tengo una interfaz gráfica con unos botones y un componente TcppWebBrowser donde cargo una página web. Esta página web contiene un applet almacenado en una cámara IP instalada en un robot.
En el otro programa, basado en una plataforma creada para el control de señales cerebrales ( http://www.bci2000.org) y que necesariamente se debe compilar en el Builder, tengo el programa principal, que envía las señales correspondientes al robot para que se mueva en ciertas cirunstancias.
El robot incluía una clase en c++ y ya se mueve correctamente. El caso es que quiero mover la cámara también.
EN LA INTERFAZ NO PUEDO APLICAR lo que me envía _Leo, porque ésta se actualiza cada poco tiempo (varias veces pro segundo), por lo que el Script lo debo ejecutar desde el otro programa. El caso es que en el código HTML de la página web original (yo la modifiqué para que sólo se vea el applet) aparecen métodos como onClick="cvcs.Zoom(1)" siendo CVCS el nombre del applet, por lo que, en realidad no sería necesario ejecutar funciones javascript...¿o sí?
Por otra parte el fabricante taiwanés de la cámara me ha dicho que para comunicarse con ella utilizan CGI y en las hojas que me ha enviado pues viene algo como:
Request (Client --> Camera)
POST /pantiltcontrol.cgi HTTP/1.0(0D0A)
User-Agent: agent_name(0D0A)
Content-length: length(0D0A)
Authorization: Basic encoded_id_password(0D0A)(0D0A)
PanTiltCommand=value(0D0A)(0D0A)
odoa creo que se refiere a \r\n
que no sería invocar un método del applet pero que igual me funcione para mover la cámara. En ese caso, debería crear una cadena de caracteres tan larga como ese tocho y enviársela a la cámara (puerto 80)
a través de un socket TCP que creo para comunicarme con ella mediante la función SEND() ???
¿Se puede invocar directamente desde C++ un método del applet enviando "algo" al puerto 80????
Se qué es bastante lioso si tenéis alguna duda no dudési en responder.
Un saludo y gracias. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 25 Sep, 2008 12:16 am Asunto: |
|
|
| aloplop escribió: | | de hecho no lo probé, ya que el problema en realidad es mayor |
Creo que lo que he puesto más arriba te serviría si dejases las funciones en javascript. Para la segunda opción necesitaría tener una cámara online con la web sin modificar o bien al menos saber la marca y el modelo para tratar de encontrar alguna emitiendo online y que permita hacer algunas pruebas.
En caso de que la tengas online o conozcas algún enlace donde haya una igual online para hacer las pruebas, mi email es:
leosoftware ARROBA gmail PUNTO com |
|
| Volver arriba |
|
 |
aloplop Cdt

Registrado: 09 Sep 2008Mensajes: 6
|
Publicado: Mar 30 Sep, 2008 9:12 am Asunto: Solución |
|
|
Hola,
finalmente, tras descargarme la herramienta Wireshark para capturar los paquetes que se enviaban desde el ordenador, descubrí que se enviaban 2 paquetes con el formato que me envió el fabricante (POST fichero.cgi..etc), por lo que cree 2 cadenas de texto formateadas tal y como venía en el manual y se las envié a la cámara al puerto 80. De esta manera parece que responde bien a los comandos.
Muchas gracias por la ayuda y un saludo. |
|
| Volver arriba |
|
 |
|