PDA

Ver la Versión Completa : Recoger parametros de una web


albertoP
15-10-2006, 08:01:07
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:\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:\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:

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:

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
C:\tuprograma.exe \unparametro \otroparametro \untercero



Siempre lo he visto de esta forma:

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 (http://www.clubdelphi.com/foros/showpost.php?p=162276&postcount=9) 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....