Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Recoger parametros de una web (https://www.clubdelphi.com/foros/showthread.php?t=36521)

albertoP 15-10-2006 08:01:07

Recoger parametros de una web
 
Supongamos que yo tenga una pagina html cargada en el explorador y pase el siguiente parametro en el explorador.

file:///C:/mi_programa.exe/crear_carpeta

**Y que mi programa echo en delphi recoja crear_carpeta y ejecute por ejemplo crear una carpeta.....

No se se me exlique bien desde ya muchas gracias

Saludos y Respetos

dec 15-10-2006 09:24:31

Hola,

Vayamos por partes Alberto. Dices que tienes una página Web cargada en el navegador de Internet, empero, ¿se trata de HTML puro y duro? Puesto que, hasta donde llego yo, HTML no puede recibir las variables (vale parámetros, creo) puesto que no podríamos hacer nada con ellas en HTML... tal vez en JavaScript, seguro en PHP, ASP, JSP y en general cualquier lenguaje del lado del "Servidor".

Ahora. También creo que habría algún que otro problema para que un programa se ejecutase, directamente, desde la URL del navegador... como mínimo debería pedirse permiso al usuario para hacer algo así, puesto que podría resultar en algo verdaderamente comprometido para dicho usuario y hasta para el sistema, pero, en fin, aquí me pierdo un poco.

Tú puedes enviar parámetros a tu programa escrito en Delphi de la siguiente forma:

Código:

C:\tuprograma.exe -unparametro -otroparametro -untercero
E incluso de esta otra forma, me parece que también es válido, aunque, luego dependerá de cómo trates tú dichos parámetros en tu programa:

Código:

C:\tuprograma.exe \unparametro \otroparametro \untercero
Ahora bien, estoy suponiendo que se "llama" a tu programa desde la línea de comandos, desde un archivo de proceso por lotes, incluso desde el explorador de Windows, pero, aquí no entra para nada el HTML ni ninguna página Web...

En fin. Creo que algo se me escapa, es decir, ¿porqué no le das otra vuelta y planteas el problema de otro modo a ver si se ve mejor el caso? Yo lamento no poder decirte nada más por el momento.

seoane 15-10-2006 14:00:58

Solo añadir un par de cosas a la completa explicación de dec. Además de los lenguajes PHP, ASP, JSP puedes usar tu programa hecho en delphi como un cgi, pero sigues necesitando un servidor que se encargue de ejecutar tu programa.

Por otro lado, leyendo tu pregunta se me ocurre que lo que estas usando para ver la pagina no es el explorador si no un objeto del tipo TWebBrowser. Si es así, puedes usar el evento OnBeforeNavigate2 para obtener tanto la URL como la información POST cada vez que pulses sobre un enlace de la pagina. Una vez que tienes la URL no seria muy difícil separar los parámetros y realizar la tarea indicada:

Un poco de código:
Código Delphi [-]
procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  URLStr: string;
begin
  if VarIsArray(URL) then
  begin
    URLStr:= String(PChar(VarArrayLock(URL)));
    VarArrayUnlock(URL);
    // Ahora en la variable URLStr tienes un string con la URL
  end;
end;
También puedes usar un formulario para enviar la información y utilizar el método POST. En ese caso podemos obtener el valor de cada uno de los parámetros a partir de su nombre. Es decir:
Código Delphi [-]
procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if VarIsArray(PostData) then
  with TStringList.Create do
  try
    Delimiter:= '&';
    DelimitedText:= String(PChar(VarArrayLock(PostData)));
    VarArrayUnlock(PostData);
    // Mostramos el valor del parametro P1
    ShowMessage(Values['P1']);    
  finally
    Free;
  end;
end;

Y por ultimo, siempre puedes un montar una aplicación en delphi que actué como servidor web, con Indy no resulta difícil. Esta recibirá las peticiones del navegador y las interpretara como quiera.

Lepe 15-10-2006 14:06:50

Cita:

Empezado por dec
Código:

C:\tuprograma.exe \unparametro \otroparametro \untercero

Siempre lo he visto de esta forma:
Código:

C:\tuprograma.exe /unparametro /otroparametro /untercero
Si creas una línea de comando, implementa tambien los parámetros "/h /help /?" que son estandar en cualquier programa, y que hace un ShowMessage explicando cada uno de los parámetros que pueden aplicarse y qué hace cada uno de ellos.

Un detalle más, si quieres implementar un parámetro con espacios o tu programa puede estar dentro de "C:\Archivos de programa" revisa este mensaje y temas relacionados

Saludos

dec 15-10-2006 14:26:26

Hola,

Sí. Llevas razón Lepe, las barras no "normales" y no "invertidas". A lo menos así es en general. ;)

albertoP 15-10-2006 17:49:26

hola y gracias a todos por su interes:

A ver la idea de de Seoane, los otros dias via un appWeb montada con apache que tenia una programa echo en delphi al cual se le psaba por ejemplo:

http://localhost/usuario.exe/crear_usuario

y entonces el soft me creaba el usuario.....

Y entonces me dio curiosidad por saber como se hace....


La franja horaria es GMT +2. Ahora son las 01:17:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi