Ver Mensaje Individual
  #4  
Antiguo 15-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Como he dicho más arriba, tengo como "navegador predeterminado" el Mozilla FireFox. Pues bien, con lo siguiente, al pretender abrir mediante la función "ShellExecute" (en la unidad "ShellApi") una determinada URL conocida de todos, la misma se abrirá con el "navegador predeterminado", esto es, como digo, la URL se abrirá en FireFox. Si FireFox ya está abierto la URL se cargará en la pestaña "activa" del nagegador.

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 resourcestring
   sUrl = 'http://www.clubdelphi.com';
 begin
   ShellExecute(GetDesktopWindow, PChar('open'),
     PChar(sUrl), nil, nil, SW_NORMAL);
 end;
Sin embargo, aunque tenga como "navegador predeterminado" el mencionado FireFox, todavía con la función "ShellExecute" se puede "forzar" a que abra la URL del ClubDelphi en el navegador Internet Explorer. Fíjate en la ayuda de la función "ShellExecute"; la encontrarás en la ayuda del SDK de Win32, el cual encontrarás en el propio menú de ayuda de Delphi.

Pues bien, iba a decir que anteriormente pasábamos como el parámetro "programa a ejecutar" una URL, sin más, y así conseguíamos lo que se pretendía en un principio, o casi: que fuera Windows el encargado de decidir con qué programa prefiere el usuario abrir las URL, en este caso, pero esto valdría para cualquier otro tipo de "archivo": si pretendes abrir y mostrar con "ShellExecute" un archivo "de texto plano" (*.txt), generalmente, será el Bloc de Notas el encargado de hacerlo.

A lo que íbamos. A forzar a que una URL se abra en Internet Explorer. Aquí está el código:

Código Delphi [-]
 procedure TForm1.Button2Click(Sender: TObject);
 resourcestring
   sUrl = 'http://www.clubdelphi.com';
 begin
   ShellExecute(GetDesktopWindow, PChar('open'),
     PChar('iexplore.exe'), PChar(sUrl), nil, SW_NORMAL);
 end;
¿Qué cambia respecto del anterior? Vuelvo a remitirte a la ayuda de la función "ShellExecute". Cambia que ahora estamos pasándole como parámetro el ejecutable de un programa (con Internet Explorer y FireFox funciona bien Windows XP y Delphi 7 comprobado) -podría ser también la ruta completa del programa: de lo contrario Windows tendrá que averiguar dónde está en realidad el programa a que quiere llamarse, aunque ya digo que no parece tener Windows problemas en localizar a Internet Explorer y FireFox, por poner dos casos- ...

Decía que dos son los parámetros que nos interesan: el ejecutable a ejecutar y ¿qué más? El archivo, en este caso, una URL, que queremos que ejecute como deba el programa a que llamamos. En este caso se manda ejecutar el programa Internet Explorer y se le pasa como parámetro una dirección URL, la cual será abierta por el navegador, insisto -y acabo ya- en este caso, aunque yo tenga configurado como "navegador predeterminado" a Mozilla FireFox
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita