Un buon giudizio su un prodotto gratuito di Mamma Microsoft.

Da quando Mamma Microsoft ha messo in rete il suo prodotto chiamato Windows Defender, l'ho preso subito come mio firewall preferito: in lingua Italiano, semplice da capire e poi ...visto che è un prodotto Microsoft penso che dia meno problemi di compatibilità tra vari programmi.....
Molte volte mi sono scontrato tra vari giudizi positivi e negativi su questo prodotto...
Da una settimana che un mio cliente mi assilla per un Virus (qualsiasi pagina visita gli esce una pagina con scritto: Warning! Visiting this site may harm your computer! ecc.. ) entratogli nel PC. Il Cliente ha un Antivirus molto noto, ma è stato tanto inteligente da fare OK all'installazione del virus e "Consenti" all'avviso dell'Antivirus.
Dopo varie ricerche, scansioni con vari antivirus..ecc....ho tentato di mettergli Windows Defender..
dopo l'aggiornamento delle definizioni e la prima Analisi puf: WD trova l'intruso e provvedo subito a rimuoverlo...
Funziona alla grande...Problema Risolto..
Grazie Mamma Microsoft...

Huawei E1692 non si connette con Vista SP2

Installando il service pack 2 di Windows Vista, alice mobile con chiavetta usb non si connette più.
Lo stesso problema è riscontrabile in Windows 7.

Il problema si risolve modificando un opzione del programma Alice Mobile.

Nel menu Strumenti-> Opzioni-> Rete-> Tipo di connessione occorre selezionare RAS e non NDIS come di default e tutto si risolve.

 

Mio primo articolo tecnico su DotNetRomaCeSta

Ebbene si. Ringraziando che m'ha dato fiducia, ho fatto un bell'articolo su www.dotnetromacesta.org

La mia MessageBox temporizzata
la trovate a questo indirizzo: http://www.dotnetromacesta.org/common/articoli/windowsapp/varie/La_mia_MessageBox_temporizzata.aspx

A voi i commenti..

Aprire WPF Window da WinForms

Se vi capita, come è successo a me, di fare una Dll per un vostro programma ma volete inserire al posto del classico WinForm, una Window di WPF, potete facilmente farlo così:

Al posto della classica DLL, create una “Libreia di Controlli Utente WPF”.

al suo interno inserite una “Finestra WPF (Window)”.

dopo aver compilato (nel mio pc registro la dll in GAC. andiamo nel progetto WinForm e dopo aver importato nei riferimenti la dll WPF  e la DLL PresentationFramework, importando lo spazio dei nomi “System.Windows.Forms.Integration” nella Form dove si trova il Button che aprirà la Window WPF..

Andiamo nell’evento Click del Button che dovrà richiamare la nostra Window e scriviamo questo:

 

Dim wpfwindow As New WPFWindow.Window1
ElementHost.EnableModelessKeyboardInterop(wpfwindow )
wpfwindow .Show()

Provate e vedrete la Window aprirsi nella vostra applicazione WinForm..

 

Ottimo modo per entrare pin piano in questo fantastico mondo WPF.

Un grazie a Alessandro Del Sole per la dritta sul “ElementHost”.

Configurare SQL Server 2005Express per consentire le connessioni remote

Dato che per me è stato un calvario capire come configurare SQLExpress per essere connesso da remoto, una volta riuscito ho deciso di scrivermi l'appunto. Poi ho pensato: perchè non renderlo pubblico a tutti?

Ecco come ho fatto:

Dopo aver installato SQL2005Express (d'ora in poi chiamerò SQLE) e il MANAGER di SQLExpress, ho provato se localmente si connetteva.

A me s'è connesso subito senza preblemi.

 

Sono andato sulla macchina remota e ho inserito questi dati nel Manager di SQL:

Tipo Server: Motore di database
Nome Server: Server\SQLEXPRESS
Autenticazione: Autenticazione di SQL Server
Nome Account di access: sa
Password: mia pass

Per chi non lo sapesse "sa" è l'utente principale di SQL (Così ho capito, ma forse sbaglio).

Il nome "SERVER\SQLEXPRESS" è il server dove si trova SQL con il nome dell'istanza SQL. (forse sbaglio col nome "istanza").

Faccio Connetti e nulla: un errore enorme lungo un km....

Vado sul PC server e faccio partire il programma "SQL Server Configuration Manager".

Vado nelle configurazione di rete SQL Server 2005 e attivo solo il Protocollo TCP/IP, imposto dalle proprietà l'attivazione dell'IP1.

Per defaul dopo l'istallazione, SQL non avvia SQL Browser ma per le connessioni remote  bisogna attivarlo.
Per fare questo uso l'utiliti "Configurazione superfice di attacco di SQL Server":

  • Selezionare "Configurazione superficie di attacco per servizi e connessioni"
  • Selezionare il componente "SQL Server Browser" ed impostare "tipo di avvio" su "Automatico"
  • Riavviare il PC e vi troverete SQL Server Browser avviato (potete controllare da "SQL Server Configuration Manager".

Per ultimo vado nel Firewall di Windows e metto i due programmi nelle eccezioni, rispettivamente:

C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe

C:\Program Files\Microsoft SQLServer\90\Shared\sqlbrowser.exe

Vado dal PC Remoto e tutto funziona..

Grazie a tutti.

Attivare SilverLight su IIS

Dopo innumerevoli guide dall'amico Alessandro del Sole sul fantastisco mondo di SilverLight, mi sono messo a fare qualche scherzetto con il programma Deep Zoom Composer, sempre consigliato da Alessandro D. S. .

Premetto che ho alcuni domini registrati su vari Server tra cuoi uno (il mio: panatronic.it) su un mio server con Win2003 e IIS.

ho fatto una piccola gallery e l'ho uplodata sul mio stazio web del mio dominio. ho messo tutta la cartella che Deep Zoom Composer mi crea nell'esportazione e precisamente il contenuto della cartella "DeepZoomProjectWeb".

sui server di aziende importanti (non cito per non fare pubblicità) funziona tutto ok ma sul mio no.

A questo punto decido di risolvere il problema sul server: prima cosa installo .Net 3.5 sul server. Per l'installazione nessun problema tranne che un avviso di protezione sull'aggiornamento di alcuni file che dal titolo dell'avviso (Library C++) ritengo sia un aggiornamento di librerie c++ di sistema; non potevo far altro che OK ed ho continuato.

Dopo questa installazione ho provato ma nulla. Ancora non funzionava. Allora ho provato ad installare i runtime di SilverLight andando via web in quella pagina pubblicata della gallery direttamnte dal server e dato che non c'era ancora installato i runtime di SL, ho ricevuto l'avviso d'installazione. Faccio l'installazione ma nulla.

A questo punto chiedo nel nostro forum "Argomenti Vari" e subito l'amico Alessandro D. S. mi suggerisce di installare il .Net 3.5 e i runtime di SilverLight che avevo precedentemente fatto.

Effettivamente non pensavo fosse un problema di runtime e vado a vedere che errore mi da nella pagina: l'errore specificava che si trattava di settaggio del server Web, quindi IIS.

Dato che tra le varie prove ho impostato la cartella contenente la gallery con tutti i permessi di tutto, sicuramente era un settaggio legato proprio tra IIS e SL.

facendo un poco di ricerche sul web con l'amico google incappo in un documento di una nota azienda che da servizio hosting che parla di estensioni MIME abilitate sui suoi server win2003. Tra le estensioni elencate si trovava l'estensione .xap che si riferisce ad applicazioni SilverLight.

A questo punto vado sulle proprietà del sito web in IIS e precisamente nel menù HTTPHeaders -> MIME types ed aggiungo questa types:
Estensione: .xap
Types: application/x-silverlight-app.

Faccio la prova e funziona perfettamente.
Ora non so se installando solo il .Net 3.5 o solo il runtime di SL e poi impostando questa opzione sarebbe andato bene comunque.
Magari in un'altra situazione farò queste prove. Comunque su questo Server mi servirà prima o poi il .Net 3.5, quindi meglio così.

è vero: volete vedere la gallery? è la gallery che vi ha già mostrato l'amico Marco Chillemi della sua piccola vacanza nel Salento: Gallery Salento . Attendo Voi per le prossime Gallery.

I Parametri "Table-Valued" di SQLServer 2008

I Parametri "Table-Valued" sono stati introdotti con SQL Server 2008 (sotto sugerimento di Luca Bianchi) e ci permettono di inviare un intera DataTable ad una istruzione T-SQL o Routine senza creare nessuna tabella temporanea o altro del genere.

Per poter inviare l'intera DataTable ho fatto una semplice SP che riceve da una Select i dati dal parametro Table-Value e lo inserisce "INSERT" nella tabella desiderata.

Ecco come ho fatto:

Partiamo da VB e dalla creazione della DataTable.

   1:   Dim dtTable As New DataTable
   2:   Dim col As DataColumn
   3:  col = New DataColumn("ID", GetType(Int32))
   4:  dtTable.Columns.Add(col)
   5:  col = New DataColumn("Descrizione", GetType(String))
   6:  dtTable.Columns.Add(col)

ora inserieamo alcuni dati nella DataTable:

   1:  Dim printRow As DataRow = dtTable.NewRow
   2:  printRow("ID") = 1
   3:  printRow("Descrizione") = "Patate di stagione"
   4:  dtTable.Rows.Add(printRow)
   5:  printRow("ID") = 2
   6:  printRow("Descrizione") = "Arance Siciliane"
   7:  dtTable.Rows.Add(printRow)
   8:  printRow("ID") = 3
   9:  printRow("Descrizione") = "Mele di stagione"
  10:  dtTable.Rows.Add(printRow)

 

Ora andiamo su SQL con il Manageri di SQL2008 e creamo un Type personalizzato di tipo Table-Value:

   1:  CREATE TYPE dbo.TTableType AS TABLE
   2:      ( ID int, Descrizione nvarchar(Max) )
 
Ora creamo la Stored Procedure con il parametro di tipo Table-Value appena creato:
   1:  create PROCEDURE [dbo].[SpInTable] 
   2:  (@Tab dbo.TTableType readonly ) 
   3:   
   4:  AS 
   5:   
   6:  BEGIN TRAN 
   7:  SET NOCOUNT OFF; 
   8:   
   9:  INSERT INTO 
  10:  [intec].[dbo].[TabMia] (ID, Descrizione )
  11:      SELECT ID, Descrizione FROM @Tab;
  12:   
  13:  COMMIT TRAN 
Perfetto. Ora non ci rimane altro che trasmettere la DataTable alla Stored Procedure dal nostro progetto VB:
   1:  Dim insertSpInTable As New SqlCommand("SpInTable", CnnS)
   2:  insertSpInTable.CommandType = CommandType.StoredProcedure
   3:  Dim ParamT As SqlParameter = insertSpInTable.Parameters.AddWithValue("@Tab", SqlDbType.Structured)
   4:  ParamT.SqlDbType = SqlDbType.Structured
   5:  ParamT.TypeName = "dbo.TTableType"
   6:  ParamT.Value = dtFR
   7:  insertSpInTable.ExecuteNonQuery()

Eccolo qui. Abbiamo passato un intera DataTable in una tabella SQL senza fare nessun ciclo come per esempio facevamo con VB6 e Access. Veramente molto veloce e preciso con una transazione sola. Questo potrebbe essere comodo per inserire, ad esmpio, i dettagli di una fattura, DTT o altro.
Spero che vi potrà essere utile nei vostri progetti altrimenti scusate per la noia arrecatovi. :-) :-)

Scaricare file da Internet

leggendo una richiesta di un collega sulla maillist VBT&T ho pensato di risolvere questo mio problema che mi assilla da mesi. Anche io avevo bisogno di visualizzare una progressBar durante lo scaricamento di un file da internet.

Il tutto è fattibile con la classe System.Net.WebClient che fornisce tutti i metodi necessari. Per cominciare, basta creare una nuova variabile globale di tipo System.Net.WebClient:
Public Withevents TCP As New System.Net.WebClient
Abbiamo specificato la parola chiave Withevents per indicare al compilatore che di questa calsse useremo anche i suoi eventi: quindi potremo scrivere direttamente eseguite quando si generano eventi in TCP.
Per iniziare un download useremo il metodo DownloadFileAsync, che non solo ci permette di scaricare il file specificato nella locazione specificata (come vedremo tra breve), ma non blocca il form e consente di svolgere tutti gli eventi anche durante il download. La sintassi è la seguente:

 

TCP.DownloadFileAsync(URL , "C:\miofile.exe")

 

Per la gestine di una ProgressBar durante il Download del file basta gestire questo evento, generato quando c' è un progresso nel download. Ipotizziamo di avere una ProgressBar di nome "MyProgressBar". Ecco la sintassi:


Private Sub PrgChngd(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles TCP.DownloadProgressChanged
MyProgressBar.Value = e.ProgressPercentage 'restituisce la percentuale del download
Eventualmente potete visualizzare altri dati del donwload che ora commento perchè non servono
'e.BytesReceived 'restituisce il numero di bytes ricevuti
'e.TotalBytesToReceive 'restituisce il numero dei byte da ricevere
End Sub

Poi c'è questo evento che si scatena quando un download viene completato ed utile ad esempio per segnalarlo.
Ecco la sintassi dell'evento:
Private Sub PrgComplete(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles TCP.DownloadFileCompleted
If e.Cancelled = True Then
'il download è stato cancellato
Else
'il download è stato completato
End If
End Sub

Spero vi serva per i vostri programmi...

La classe Uri (System.Uri) indica univocamente un file sul web.
In questo modo inizierà il download.
Altri importanti metodi e proprietà di questa classe sono il "CancelAsync" che interrompe il download corrente e il "IsBusy" che restituisce vero se è in corso un download, altrimenti falso.
Dim URL As New Uri("http://www.miosito/miofile.exe")

aggiungere Setting nuovi in un'applicazione

Ormai da tempo utilizzo una mia libreria personalizzata con vari funzioni di gestione ed altro.

Tra le tante cose c'è anche un gestore di Setting. Per capire come funziona vi rimando all'articolo della brava Sabrina Cosolo e bravo Diego Cattaruzza http://www.visual-basic.it/articoli/scdcSenzaMani05.htm.

naturalmente le due classi in questione l'ho nominate in modo consono alle mie applicazione:

La classe Setting che è l'elemento per la serializzazione e gestione delle impostazioni singole, si chiama PanatronicSetting.

La classe Settings invece che è la collezione di Setting (collezione PanatronicSetting) si chiama ClsSetting e si trova in ogni applicazione in cui serve la gestione dei Setting; naturalmente con relativo FormSetting.

Il problema che ritrovo ogni volta che devo aggiungere un nuovo parametro di setting, è ricordarmi i vari passaggi: semplici ma dato che vengono fatti una volta al mese (al massimo) si fa presto a dimenticare qualcosa.

Per questo riporto qui l'aggiunta di un parametro. Ecco i vari passaggi per l'aggiunta di un setting contenente la stringa di connessione di un DB Access:

  1. Definisco la costante col nome del setting:
     public const STT_CnnAccess = "CnnAccess" as string
  2. Definisco la costante con la descrizione del setting:
    public const SDD_CnnAccess as string = "Connessione DB Access"
  3. Nel metodo LoadSEtting scrivo il controllo dell'eseistenza del Setting e in caso contrario lo creo:
    If Not AppSettings.ExistSetting(STT_CnnAccess) Then
    stt = New PanatronicSetting()
    stt.ID = STT_CnnAccess
    stt.Description = SDD_CnnAccess
    stt.Value = "connessione temporanea"
    stt.Automatic = False
    AppSettings.Add(stt)
    End If
  4. Per ultimo creo una property per il recupero dell'eventuale setting esistente:
    Public Shared Property CnnAccess() As String
    Get Return AppSettings(STT_CnnAccess).Value
    End Get
    Set AppSettings(STT_CnnAccess).Value = value
    End Set
    End Property
  5. Se invece che nei setting di Applicazione volevo metterlo nei setting dell'utente, basta fare la stessa cosa e la posto di AppSetting va messo UsrSettings.

Tutto qui...Spero che possa servire a qualcuno..

By By e a Sabry mandi mandi....

Ringrazio Dio che faccio il programmatore

Da un pò di tempo che ormai ho deciso di abbandonare la mia vecchia attività: vendita di Hardware PC.

Chi mi conosce sà di cosa mi occupo e per chi non lo sa lo spiego velocemente:

da 8 Anni vivo in Italia ed ho una mia azienda: vendo Hardware PC e presto assistenza tecnica. Da un paio d’Anni a questa parte ho preso il mio hobby come punto cruciale della mia attività: Programmazione VB.

Fino a quando non raggiungo una buona conoscenza della materia possibilmente lavorativa come programmatore, continuo a vendere ogni tanto qualche PC e presto assistenza tecnica ad aziende e privati.

Purtroppo questa decisione (lasciare il commercio di Hardware) è stata presa dopo varie riflessioni sull’andamento del settore.

Apro una parentesi: per chi non mi conosce, sono una persona che quando fà un lavoro, cerca di rispondere il più possibile del proprio lavoro con la faccia propria e in questi Anni è stato proprio questo che m’ha fatto lavorare: in poche parole in tutto ci metto il mio nome e la mia faccia. Con la vendita dell’Hardware è difficile metterci la faccia dato che nella maggior parte dei casi, devi rivolgerti alle case produttrici o ai fornitori di Hardware per risolvere problemi dei clienti.

Vivendo in un paese di 4500 abitanti, tra parenti e conoscenti, è ancora più difficile. Col Software invece è diverso: lo sviluppo io e ne rispondo io e in caso di problemi sono io sia il produttore che il fornitore….

Questo mese m’è successa una cosa che m’ha fatto dire basta alla vendita di PC e accessori….

Dopo l’insistenza di un cliente, il 21/12/08 compro un portatile dal mio fornitore per questo cliente. Stiamo parlando di un fornitore molto grande (CDC). Tutto ok; cliente contentissimo…. (dopo alcuni giorni vedo che per lo stesso prezzo, PC City dava il modello superiore).

Il 05/01/09 il Portatile si rompe: non si accende più: parte la ventola e due lucine e poi basta; per spegnerlo devo staccare batteria e corrente. Il fornitore mi rassicura dicendo che con quel prodotto me lo avrebbero cambiato senza problemi nel primo mese d’acquisto…Nel primo mese ci siamo e lo porto con relativa bolla dal fornitore. Da vecchie esperienze comincio a “Sudare Freddo”.

Dopo circa 2 settimane mi arriva la comunicazione che il portatile è stato sostituito e potevo andare a ritirarlo. Vado a ritirarlo (non parliamo dell’assistenza CDC; tempo fa per ritirare un HDD ho impegato 3 mesi: la maggior parte delle volte l’assistenza era chiusa, cioè l’Hdd stava sullo scaffale ma siccome c’era il cartello “Assistenza chiusa”, non potevano allungare la mano di un metro e prenderlo dallo scaffale).

Prendo il portatile, lo porto in ufficio e con grande piacere, dopo averlo collegato, il Portatile non si accende; stesso difetto. Controllo il tutto e mi accorgo che il Portatile era sporco di usura e rotto.

Telefono al fornitore e mi dicono: non possiamo cambiarlo perchè il cambio si fà sul primo prodotto e non sul secondo…m’incazzo come una bestia e chiamo la sede CDC centrale a Pisa che mi rispondono: “chiami l’assistenza al numero 899……”. Dopo un reclamo scritto, in tarda serata mi rispondono dalla sede del mio fornitore, dicendomi che mi sostituiscono il Portatile in via eccezionale (quindi per questa volta devo dire grazie, la prossima?). La mattina dopo chiamo il fornitore e chiedo se gentilmente mi fanno arrivare il portatile nuovo in modo dai poter fare un’unica trasferta (disto dal fornitore 30Km ) per la consegna del rotto e ritiro del nuovo. Mi dicono: “ no, devo avere prima quello rotto e poi faccio arrivare il nuovo che sta fermo a Bari”. Parto e mi faccio 30Km di andata e 30Km di ritorno e porto il Portatile. Aggiungo che sono andato a portarlo ma vario materiale che mi serviva, l’ho acquistato da un altro fornitore dopo averglielo comunicato anche a loro. Ora sto in attesa del portatile sperando che vada tutto bene e non so ancora cosa dire al Cliente dato che da 3 giorni non mi sto facendo trovare (non sono una persona che mente sulle colpe degl’altri).

Questa è stata l’ennesima scocciatura dell’assistenza CDC e per questo ogni giorno ringrazio Dio di aver scelto di fare il programmatore.

Scusate lo sfogo e spero che qualcuno mi dica: solo con te sono successe queste cose, a me va tutto bene. Lo spero per la CDC. Questi problemi mi fanno pesare meno i problemi che a volte mi affligono davanti ad una routine complessa. Comunque per la Routine complessa ci siete sempre Voi, Grandi amici speciali della Community.