giovedì 31 maggio 2018

Creare un’applicazion Clickonce windows Form da eseguire in Asp.Net C# e VB.Net

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/programmazione/art_creare-un%E2%80%99applicazion-clickonce-windows-_1560.aspx

In questo articolo vedremo come realizzare applicazioni di tipo Windows Application, nel linguaggio di programmazione VB.net e C# ed utilizzarli in ambiente Web, tramite la tecnologia Asp.net
La distribuzione di applicazioni ClickOnce, permette l’esecuzione di applicazioni per Windows, passando anche dei parametri.
In questo articolo, vedremo come passare un parametro.

Creazione del progetto e stesura del codice

Si crea un nuovo progetto di tipo “Desktop di Windows”, selezionando come modello “Applicazione Windows Form” con il linguaggio di programmazione di proprio interesse. Nel nostro caso, abbiamo dato come nome del progetto “WinClickOnce”.
Nella form che viene creata, aggiungete un controllo di tipo “Button”.
Aggiungete al progetto un riferimento alla libreria di tipo “System.Web” come mostrato in figura 1.

Figura 1 – il rifermento al mondo web

Questo riferimento ci permette di gestire alcune classi presenti per le applicazioni di tipo Web application, ossia in Asp.Net, permettendo in questo modo di rilevare i parametri che verranno passati come una vera e propria applicazione web.
Ora dobbiamo aggiungere la possibilità di passare dei parametri al progetto.
Nella finestra Esplora soluzione, facciamo click con il tasto destro sul nome del progetto, e nel menu che viene visualizzato selezioniamo “Proprietà” in questo modo viene visualizzata la finestra delle impostazioni del progetto.
Nella finestra che viene aperta, selezioniamo la voce “impostazioni” (figura 2) e nella colonna “Nome” impostiamo il valore “Parametro1” senza virgolette.



Figura 2 – La finestre delle impostazioni

In questo modo abbiamo fornito al progetto la possibilità di avere delle impostazioni personalizzate.
Ora ritorniamo nella nostra form, e facciamo doppio click sul pulsante, in visualizzazione codice, nell’intestazione dobbiamo inserire lo spazio dei nomi per gestire il parametro.
Qui di seguito tale dichiarazione per entrambi i linguaggi.


VB.Net

Imports WinClickOnceVB.My

C#

using WinClickOnce.Properties;

Mentre nell’evento click scriviamo il codice che visualizzerà a video tramite messaggio il valore passato alla windows form dalla pagina web.



VB.Net

Private Sub BtnMessaggio_Click(sender As Object, e As EventArgs) Handles BtnMessaggio.Click

        MessageBox.Show("Prova ClickOnce. Parametro passato: " & Settings.Parametro1)

    End Sub

C#

private void BtnMessaggio_Click(object sender, EventArgs e)

        {

            MessageBox.Show("Prova ClickOnce. Parametro passato: " + Settings.Default.Parametro1);

        }

 Sempre nel progetto Windows Application modifichiamo il file programm per il linguaggio C#, mentre per VB.Net dobbiamo aggiungere un file modulo. In questi file, dovremmo gestire i parametri che verranno passati.
In particolare utilizzando la libreria System.Web, aggiunta in precedenza, avremmo la possibilità di gestire di parametri in querystring, come se fosse una vera applicazione web.
Aggiungiamo lo spazio dei nomi, per gestire i parametri, ed altri aspetti della connessione.
Qui di seguito le suddette dichiarazione.

VB.Net

Imports System.Collections.Specialized

Imports System.Deployment.Application

Imports System.Web

Imports WinClickOnceVB.My

C#

using System.Collections.Specialized;

using System.Deployment.Application;

using System.Web;

using WinClickOnce.Properties;

 

Nel metodo Main, scriviamo il codice per la gestione dei parametri, e della verifica se l’applicazione gira in ambito web o no.
Qui di seguito le suddette operazioni per entrambi i linguaggi.



VB.Net

Sub Main(args() As String)

 

        If args.Count() > 0 Then

            Settings.Parametro1 = args(0)

        Else

 

 

            If ApplicationDeployment.IsNetworkDeployed Then

                Dim nameValueColParametri As New NameValueCollection()

                Dim fullUrl As Uri = ApplicationDeployment.CurrentDeployment.ActivationUri

                If fullUrl IsNot Nothing Then

                    Dim queryString As String = fullUrl.Query

                    nameValueColParametri = HttpUtility.ParseQueryString(queryString)

 

                    Settings.Parametro1 = If(nameValueColParametri.AllKeys.Any(Function(k) k.Equals("parametro")), nameValueColParametri("parametro"), String.Empty)

Settings.Save()

                End If

            End If

        End If

 

 

        Dim form1Visualizza As New Form1

        form1Visualizza.ShowDialog()

 

    End Sub

C#

static void Main(string[] args)

        {

            if (args.Count() > 0)

            {

                Settings.Default.Parametro1 = args[0];

            }

            else

            {

 

 

                if (ApplicationDeployment.IsNetworkDeployed)

                {

                    NameValueCollection nameValueColParametri = new NameValueCollection();

                    Uri fullUrl = ApplicationDeployment.CurrentDeployment.ActivationUri;

                    if (fullUrl != null)

                    {

                        string queryString = fullUrl.Query;

                        nameValueColParametri = HttpUtility.ParseQueryString(queryString);

                        Settings.Default.Parametro1 = nameValueColParametri.AllKeys.Any(k => k.Equals("parametro")) ? nameValueColParametri["parametro"] : string.Empty;

Settings.Default.Save();

 

                    }

                }

            }

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new Form1());

        }



Per quanto riguarda la stesura per l’applicazione ClickOnce, abbiamo terminato, ora dobbiamo procede alla relativa pubblicazione.

Creazione del progetto web e verifica

Si crea un nuovo progetto di tipo Asp.Net, secondo il linguaggio di proprio gradimento.
Nel progetto si crea una cartella denominata MiaApp, dove andrà pubblica l’applicazione ClickOnce appena creata.
A questo punto ritorniamo sul progetto di tipo “ClickOnce” la nostra Windows Application, e nelle proprietà del progetto (nella finestra esplora soluzione, tasto destro sul progetto e poi selezionare la voce “Proprietà”. Nella finestra che viene aperta, selezioniamo la voce “Pubblica” , impostiamo le varie proprietà.
Si lascia la spunta “Aumenta Automaticamente numero revisione….”, impostiamo la spunta sulla voce “Applicazione disponibile solo online”, mentre nel percorso cartella di pubblicazione, etc, impostiamo il percorso della cartella appena creata, quella denomina MiaApp, mentre nella casella di sotto “Url cartella di installazione” impostiamo il sito web, con la cartella. Il tutto come riportato in figura 3.


Figura 3 – La schermata della voce Pubblica.

Facciamo click sul pulsante “Opzion” e nella voce “Distribuzione” la spunta la deve avere la voce “Genera automaticamente pagina web….” E la voce “Usa estensione .deploy” nella casella “Pagina web distribuzione” scriviamo “publish.html”.
Facciamo click sulla voce “Manifesti” e mettiamo la spunta sulla voce “Consenti passaggio di parametri URL all’applicazione” , mentre nella voce “Descrizione” ,potete mettere qualsiasi valore nella voce “Nome Editore” e “Nome prodotto” a questo punto confermate tramite il pulsante “OK”.
Facciamo click sul pulsante “Pubblicazione Guidata”, nella prima schermata, verrà visualizzato il percorso della cartella in cui pubblicare il programma, verificate l’esattezza.
Nella seconda pagina, l’urlo del sito, con il nome della cartella, nella finestra successiva, lasciate la spunta su “Applicazione disponibile solo online”, a questo punto fate click sul pulsante “Fine”.
A questo punto dobbiamo rilevare il percorso e nome del file, della ClickOnce pubblicata.
Se avviamo il nostro sito, e poi scriviamo il nome della pagina impostata in fase di pubblicazione, ossia “Publish.htm” avremo le informazioni che ci servono, nel nostro caso è il seguente http://localhost:4932/MiaApp/publish.htm
Se avviciniamo il mouse sulla voce “avviare” possiamo rilevare il nome del file, il tutto come mostrato in figura 4


Figura 4 – La pagina di pubblicazione.

A questo punto torniamo nel nostro sito, e nella pagina web, aggiungiamo un pulsante, che al click, tramite una funzione Javascript, aprirà la nostra applicazione.
Qui di seguito il frammento di codice per la parte web.


<script type="text/javascript">

         function EseguiClickOnce() {

 

       

window.open('/MiaApp/WinClickOnce.application?parametro=MioValore');

        }

 

    </script>

<asp:Button ID="Button1" runat="server" OnClientClick="EseguiClickOnce();" Text="Button" />

Se testiamo, verrà visualizza una finestra di sicurezza come riportato in figura 5.



Figura 5 – La finestra di sicurezza che ci informa dell’esecuzione dell’applicazione.

Facciamo click sul pulsante “Esegui” per vedere la nostra applicazione e rilevare il parametro passato.

Conclusioni

L’articolo ha voluto fornire al lettore, una tecnica di come utilizzare applicazioni di tipo Windows Application da utilizzare nella intranet, tramite il web. Una tecnica che si può rilevare molto utile in certi contesti.

mercoledì 30 maggio 2018

trasferire file online senza limiti di dimensione

Oggi vi segnalo un sito di grande qualità e funzionalità online, che permette di inviare file senza limiti di dimensione.
Certo più il file pesa e più ci mette a caricare.
Le funzionalità del sito https://fromsmash.com/ sono numerose, per esempio è possibile creare un link, nel quale poi inviarlo alle persone per scaricare il file, oppure inviare direttamente il link del download.
La possibilità di stabilire se limitare nel tempo (un giorno o più) il download, oppure l'anteprima ed altre interessanti funzionalità.
Insomma un ottimo sito da tenere sempre a portata di mano.

martedì 29 maggio 2018

Motore di ricerca che non tiene conto dei cookie e rispetta la privacy qwant

Da poco è online un motore di ricerca, che rispetta la direttiva europea in fatto di privacy.
Il motore di ricerca Qwant visibile qui  https://www.qwant.com/  permette di effettuare le ricerche su internet, senza salvare informazioni sulla persona che sta effettuando tali ricerche rispettando la privacy.
Dal sito, si viene informati che non si farà uso di cookie o altro metodo per rilevare informazioni sull'utilizzo di tale motore di ricerca.
Un motore di ricerca, efficiente e veloce, che invitiamo a provare.



lunedì 28 maggio 2018

free ebook SQL Notes for Professionals

SQL Notes for Professionals

Un libro gratuito in formato pdf ed in lingua inglese, che illustra molti aspetti del linguaggio per i database SQL.
Il manuale, scaricabile gratuitamente qui https://sf.tradepub.com/free/w_goaa40/ fornisci una panoramica completa sul database, dalle basi, fino alle funzioni complesse.
Per scaricare il manuale, bisogna compilare il modulo presente nel sito.

domenica 27 maggio 2018

free ebook Introduction to CNTK

CNTK Succinctly


Un nuovo ebook gratuito, questa volta riguardante il Toolkit gratuito ed open source di Microsoft CNTK.
L'ebook, scritto in lingua inglese e di circa 100 pagine in formato pdf, fornisce una panoramica per chi vuole iniziare ad utilizzare tale Toolkit.
L'ebook si può scaricare dal seguente sito https://www.syncfusion.com/ebooks/cntk_succinctly

venerdì 25 maggio 2018

FT: Il sito ufficiale del parco delle Valli riserva naturale dell'aniene Roma

Un fuori tema dedicato ad uno dei parchi più belli, se non il più bello di Roma, parliamo del Parco delle Valli, situato nel quartiere Conca a Roma.
Qui http://parcodellevalli.blogspot.it/ il sito ufficiale, nel quale trovare informazioni, indicazioni sugli eventi, foto e biodiversità

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.