giovedì 24 maggio 2018

Windows Presentation Foundation simulare i tasti VB.Net e C#

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/programmazione/art_windows-presentation-foundation-simulare_1559.aspx


In questo articolo, vedremo come simulare il tasto F5 presente nella tastiera per permettere di aggiornare la finestra del browser di navigazione internet del programma Internet Explorer.
Vedremo come al click di un pulsante, verrà eseguita la funzione di aggiornamento del browser Microsoft, il tutto con il linguaggio di programmazione VB.Net e C# .
Utilizzeremo le API di Windows, per intercettare il programma Internet Explorer, metterlo in primo piano ed eseguire il comando di aggiornamento pagina tramite il tasto F5.

Creazione del progetto

Si crea un nuovo progetto di tipo Windows Presentation Foundation nel linguaggio di proprio interesse.
Aggiungiamo alla form, in particolare alla pagina MainWindow, un pulsante, con il quale andremo a fare il refresh e chiudere l’applicazione. Dopo aver aggiunto al progetto il pulsante e personalizzato a proprio piacimento, aggiungiamo al progetto, il riferimento alla libreria System.Windows.Forms, tramite il menu aggiungi riferimenti dalla finestra di esplora soluzioni.

Stesura del codice

Facciamo doppio click sul pulsante, in modo che passiamo in visualizzazione codice.
Aggiungiamo lo spazio dei nomi relativo all’utilizzo delle API, qui di seguito il frammento di codice delle suddette operazioni per entrambi i linguaggi.



VB.Net

Imports System.Runtime.InteropServices

 

C#

using System.Runtime.InteropServices;

A questo punto all’interno della classe della nostra form, scriviamo la dichiarazione di API per intercettare la finestra di Internet Explorer.
Qui di seguito la dichiarazione delle suddette operazioni per entrambi i linguaggi.


VB.Net

<DllImport("USER32.DLL", CharSet:=CharSet.Unicode)> _

    Public Shared Function FindWindow(lpClassName As String, lpWindowName As String) As IntPtr

    End Function

 

    <DllImport("USER32.DLL")> _

    Public Shared Function SetForegroundWindow(hWnd As IntPtr) As Boolean

    End Function

 

C#

 

 

        [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]

        public static extern IntPtr FindWindow(string lpClassName,

            string lpWindowName);

 

        [DllImport("USER32.DLL")]

        public static extern bool SetForegroundWindow(IntPtr hWnd);


Scriviamo una funzione che verrà eseguita al click del pulsante, che verifica se tra i vari processi aperti in Windows, c’è anche quello di Internet Exploter, in tal caso, verrà eseguito il tasto di scelta rapida per l’aggiornamento del browser, tramite il metodo SendWait di SendKeys.
Qui di seguito si riporta le dichiarazioni delle suddette operazioni.



VB.Net

Private Sub RefreshExplorer()

        'intercetto la finestra di Internet Exploter

        Dim explorerHandle As IntPtr = FindWindow("IEFrame", Nothing)

 

        ' Verifico se è presente

        If explorerHandle = IntPtr.Zero Then

            MessageBox.Show("Non presente Internet Explorer")

            Return

        End If

 

        SetForegroundWindow(explorerHandle)

 

 

        'aggiorno la pagina

        System.Windows.Forms.SendKeys.SendWait("{F5}")

    End Sub

 

 

C#

private void RefreshExplorer()

        {

           //intercetto la finestra di Internet Exploter

            IntPtr explorerHandle = FindWindow("IEFrame", null);

 

            // Verifico se è presente

            if (explorerHandle == IntPtr.Zero)

            {

                MessageBox.Show("Non presente Internet Explorer");

                return;

            }

 

            SetForegroundWindow(explorerHandle);

          

 

            //aggiorno la pagina

            System.Windows.Forms.SendKeys.SendWait("{F5}");

        }



Ora vediamo come eseguire dal click del pulsante tale funzione.
Nell’evento click del pulsante, dobbiamo eseguire la funzione creato poco fa.


VB.Net

Private Sub Button_Click(sender As Object, e As RoutedEventArgs)

        RefreshExplorer()

    End Sub

 

C#

private void Button_Click_2(object sender, RoutedEventArgs e)

        {

            RefreshExplorer();

        }



Conclusioni

L’articolo ha voluto fornire al lettore una tecnica di come utilizzare le api in Windows Presentation Foundation, per i linguaggi più utilizzati in .Net, per aggiornare la pagina web visualizzata nel browser internet Explorer. L’utilizzo del metodo SendWait di SendKeys, permette di simulare i tasti.

Nessun commento: