![]() |
---|
Para realizar la activación de la página WEB se utiliza la API ShellExecute que se encuentra contenida en el archivo Shell32.dll, que permite mediante los parámetros que se le pasan, ejecutar cualquier programa en el entorno Windows. Mediante los parámetros adecuados se utiliza el API para abrir una página WEB con el explorador de Internet configurado por defecto. Se incluyen ejemplos en los siguientes lenguajes de uso común:
Descripción
Algoritmos
Option Explicit
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (
ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String,
ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long
Private Sub cmdSalir_Click()
      ' Sale del sistema al hacer click en salir
      End
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      ' Cambia color del Label al pasar mouse sobre el formulario
      lblURL.ForeColor = QBColor(9)
End Sub
Private Sub lblURL_Click()
      ' Llama a Procedimiento para abrir explorador al hacer click sobre el Label
      AbrirBrowser Me, lblURL
End Sub
Private Sub lblURL_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      ' Cambia color del Label al pasar mouse sobre el mismo
      lblURL.ForeColor = QBColor(12)
End Sub
Sub AbrirBrowser(F As Form, URL As String)
      ' Si no tiene http:// le agrega
      If Left(URL, 7) <> "http://" Then
          URL = "http://" + URL
      End If
      ' Mediante API de Windows ejecuta Internet Explorer
      ShellExecute F.hWnd, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus
End Sub
Dentro del módulo que contiene el procedimiento ABRIR BROWSER se declara la función que hace el llamado al API ShellExecute.
A continuación se agrega el prefijo HTTP:// al CAPTION del LABEL de manera de convertirlo en una dirección URL.
Por último se llama a la función API con la dirección URL como parámetro.
* lblURL.click
AbrirBrowser(THISFORM.lblURL.Caption)
Se crea una función llamada ABRIR BROWSE, la cual agrega el prefijo HTTP:// delante del texto del LABEL.
* lblURL.MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
* Cambia color del Label al pasar mouse sobre el mismo
THISFORM.lblURL.ForeColor = RGB(255,0,0)
* Form1.MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
* Cambia color del Label al pasar mouse sobre el formulario
THISFORM.lblURL.ForeColor = RGB(0,0,255)
FUNCTION AbrirBrowser
LPARAMETERS lcLink, lcAction, lcParams
* Si no tiene http:// le agrega
IF LEFT(lcLink,7) <> "http://"
      lcLink = "http://" + lcLink
ENDIF
lcAction = IIF(EMPTY(lcAction), "Open", lcAction)
lcParams = IIF(EMPTY(lcParams), "",lcParams)
DECLARE INTEGER ShellExecute ;
      IN SHELL32.dll ;
      INTEGER nWinHandle, ;
      STRING cOperation, ;
      STRING cFileName, ;
      STRING cParameters, ;
      STRING cDirectory, ;
      INTEGER nShowWindow
DECLARE INTEGER FindWindow ;
      IN WIN32API ;
      STRING cNull, STRING cWinName
RETURN ShellExecute(FindWindow(0,_SCREEN.Caption), ;
      lcAction, lcLink, ;
      lcParams, SYS(2023), 1)
Dentro de la función se usa la instrucción DECLARE haciendo referencia al API ShellExecute.
También necesita en este caso declarar la referencia al API FindWindow porque se le debe pasar al ShellExecute el puntero a la ventana que hace el llamado.
Por último se llama al ShellExecute como primer parámetro a FindWindow y luego otros parámetros entre los cuales está la dirección URL de la página.
En este caso también se agrega el prefijo http:// al texto del LABEL para transformarlo en una dirección URL.
unit browser;
interface
uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Shellapi, StrUtils;
type
   TForm2 = class(TForm)
      lblTitulo: TLabel;
      lblURL: TLabel;
      Label1: TLabel;
      Button1: TButton;
      procedure Button1Click(Sender: TObject);
      procedure lblURLClick(Sender: TObject);
      procedure lblURLMouseMove(Sender: TObject; Shift:TShiftState; X,Y: Integer);
      procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
   private
     { Private declarations }
   public
     { Public declarations }
end;
var
     Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
     form2.close
end;
procedure TForm2.lblURLClick(Sender: TObject);
var lcLink:string;
begin
     if leftstr(form2.lblURL.Caption,7) <> 'http://'
     then lcLink := 'http://'+form2.lblURL.Caption
     else lcLink := form2.lblURL.Caption ;
     ShellExecute(0, 'open', Pchar(lcLink), nil, nil, SW_SHOWNORMAL);
end;
procedure TForm2.lblURLMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
     Form2.lblURL.Font.Color := clRed;
end;
procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
     Form2.lblURL.Font.Color := clBlue;
end;
end.
Luego de utiliza la declaración del API ShellExecute que se encuentra realizada en la unidad ShellAPI que viene con el DELPHI.
Se hace el llamado a la función pasando como parámetro la dirección URL.
En este caso también se agrega el prefijo http:// al texto del LABEL para transformarlo en una dirección URL.
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
#include "ShellApi.h" // Incluye la funcion ShellExecute
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::lblURLClick(TObject *Sender)
{
AnsiString lcLink;
if (lblURL->Caption.SubString(1,6) == "http://")
     lcLink = lblURL->Caption;
else
     lcLink = "http://"+lblURL->Caption;
ShellExecute(this->Handle,"open",lcLink.c_str(),0,0,SW_NORMAL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::lblURLMouseMove(TObject *Sender, TShiftState Shift,int X, int Y)
{
    lblURL->Font->Color = clRed;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,int X, int Y)
{
    lblURL->Font->Color = clBlue;
}
//---------------------------------------------------------------------------
Luego de utiliza la declaración del API ShellExecute que se encuentra realizada en ShellAPI.h que viene con el C++ Builder.
Se hace el llamado a la función pasando como parámetro la dirección URL.
En este caso también se agrega el prefijo http:// al texto del LABEL para transformarlo en una dirección URL.
Imports System.Diagnostics
Public Class Form1
     Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
#End Region
Private Sub lblURL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblURL.Click
     Dim lcLink As String
     If lblURL.Text.Substring(1, 7) = "http://" Then
         lcLink = lblURL.Text
     Else
         lcLink = "http://" + lblURL.Text
     End If
     Dim sInfo As New ProcessStartInfo(lblURL.Text)
     Process.Start(sInfo)
End Sub
Private Sub lblURL_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lblURL.MouseMove
     lblURL.ForeColor = System.Drawing.Color.Red
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
     lblURL.ForeColor = System.Drawing.Color.Blue
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     MessageBox.Show("Oprimir el Boton Salir")
End Sub
End Class
En el caso de este lenguaje en vez de utilizar el API ShellExecute se utiliza la clase Process del .NET Framework. System.Diagnostics. Con esta clase se emula la funcionalidad del API
Se hace el llamado al método de la clase con el parámetro que contiene la dirección URL.
En este caso también se agrega el prefijo http:// al texto del LABEL para transformarlo en una dirección URL.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Diagnostics;
namespace WindowsApplication6
{
   ///
   /// Summary description for Form1.
   ///
   public class Form1 : System.Windows.Forms.Form
   {
     private System.Windows.Forms.Label lblTitulo;
     private System.Windows.Forms.Label lblTitulo2;
     private System.Windows.Forms.Label lblURL;
     private System.Windows.Forms.Button button1;
     ///
     /// Required designer variable.
     ///
     private System.ComponentModel.Container components = null;
     public Form1()
     {
       //
       // Required for Windows Form Designer support
       //
       InitializeComponent();
       //
       // TODO: Add any constructor code after InitializeComponent call
       //
     }
     ///
     /// Clean up any resources being used.
     ///
     protected override void Dispose( bool disposing )
     {
       if( disposing )
       {
         if (components != null)
         {
         components.Dispose();
         }
       }
       base.Dispose( disposing );
       }
  
   #region Windows Form Designer generated code
  
   #endregion
   ///
   /// The main entry point for the application.
   ///
   [STAThread]
   static void Main()
   {
     Application.Run(new Form1());
   }
  
   private void Form1_Load(object sender, System.EventArgs e)
   {
  
   }
  
   private void lblURL_Click(object sender, System.EventArgs e)
   {
     string lcLink;
     if (lblURL.Text.Substring(1,6)=="http://")
         lcLink = lblURL.Text;
     else
         lcLink = "http://"+lblURL.Text;
     ProcessStartInfo sInfo = new ProcessStartInfo(lblURL.Text);
     Process.Start(sInfo);
   }
   private void lblURL_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
   {
     lblURL.ForeColor = System.Drawing.Color.Red;
   }
  
   private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
   {
     lblURL.ForeColor = System.Drawing.Color.Blue;
   }
  
   private void button1_Click(object sender, System.EventArgs e)
   {
     Form1.ActiveForm.Close();
   }
   }
}
En el caso de este lenguaje en vez de utilizar el API ShellExecute se utiliza la clase Process del .NET Framework. System.Diagnostics. Con esta clase se emula la funcionalidad del API
Se hace el llamado al método de la clase con el parámetro que contiene la dirección URL.
Muchas veces nuestros Sistemas pueden tener su propia Pagina Web. Te invito a conocer una manera fácil y eficaz de ejecutar tu Página Web desde un sistema base, en los distintos lenguajes que ya conocemos.
Las API ("aplication programing interface" o "interfaz de programación de la aplicación") de Windows son un conjunto de funciones propias del sistema operativo que puedes usar en tus programas, como por ejemplo, la función que analizaremos en esta oportinad: "ShellExecute" que permite ejecutar un programa, archivo, Página Web, etc, desde nuestro sistema. Esta función es la misma en todos los lenguajes pero ojo! que hay algunos detalles a tener en cuenta.
Para ejecutar una Pagina Web desde un sistema base podemos utilizar la función ShellExecute. Al utilizarlo su sintaxis es susceptible a Mayúsculas y minúsculas.
Debemos tener en cuenta que ShellExecute se encuentra declarada en la unidad ShellAPI.
La sintaxis es:
ShellExecute (Manejador, Operación, NombreFichero, Parámetros, Carpeta, Mostrar);
* Manejador (HWND) es el manejador (window handle) de la ventana madre, por ejemplo el manejador del formulario principal de nuestra aplicación.
* Operación (PChar) es un puntero a una cadena terminada en nulo conteniendo el nombre de la operación a realizar, en este caso como deseo abrir una Pagina Web utilizo 'open'(ejecuta o abre el archivo con la aplicación asociada), este parámetro también puede ser nil y en tal caso se asumirá la opción 'open' (abrir).
* NombreFichero (PChar) es un puntero a una cadena terminada en nulo conteniendo el camino y el nombre de la aplicación asociada, en nuestro caso la Pagina Web.
* Parámetros (PChar) es un puntero a una cadena terminada en nulo conteniendo los parámetros que se pasan a la aplicación indicada en NombreFichero. Si NombreFichero no es especificaba un ejecutable sino un documento, entonces Parámetros debe ser nil.
* Carpeta (PChar) es un puntero a una cadena terminada en nulo conteniendo el camino de la carpeta que se tomará como directorio por omisión de la aplicación. Se corresponde con el cuadro de texto "Iniciar en:" de las propiedades de los accesos directos. Este parámetro puede ser nil.
* Mostrar (Integer) especifica la forma en que se mostrará la aplicación especificada en NombreFichero. Hay varios valores posibles:
-SW_RESTORE: activa y muestra la ventana. Si la ventana está maximizada o minimizada, Windows restaura a esta a su tamaño y posición original.
-SW_SHOW: activa y muestra la ventana en su tamaño y posición actual.
-SW_SHOWNA: muestra la ventada en su estado actual.
-SW_SHOWNORMAL: activa y muestra una ventana en su estado y posición original.
-SW_MAXIMIZE: maximiza la ventana especificada.
-SW_MINIMIZE: minimiza la ventana especificada
-SW_SHOWMAXIMIZED: activa la venta y la muestra como una ventana maximizada.
-SW_SHOWMINIMIZED: activa la ventana y la muestra como una ventana minimizada.
-SW_SHOWMINNOACTIVE: muestra la ventana como una ventana minimizada.
-SW_SHOWNOACTIVATE: muestra la ventana en su tamaño y posición mas reciente.
La documentación indica que si el NombreFichero se refiere a un documento Mostrar debería ser 0, sin embargo si prueban otros valores igualmente funcionan.
Valor devuelto: si la función tiene éxito, ShellExecute devuelve un valor tipo INST con el manejador (handle) de la aplicación que se ejecutó. Si la función fracasa se obtiene un código de error.
Ejemplo:
Uses ShellAPI;
....
ShellExecute(Handle,'open','Tabaco.html','','',SW_ShowMaximized); //ejecuta la Pagina Web Tabaco.html en una ventana maximizada
Nota: Una aplicación llamada por ShellExecute correrá asincrónicamente, es decir, la ejecución de nuestra aplicación continua sin esperar el final de la aplicación llamada que correrá simultáneamente.
Debemos tener en cuenta que ShellExecute se encuentra declarada en archivo de cabecera shellapi.h de la librería shell32.lib
La sintaxis es:
ShellExecute(Manejador, Operación, NombreFichero, Parámetros, Carpeta, Mostrar);
· Manejador: manejador de la ventana madre, por ejemplo el manejador del formulario principal de una aplicación.
· Operación: es un puntero a una cadena que especifica la operación a realizar.
· NombreFichero: es un puntero que contienen el camino de la aplicación a ejecutar.
· Parámetros: puntero a una cadena que especifica los parámetros del archivo a ejecutar, en este caso la Pagina Web.
· Carpeta: es un puntero a una cadena que especifica el camino de la carpeta que se tomara como directorio por omisión de la aplicación.
· Mostrar: cual será la forma en que se mostrara la aplicación.
Valor devuelto: si la función tiene éxito, ShellExecute devuelve un valor tipo INST con el manejador (handle) de la aplicación que se ejecutó. Si la función fracasa se obtiene un código de error.
Ejemplo:
#include ...
ShellExecute(Handle,'open','Tabaco.html','','',SW_ShowMaximized); //ejecuta la Pagina Web Tabaco.html en una ventana maximizada
La Sintaxis es:
ShellExecute(Manejador, Operación, NombreFichero, Parámetros, Carpeta, Mostrar);
Observe que la sintaxis es la misma de los lenguajes anteriores.
Debemos tener en cuenta que ShellExecute se encuentra declarada en la librería "shel32.dll"
Ejemplo:
'Código para el Modulo
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'Código para el procedimiento
'Definimos las variables
Dim CadenaResultante As Long
'Abre una página Web en el navegador por defecto del sistema
CadenaResultante = ShellExecute(hwnd, "open", "Tabaco.html", "", "", 1)
La sintaxis es:
Debemos tener en cuenta que ShellExecute se encuentra declarada en la librería "shel32.dll"
ShellExecute(Manejador, Operación, NombreFichero, Parámetros, Carpeta, Mostrar);
Observe que la sintaxis es la misma de los lenguajes anteriores.
Ejemplo:
DECLARE INTEGER ShellExecute IN shell32.dll ;
INTEGER hndWin, STRING cAction, STRING cFileName, ;
STRING cParams, STRING cDir, INTEGER nShowWin
...
ShellExecute(0, " open ", " tabaco.html ", "", "",1);
En el caso de los lenguajes .NET utilizamos la clase Process del .NET Framework namespace System.Diagnostics. Esta clase emula la función ShellExecute del API Win32, haciendo más simple la ejecución.
Debemos tener en cuenta que es necesario declarar el uso de Namespace mediante la siguiente instrucción:
Imports System.Diagnostics
Luego se declara y llama a la clase:
Dim sInfo AS New ProcessStartInfo("tabaco.html")
Process.Start(sInfo)
En el caso de este lenguajes, al igual que en Visual Basic .NET utilizamos la clase Process del .NET Framework namespace System.Diagnostics.
Debemos tener en cuenta que es necesario declarar el uso de Namespace mediante la siguiente instrucción:
using System.Diagnostics;
Luego se declara y llama a la clase:
ProcessStartInfo sInfo = new ProcessStartInfo("tabaco.html");
Process.Start(sInfo);
GetUserName (Devuelve en nombre del usuario)
GetComputerName (Devuelve en nombre del computador)
GetDiskFreeSpace (Devuelve información sobre el disco duro)
GetDiskFreeSpaceEx (Devuelve la capacidad de un disco mayor de 2Mb.)
GetVolumeInformation (Nombre del Disco, tipo de formato y numero de disco)
GetLogicalDriveStrings (Devuelve las unidades disponibles en un ordenador)
GetLocalTime (Devuelve la fecha y hora del ordenador)
GetCursorPos (Devuelve la posición del cursor en la pantalla)
GetDriveType (Devuelve el tipo de Unidad)
SetWindowPos (Formulario Siempre Visible)
GlobalMemoryStatus (Información sobre la memoria física disponible)
ShellExecute (Ejecutar)
GetVersionEx (Devuelve la versión del Windows)
SystemParametersInfo (Cambia el fondo de pantalla del Windows)
SHFileOperation (Enviar un archivo a la papelera de reciclaje)
GetWindowsDirectory (Muestra la ruta del Windows)
GetSystemDirectory (Muestra la ruta del directorio System de Windows)
sndPlaySound (Ejecutar sonidos .WAV)
FindExecutable (Busca el archivo ejecutable asociado a un archivo, y muestra el icono)
GetKeyboardStateByString - SetKeyboardStateByString (Seleccionar y Deseleccionar el Bloque Numérico del teclado)
FindWindow (Indica si una aplicación determinada esta en ejecución)
SystemParametersInfo (Activa/Desactiva las teclas de Escape - CTRL+ALT+SUB - ALT+TAB - CRTL+ESC)
GetSysColor (Devuelve los colores del Windows)
GetACP (Determina la página de código ANSI vigente)
SetWindowPos (Esconder y mostrar la barra de tareas del Windows)
ExitWindowsEx (Apaga o Reinicia el Windows 95/98)
GetSystemInfo (Información sobre el Hardware)
SystemParametersInfo (Devuelve y establece parámetros del sistema de Windows)
![]() |
![]() |
![]() |
![]() |
![]() |
---|
Te espero en: wilucha@gmail.com
Esta page está en: www.wilocarpio.com.ar
15/03/2003