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

Articolo che fornisce le basi per l'utilizzo delle API in Windows Presentation Foundation e la simulazione della tastiera.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

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.