¿Cómo anular la Descarga de archivos?

Estoy con un proyecto para el gobierno de Canarias,, "Sistema comunitario de Gestión y Auditorías Medioambientales",
este lo he echo en html, pero cada vez que intento ejecutar unos programas hechos en Delphi se abre la famosa ventana de Descargar Archivos,, con la opción "Guardar" y esta me sobra..
-¿Hay algún systema que no lo pida o qué solo pida Abrir?
Respuesta
1
A ver si me aclaro, parece por lo que me dices en tus preguntas, que desde la página HTML quieres lanzar una aplicación delphi que está en el equipo local que está visitando dicha web ¿es así? Si es así me gustaría que me comentaras (si es posible) qué motivos y qué objetivos se consigue con esto. Bueno, de todas formas, como te venía comentando, creo que una solución sería crear un pequeño applet que sirviera de interfaz para realizar la llamada a tu ejecutable, y de esta forma podrás personalizar (necesitabas un único botón de abrir) la ventana que quieras que te salga para lanzar el ejecutable y no usar el "componente" (abrir, guardar, cancelar) que utiliza el propio sistema Windows (si este es tu sistema operativo, claro). Un ejemplo, como te comenté, he probado lo siguiente:
El código que te paso está implementado usando JBuilder 8 (que aunque no me gusta, simplifica mucho la creación de un applet) y se trata de un applet que muestra un "objeto" botón que he "etiquetado" como Abrir. Al pulsarlo se ejecuta una utilidad llamada jar.exe incluida en el JDK de Java que comprime un fichero *.class en un fichero *.jar. En fin, al grano, que desde un applet lanzo un ejecutable con la ayuda de la clase Runtime del JDK y su método exec. No he puesto el applet en un HTML pero debe funcionar ya que una vez descargado su funcionamiento es idéntico al que yo he probado. Lógicamente, para que este ejemplo funcione debe existir la utilidad jar.exe (que en tu caso serán las aplicaciones delphi *.exe) y el fichero *.class que necesita dicha utilidad para su funcionamiento (en tu caso todos los posibles ficheros, librerías y demás recursos que usen tus aplicaciones delphi).
Nota: esta solución tiene algunos problemas ya conocidos:
- ¿Y si el navegador no tiene activo la máquina virtual de Java?
- ¿Se controla realmente que la aplicación delphi exista en el terminal?
- ¿Realmente es necesario descargar un applet Java para personalizar una ventana ejecutada en local?
Bueno, tendría que pensarlo yo también pero... te paso la solución que propongo a ver que te parece... Saludos.
///HAY MUCHO CODIGO GENERADO AUTOMATICAMENTE POR JBUIDER TE REMARCO LO IMPORTANTE
package prueba;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
//LAS CLASES PARA EJECUTAR UNA APLICACIÓN EXTERNA SON:
import java.lang.Runtime;
import java.io.IOException;
//DEFINICIÓN DEL APPLET
public class Applet1 extends Applet {
private boolean isStandalone = false;
Button botonAbrir = new Button();
//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}
//FUNCIONES INCLUIDAS POR JBUIDER ALGUNAS NECESARIAS Y OTRAS NO.
//Construct the applet
public Applet1() {
}
//Initialize the applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
botonAbrir.setLabel("Abrir");
botonAbrir.addActionListener(new Applet1_botonAbrir_actionAdapter(this));
this.add(botonAbrir, null);
}
//Start the applet
public void start() {
}
//Stop the applet
public void stop() {
}
//Destroy the applet
public void destroy() {
}
//Get Applet information
public String getAppletInfo() {
return "Applet Information";
}
//Get parameter info
public String[][] getParameterInfo() {
return null;
}
//Main method
public static void main(String[] args) {
Applet1 applet = new Applet1();
applet.isStandalone = true;
Frame frame;
frame = new Frame();
frame.setTitle("Applet Frame");
frame.add(applet, BorderLayout.CENTER);
applet.init();
applet.start();
frame.setSize(400,320);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
frame.setVisible(true);
}
//ESTA FUNCION ES LA IMPORTANTE YA QUE ES LA QUE LLAMA AL EJECUTABLE
void botonAbrir_actionPerformed(ActionEvent e) {
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("jar cvf prueba.jar "+"Prueba.class");
//Se podría mejorar, pero es la base.
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
class Applet1_botonAbrir_actionAdapter implements java.awt.event.ActionListener {
Applet1 adaptee;
Applet1_botonAbrir_actionAdapter(Applet1 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.botonAbrir_actionPerformed(e);
}
}
Aquí tienes mi punto de vista.
Lo que te ocurre se debe a la forma en que está construida el navegador en el cual estás viendo la página, me explico, dicho software está pensado para que se pueda "conectar" (¿interfaces?) Con otros "componentes". Un ejemplo: si instalas acrobat reader y usas internet explorer es posible hacer que el navegador se "conecte" con un objeto de acrobat reader y así no tengas que bajar, abrir acrobat y cargar el fichero sino que directamente se abre y se carga. Por otro lado, están los applet java que son "aplicaciones software" que se descargan y se abren de forma transparente al usuario. Como ves existen sistemas para conseguir que no te pida selección de Descargar, pero debes tener en cuenta una cosa, una aplicación se puede ejecutar en tu máquina (applet java) o en un servidor (asp, php...) (o incluso partes en cada uno), ¿para qué sistema están hechos esos software Delphi?.
Este sistema es para ordenadores independientes y apertura de ejecutables delphi, desde html, java o applt
Gracias
¿Los ejecutables delphi están en los ordenadores independientes o están en un servidor web? Si es lo segundo (que creo yo que es lo lógico) una solución consiste en introducir el ejecutable dentro de un applet Java (como un recurso del applet) y de esta manera, al descargar el applet de forma transparente descargarás el ejecutable. El applet debe implementar la llamada a tus programas en Delphi. Java posee la librería Runtime que implementa el método exec para ejecutar un programa (*.exe). Te pongo una dirección útil donde están explicadas todas las librerías del jdk: http://sunsite.dcc.uchile.cl/java/docs/jdk1.2.2/docs/api/index.html
Uppps, esto es una solución que se me ocurre pero que realmente no he probado y que hace que me pregunte lo siguiente: Si la tecnología lo permite lo que conseguiríamos sería empotrar un ejecutable delphi dentro de un applet java, pero...¿funcionaría el ejecutable en cualquier plataforma?, ¿Qué error daría?...
Como estoy con la duda probaré a ver que pasa, mientras te envío esta sugerencia a ver que te parece.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas