Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

JavaScript y C++

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: JavaScript y C++ Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: JavaScript & C++ Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Java, CGI, C++.... Responder citando

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() ???

Exclamation Exclamation Exclamation

¿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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Solución Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.