giovedì 20 dicembre 2007

Tools: Creazione di diagrammi in ambiente Visual Studio Net

Oggi segnalo un programma gratuito per Visual Studio Net riguardante la creazione dei diagrammi UML. Tale programma scaricabile dal seguente sito http://www.tangiblearchitect.net/modellingtools.html permette di aggiungere all'ambiente di sviluppo Visual Studio Net, la possibilità di creare diagrammi.

lunedì 17 dicembre 2007

Segnalazione tools:: CMS gratuito mojo


Oggi segnaliamo un programma gratuito di CMS, ossia un software per la gestione dei contenuti di un sito. Mojoportal http://mojoportal.com/ è un progetto gratuito, scritto in C#, per la gestione dei siti, il software funziona sia sotto Windows, che in ambiente Mono (linux o mac) davvero un ottimo strumento per la programmazione web, in ambito .Net.
Che dirvi... buona creazione dei siti :-)))

domenica 4 novembre 2007

Recensione libro: Programmare Microsoft Sql Server 2005

Eccomi qua, vi segnalo questa mia recensione del libro: Programmare Microsoft Sql Server
2005. La potete leggere dal seguente sito http://blog.shareoffice.it/emanuele/archive/2007/11/04/9270.aspx

venerdì 2 novembre 2007

Articolo Filenet: Inserire le queue (code) di Filenet tramite la tecnologia .Net

Articolo Filenet: Inserire le queue (code) di Filenet tramite la tecnologia .Net (Vb.Net e C#)



Figura 1


Introduzione.


In questo articolo vedremo come inserire delle code (valori queue) in Filenet Image Services (IS), utilizzando la tecnologia .Net in particolare con i linguaggi Visual Basic Net e C#. Si crea un nuovo form nel quale inseriamo tre label (per le varie etichette) due caselle di testo (per i valori da inserire, anche in questo caso l'etichette saranno nome e cognome come visto nell'articolo precedente) e due pulsanti, relativi all'inserimento ed alla chiusura della finestra. L'aspetto della finestra dovrà essere simile a quella mostrata in figura 1.


Dichiarazione a livello di form dei vari oggetti e modifica del costruttore.


A livello di form, si creano due oggetti, uno di tipo queue e l'altro di tipo queuequeryspecification, il primo ha il compito di gestire le code, mentre il secondo le ricerche delle queue, di seguito si riporta un esempio di codice.


Vb.Net


Dim ObjQueue As IDMObjects.Queue

Dim ObjQueueQuery As IDMObjects.QueueQuerySpecification

C#


IDMObjects.Queue ObjQueue;


IDMObjects.QueueQuerySpecification ObjQueueQuery;


A questo punto dobbiamo modificare il costruttore della nostra form, che tramite l'oggetto library utilizzato nella form di login discussa negli articoli precedenti, possiamo istanziare i vari oggetti. Di seguito si riporta un esempio di codice delle suddette operazioni. Da notare che la parola anagrafica, corrisponde al workspace mentre dati alla queue


Vb.Net


Public Sub New(ByVal Objlibreria As IDMObjects.Library)

InitializeComponent()


'inizializzo

ObjQueue =

New IDMObjects.Queue

ObjQueueQuery =

New IDMObjects.QueueQuerySpecification

'imposto la classe

ObjQueue = Objlibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue,

"ANAGRAFICA/DATI")

ObjQueueQuery = ObjQueue.CreateQuerySpecification()


End Sub


C#


public

FrmInserisciCode(IDMObjects.Library objlibreria)

{



InitializeComponent();


ObjQueue =

new IDMObjects.Queue ();

ObjQueueQuery =

new IDMObjects.QueueQuerySpecification();

//imposto la classe

ObjQueue = (IDMObjects.Queue) objlibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue,

"ANAGRAFICA/DATI", null, null, null );

ObjQueueQuery = ObjQueue.CreateQuerySpecification();


}


Funzione verifica dati


La funzione verifica dati ha il compito di accertarsi che il valore che si sta inserendo e più precisamente il cognome, non è già stato inserito. Tramite le classi QueueQuerySpecification e QueueEntry si verifica tale esistenza, la prima classe esegue una ricerca, mentre la seconda permette l'inserimento (tramite il metodo insert) dei dati. Se viene generato un errore, in particolare con il codice -2147208689 vuol dire che non esiste un dato relativo al valore di ricerca.


Di seguito si riporta il frammento di codice, utilizzato nella funzione di verifica dati.


Vb.Net



'funzione per la verifica dei dati

Private Sub VerificaDati()

Try

'oggetto

'flag per l'accesso al sistema di filenet

ObjQueueQuery.CheckUser =

False

'Indica i valori delle code

ObjQueueQuery.EvenIfDelayed =

False

'permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.

ObjQueueQuery.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteOK


ObjQueueQuery.MinPriority = 0


'restituisce tutti gli entry anche se sono loccati ossia bloccati

ObjQueueQuery.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK


'filtro i dati

ObjQueueQuery.Filters(

"Cognome").Value = Trim(txtCognome.Text)

'oggetto risultato della query

Dim objQueueEntry As New IDMObjects.QueueEntry()

'Eseguo la ricerca

objQueueEntry = ObjQueueQuery.Browse()


Catch ex As Exception

Dim ObjErrorManager As New IDMError.ErrorManager

Dim ObjErrori As IDMError.Errors

Dim StrTestoErrore As String = ""

Dim objErrore As IDMError.Error

'verifico il tipo di errore

If objErrore.Number = -2147208689 Then

'funzione di inserimento

InserisciCoda()


Else

'il dato esiste

If MessageBox.Show("Il dato esiste, si vuole inserire?", "Nuova Coda", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then

'inserisco il dato

InserisciCoda()


End If

End If


If ObjErrorManager.Errors.Count > 0 Then

ObjErrori = ObjErrorManager.Errors


'ciclo per tutti gli errori

For Each objErrore In ObjErrori

StrTestoErrore = objErrore.Description


Next

Else

StrTestoErrore = ex.Message


End If

MsgBox(StrTestoErrore)


End Try

End Sub

C#


//funzione per la verifica dei dati

private void VerificaDati()

{



try

{




//flag per l'accesso al sistema di filenet

ObjQueueQuery.CheckUser =

false;

//Indica i valori delle code

ObjQueueQuery.EvenIfDelayed =

false ;

//permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.

ObjQueueQuery.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteNotOK ;


ObjQueueQuery.MinPriority = 0;


//restituisce tutti gli entry anche se sono loccati ossia bloccati

ObjQueueQuery.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK ;


//filtro i dati

ObjQueueQuery.Filters[

"Cognome"].Value = txtCognome.Text.Trim();

//oggetto risultato della query

IDMObjects.QueueEntry objQueueEntry =

new IDMObjects.QueueEntry();

//Eseguo la ricerca

objQueueEntry = (IDMObjects.QueueEntry) ObjQueueQuery.Browse();



}


catch (Exception ex)

{




IDMError.ErrorManager ObjErrorManager =

new IDMError.ErrorManager();

IDMError.Errors ObjErrori;


string StrTestoErrore = "";

IDMError.Error ObjErrore;


//verifico che in filenet ci siano errori

if (ObjErrorManager.Errors.Count > 0)

{



ObjErrori = ObjErrorManager.Errors;


//ciclo per tutti gli errori

foreach (IDMError.Error objErrore in ObjErrori)

{



if (objErrore.Number == -2147208689)

{



//funzione di inserimento

InserisciCoda();


}





else

{



if (MessageBox.Show("Il dato esiste, si vuole inserire?", "Nuova Coda", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) == DialogResult.Yes)

{



//inserisco il dato

InserisciCoda();







}


}


}


}


else

{



StrTestoErrore = ex.Message;


}



MessageBox.Show(StrTestoErrore, "FileNet");



}




Funzione per l' inserimento dati


La funzione per l'inserimento dei dati ha il compito di inserire i valori digitati nelle caselle di testo tramite il metodo insert, dell'oggetto queueentry si effettua l'inserimento, questo metodo va eseguito dopo aver impostato alcune proprietà, le più importanti sono quelle relative ai campi (nome e cognome) che devono essere inclusi tra parentesi (tonde per vb.net e quadre per c#) nella proprietà denominata properties sempre di tale proprietà, impostare a false, il valore del campo F_busy, il quale permette di bloccare la queue. Di seguito si riporta un esempio di codice delle suddette operazioni.


Vb.Net


'Funzione di inserimento code


Private Sub InserisciCoda()

Try

'oggetto per l'inserimento

Dim ObjQueueEntry As New IDMObjects.QueueEntry

ObjQueueEntry = ObjQueue.CreateEmptyEntry()


'imposto i valori per i vari campi

ObjQueueEntry(

"Nome").Value = txtNome.Text

ObjQueueEntry(

"Cognome").Value = txtCognome.Text

'look per il record

ObjQueueEntry(

"F_Busy").Value = False

'inserisco

ObjQueueEntry.Insert()


MessageBox.Show(

"Inserimento effettuato con successo", "Inserimento code", MessageBoxButtons.OK, MessageBoxIcon.Information)


Catch ex As Exception

Dim ObjErrorManager As New IDMError.ErrorManager

Dim ObjErrori As IDMError.Errors

Dim StrTestoErrore As String = ""

Dim objErrore As IDMError.Error

If ObjErrorManager.Errors.Count > 0 Then

ObjErrori = ObjErrorManager.Errors


'ciclo per tutti gli errori

For Each objErrore In ObjErrori

StrTestoErrore = objErrore.Description


Next

Else

StrTestoErrore = ex.Message


End If

MsgBox(StrTestoErrore)


End Try

End Sub


C#


private

void InserisciCoda()

{



try

{



//oggetto per l'inserimento

IDMObjects.QueueEntry ObjQueueEntry =

new IDMObjects.QueueEntry();

ObjQueueEntry = (IDMObjects.QueueEntry) ObjQueue.CreateEmptyEntry();


//imposto i valori per i vari campi

ObjQueueEntry.Properties[

"Nome"].Value = txtNome.Text;

ObjQueueEntry.Properties[

"Cognome"].Value = txtCognome.Text;

//look per il record

ObjQueueEntry.Properties[

"F_Busy"].Value = false;

//inserisco

ObjQueueEntry.Insert();


MessageBox.Show("Inserimento effettuato con successo", "Inserimento code", MessageBoxButtons.OK, MessageBoxIcon.Information);



}


catch (Exception ex)

{



IDMError.ErrorManager ObjErrorManager =

new IDMError.ErrorManager();

IDMError.Errors ObjErrori;


string StrTestoErrore = "";

IDMError.Error ObjErrore;


//verifico che in filenet ci siano errori

if (ObjErrorManager.Errors.Count > 0)

{



ObjErrori = ObjErrorManager.Errors;


//ciclo per tutti gli errori

foreach (IDMError.Error objErrore in ObjErrori)

{



StrTestoErrore = objErrore.Description;


}


}


else

{



StrTestoErrore = ex.Message;


}



MessageBox.Show(StrTestoErrore, "FileNet");

}



}


Conclusioni:


In questo articolo si è visto come inserire nuovi valori per le queue, informazioni importanti relativi ai documenti, gli oggetti utilizzati (queue, QueueQuerySpecification e QueueEntry) sono gli oggetti da utilizzare per la gestione delle queue. Tramite la parola download è possibile scaricare il progetto di esempio utilizzato nell'articolo


Download esempio


Siti web di riferimento:


http://www.filenet.com/Italiano/index.asp Italia


http://www.filenetinfo.com/mk/get/feis_ita_reg Per richiedere gratuitamente il cd "FileNet is Essential"


http://www.filenet.com/ (Inglese)


giovedì 1 novembre 2007

Segnalazione Tools: Editor Code Snippet per Visual Studio 2005

Segnalazione Tools: Editor Code Snippet per Visual Studio 2005
Da questo sito http://www.codeplex.com/CodeSnippetEditor potete scaricare i sorgenti del progetto riguardante l'editor per la creazione e gestione dei CodeSnippet di Visual Studio 2005.
Un ottimo strumento per gestire i frammenti di codice.

domenica 30 settembre 2007

Visualizzare le finestre del pannello di controllo di Windows

Articolo: Visualizzare le finestre delle proprietà di Windows
Introduzione:
In questo articolo, vedremo come visualizzare alcune finestre di Windows che si avviano dal panello di controllo, in particolare, la finestra per visualizzare le proprietà del video, quella per aggiungere un rete, quella per il pannello di controllo, quella per le impostazioni del suono e quella per la data ed ora.
Si crea un nuovo progetto windows, nel suo interno avremo 5 pulsanti, ogni pulsante avrà il compito di visualizzare una determinata funzionalità del pannello di controllo. Tramite il metodo Start della classe Process, verrà avviato il file rundll32 con il relativo argomento.

Per avviare il pannello di controllo:
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL")
C#
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL");
Proprietà del desktop
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL desk.cpl")
C#
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL desk.cpl");
Aggiungere una rete
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "netplwiz.dll,AddNetPlaceRunDll")
C#
System.Diagnostics.Process.Start("rundll32.exe", "netplwiz.dll,AddNetPlaceRunDll");
Finestra Data/ORa
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL timedate.cpl")
C#
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL timedate.cpl");
Finestra dei suoni/multimedia
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL mmsys.cpl")
C#
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL mmsys.cpl");

importare i dati da access in outlook

Vi segnalo questo mio articolo http://blog.shareoffice.it/emanuele/archive/2007/09/29/9217.aspx riguardante la programmazione vba, in particolare come importare i dati da access in outlook.
Buona lettura.
Emanuele.

domenica 16 settembre 2007

Filenet Visualizzare le queue (code) tramite .Net (VB.Net e C#)

Filenet: Visualizzare le queue (code) di Filenet tramite la tecnologia .Net (Vb.Net e C#)



Figura 1


Introduzione:


In questo articolo, vediamo come visualizzare i valori delle queue (code) tramite la tecnologia .Net (Vb.Net e C#), in particolare alcuni campi (denominati nome e cognome) creati in precedenza. Si crea una nuova form, nella quale si aggiunge tre label (per i vari titoli) due controlli listbox ed un pulsante, la finestra dovrà avere un aspetto simile alla figura 1.


Per la gestione delle code, utilizzeremo le classi library, per la gestione delle librerie, queue per la gestione delle code, QueueQuerySpecification per effettuare le operazioni di ricerca ed infine la classe QueueBrowseSet che restituisce il risultato della ricerca.


Gli oggetti dichiarati a livello di form.


Utilizzeremo un solo oggetto, di tipo library a livello di form, il resto degli oggetti (istanze delle classi precedentemente descritte) saranno inseriti nei rispettivi eventi.


Si crea un oggetto di tipo library nella form, subito dopo la dichiarazione della form, come riportato qui di seguito.


Vb.Net


'oggetto libreria


Dim objLibrary As New IDMObjects.Library



C#


//oggetto libreria


IDMObjects.Library ObjLibrary = new IDMObjects.Library();


A questo punto, modifichiamo il costruttore della nostra form, in modo che possiamo utilizzare l'oggetto library, utilizzato nella form precedente in cui si è effettuato il login, di seguito si riporta un frammento di codice di esempio.


VB.Net


Sub New(ByVal libreria As IDMObjects.Library)


InitializeComponent()


objLibrary = libreria


End Sub



C#


public FrmVisualizzaCode(IDMObjects.Library objlibreria)


{


InitializeComponent();


ObjLibrary = objlibreria;


}



Ricerca e visualizzazione delle code


Di seguito si riporta un frammento di codice da utilizzare nell'evento load della form, per la visualizzazione delle queue. Il metodo Browse dell'oggetto QueueQuerySpecification restituisce un insieme di queuebrowsset, ossia il risultato della ricerca effettuata. In effetti con l'oggetto QueueQuerySpecification, impostando alcune proprietà, possiamo eseguire determinate ricerche, mentre con l'oggetto QueueBrowseSet possiamo gestire le varie informazioni ottenute dalla ricerca, scorrere tra i vari dati, rilevare determinati valori, ed altro ancora sulle queue. Se il metodo Browse non trova nulla, restituisce un errore, ossia –2147208689 in questo caso bisogna gestire tale eccezione, altrimenti se qualora il metodo browse restituisce dei valori, possiamo fare un ciclo, per rilevare tali dati, come riportato nel frammento di codice di esempio.


Vb.Net


Try



'oggetto coda


Dim objQueue As New IDMObjects.Queue


objQueue = objLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue, "ANAGRAFICA/DATI")


'oggetto per la ricerca delle code


Dim ObjQueueQuerySpecification As New IDMObjects.QueueQuerySpecification()


ObjQueueQuerySpecification = objQueue.CreateQuerySpecification()


''oggetto per la restituzione dei valori


Dim ObjQueueBrowseSet As New IDMObjects.QueueBrowseSet()


'flag per l'accesso al sistema di filenet


ObjQueueQuerySpecification.CheckUser = False


'Indica i valori delle code


ObjQueueQuerySpecification.EvenIfDelayed = False


'permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.


ObjQueueQuerySpecification.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteOK


ObjQueueQuerySpecification.MinPriority = 0


'restituisce tutti gli entry anche se sono loccati ossia bloccati


ObjQueueQuerySpecification.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK


'imposto l'oggetto per la ricerca


ObjQueueBrowseSet = ObjQueueQuerySpecification.Browse()


'ciclo per i valori


For intConta As Integer = 1 To ObjQueueBrowseSet.RecordCount



lstbNome.Items.Add(ObjQueueBrowseSet.Entry.Properties("Nome").Value)


lstCognome.Items.Add(ObjQueueBrowseSet.Entry.Properties("Cognome").Value)


'verifico la fine


If ObjQueueBrowseSet.MoreResults = True Then



ObjQueueBrowseSet.MoveNext()


End If


Next



Catch ex As Exception



Dim ObjErrorManager As New IDMError.ErrorManager


Dim ObjErrori As IDMError.Errors


Dim StrTestoErrore As String = ""


Dim objErrore As IDMError.Error



If ObjErrorManager.Errors.Count > 0 Then



ObjErrori = ObjErrorManager.Errors


'ciclo per tutti gli errori


For Each objErrore In ObjErrori



If objErrore.Number = -2147208689 Then


StrTestoErrore = "Non ci sono code"


Else


StrTestoErrore = objErrore.Description


End If


Next


Else



StrTestoErrore = ex.Message


End If


MsgBox(StrTestoErrore)


End Try


C#


try



{



//oggetto coda


IDMObjects.Queue objQueue = new IDMObjects.Queue ();


objQueue = (IDMObjects.Queue) ObjLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue, "ANAGRAFICA/DATI",null,null,null);


//oggetto per la ricerca delle code


IDMObjects.QueueQuerySpecification ObjQueueQuerySpecification = new IDMObjects.QueueQuerySpecification();


ObjQueueQuerySpecification = objQueue.CreateQuerySpecification();


//oggetto per la restituzione dei valori


IDMObjects.QueueBrowseSet ObjQueueBrowseSet = new IDMObjects.QueueBrowseSet();


//flag per l'accesso al sistema di filenet


ObjQueueQuerySpecification.CheckUser = false;


//Indica i valori delle code


ObjQueueQuerySpecification.EvenIfDelayed =false ;


//permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.


ObjQueueQuerySpecification.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteOK ;


ObjQueueQuerySpecification.MinPriority = 0;


//restituisce tutti gli entry anche se sono loccati ossia bloccati


ObjQueueQuerySpecification.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK;


//imposto l'oggetto per la ricerca


ObjQueueBrowseSet = ObjQueueQuerySpecification.Browse();


//ciclo per i valori


for (int intconta = 1; intconta <= ObjQueueBrowseSet.RecordCount; intconta++ )


{



lstbNome.Items.Add(ObjQueueBrowseSet.Entry.Properties["Nome"].Value );


lstCognome.Items.Add(ObjQueueBrowseSet.Entry.Properties["Cognome"].Value);


//verifico la fine


if (ObjQueueBrowseSet.MoreResults == true)


{



ObjQueueBrowseSet.MoveNext();


}


}





}


catch (Exception ex)


{



IDMError.ErrorManager ObjErrorManager = new IDMError.ErrorManager();


IDMError.Errors ObjErrori;


string StrTestoErrore = "";


IDMError.Error ObjErrore;


//verifico che in filenet ci siano errori


if (ObjErrorManager.Errors.Count > 0)


{



ObjErrori = ObjErrorManager.Errors;


//ciclo per tutti gli errori


foreach (IDMError.Error objErrore in ObjErrori)


{



if (objErrore.Number = -2147208689)


{



StrTestoErrore ="Non ci sono code");


}


else


{



StrTestoErrore = objErrore.Description;


}



}


}


else


{



StrTestoErrore = ex.Message;


}


MessageBox.Show(StrTestoErrore, "FileNet");


}



Conclusioni:


In questo articolo, si è visto come visualizzare in un controllo listbox i valori delle queue, informazioni importanti relativi ai documenti, gli oggetti utilizzati (queue, QueueQuerySpecification e QueueBrowseSet) sono gli oggetti da utilizzare per la gestione delle queue. Tramite la parola download è possibile scaricare il progetto di esempio utilizzato nell'articolo.


Download esempio


Siti web di riferimento:


http://www.filenet.com/Italiano/index.asp Italia


http://www.filenetinfo.com/mk/get/feis_ita_reg Per richiedere gratuitamente il cd "FileNet is Essential"


http://www.filenet.com/ (Inglese)

venerdì 14 settembre 2007

Asp Inviare un email tramite CDO

Questo frammento di codice, permette di inviare in una pagina Asp tradizionale (VBscript) un email, tramite le funzionalità di CDO (dll del sistema Windows). Si fa presente che la dichiarazione e valorizzazione di alcune variabili è stata omessa (ma è facilmente deducibile).





'oggetto per l'invio dell'email



Dim CDOMsg



'oggetto per la configurazione



Dim CDOConf



'oggetto per i campi di configurazione



Dim Flds



'testo html da invniare via email



Dim strHTML



'parametro di sendusing



Const cdoSendUsingPort = 2



set CDOMsg = CreateObject("CDO.Message")



set CDOConf = CreateObject("CDO.Configuration")



Set Flds = CDOConf.Fields



'imposto i parametri del web server (sistemare per la lettura del registro di windows



With Flds



.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort



' parametri mail server.



.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Mail_Server



.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25



'autenticazione



.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1



.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = User_Email



.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = PSW_Email



.Update



End With



'imposto il percorso del file



PathFile = Server.MapPath(".") & "\CartellaFile\MioFile.doc"



' Imposto il testo



strHTML = "<HTML>"



strHTML = strHTML & "<HEAD>"



strHTML = strHTML & "<BODY>"



strHTML = strHTML & "<b> testo </b></br>"



strHTML = strHTML & "</BODY>"



strHTML = strHTML & "</HTML>"



' Invio



With CDOMsg



Set .Configuration = CDOConf



'destinatario.



.To = EmailDestinatari



'Mittente



.From = EmailMittente



'oggetto



.Subject = "oggetto"



'testo html



.HTMLBody = strHTML



'allego il file appena generato



.AddAttachment PathFile



.Send



End With



'cancello le variabili



Set CDOMsg = Nothing



Set CDOConf = Nothing



Set Flds = Nothing


giovedì 13 settembre 2007

javascript regular expression per validare l'indirizzo email

Il frammento di codice riportato qui di seguito, verifica che l'indirizzo email digitato in una casella di testo sia corretto.
var email = document.forms[0].emailField.value;
if (!email.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/)){
return false;
}

mercoledì 12 settembre 2007

Motore di ricerca

Oggi vi segnalo questo http://search.domainspa.com/ simpatico motore di ricerca, per fare delle ricerche sul web.
Buona ricerca.

lunedì 10 settembre 2007

segnalazione sito: pinvoke - frammenti di codice delle API


Da questo sito http://www.pinvoke.net/index.aspx si trova un ottima risorsa per la programmazione .Net, tramite l'utilizzo di API. I vari frammenti di codice di API, sono sia per l'ambiente Windows e sia per l'ambiente Mobile. Inoltre è possibile scaricare gratuitamente un plug-in per Visual Studio Net (2003 o 2005).


Che dirvi..... buona programmazione :-))).



mercoledì 5 settembre 2007

C# effettuare il beep del sistema operativo


Trucco C#: Simulare il beep del sistema operativo


Se vogliamo simulare il suono beep, del computer, dobbiamo utilizzare delle Api.


Inserire lo spazio dei nomi interopservices per gestire l'interoperabilità


using System.Runtime.InteropServices;



Dichiare nella classe form, la seguente dichiarazione di api:


[DllImport("Kernel32.dll")]


public static extern bool Beep(UInt32 frequency, UInt32 duration);


Per eseguire il suono utilizzare la funzione beep, come riportata qui di seguito:


Beep(1000, 300);


martedì 4 settembre 2007

Tools gratuito per Linq

Dal seguente blog http://blogs.msdn.com/socaldevgal/archive/2007/09/04/download-linqpad-a-free-linq-query-expression-tool.aspx ho trovato interessato questo tools http://www.albahari.com/linqpad.html per il linguaggio Linq.
Mi sembra un ottimo strumento per la gestione e creazione delle query expression in Linq, una nuova funzionalità del Framework 3.0.
Per download ed informazioni visitate il seguente sito http://www.albahari.com/linqpad.html

lunedì 3 settembre 2007

impostare un numero massimo di carattere in un controllo html textarea (maxlength)

Il controllo html TextArea non ha una proprietà maxlength come il controllo text, per tanto per limitare l'inserimento dei caratteri in tale controllo, dobbiamo utilizzare uno script.
Nell'evento keypress, del controllo TextArea, utilizziamo una funzione che permette limitare l'inserimento dei caratteri.
< name="note" onkeypress="return MaxCaratteri(this, 499);" style="width:100%">
mentre la funzione javascript, sarà la seguente.

martedì 31 luglio 2007

FT buone vacanze

L'ultimo fuori tema del mese, riguarda i saluti.
E' già, ci siamo, qualche altro giorno, qualche giorno di lavoro e qualche attività privata da finire e poi via, al mare (con le chiappe chiare :-)))) ) .
Non vedo l'ora di staccare la spina, il primo giro di boa, come si vuol dire è arrivato, è stato faticoso (con qualche problema) ora mi riposerò e poi via in volata per la fine dell'anno, sperando di raccogliere i frutti sperati.
Ritornerò a settembre, con nuovi articoli, trucchi e news, e con qualche novità :-))), inoltre spero di portare avanti una cosina (che poi avrete il piacere di scoprire) che ho dovuto sospendere.
Ora vado, auguro a tutti i miei lettori, navigatori, buone vacanze, e che sia una vacanza serena, gioiosa e piena di amore (visto che in estate ... fioriscono nuovi amori ) :-)))
A settembre... buone vacanze ;-))))

segnalazione blog (Dario Airoldi) riguardante la programmazione Micro Framework

Vi segnalo questo interessante blog http://blogs.msdn.com/darioait/ (versione italiana) http://blogs.msdn.com/darioa/ (versione inglese) riguardante la programmazione Micro Framework.
Il blog scritto da Dario Airoldi, esperto nello sviluppo software riguardante la tecnologia Micro Framework, in questo blog potete trovare ottimi spunti riguardante la programmazione del Micro framework, il nuovo framework per la programmazione industriale. Il materiale messo a disposizione degli utenti è davvero valido.
Io me lo annoto e voi? ;-))))

domenica 29 luglio 2007

Evento gratuito sulla programmazione .Net

Con grande piacere ho il piacere di segnalarvi un nuovo evento gratuito http://www.sbsoft.it/eventi/sb2dev2007/default.aspx dedicato al mondo della programmazione .Net.
Shareoffice in collaborazione con il suo "fratello" sito freeaspx e sbsoft organizzano per il 22 settembre 2007 un evento completamente gratuito, riguardante lo sviluppo di applicazion web (Asp.Net Ajax) , WPF Blend2, programmazione Office (VSTO SE - Outlook ) Sharepoint, programmazione Mobile e graphic Design
L'agenda ancora in fase di aggiornamento è consultabile al seguente sito http://www.sbsoft.it/eventi/sb2dev2007/agenda.aspx l'evento durerà tutto il giorno dalle 9 alle 18.
Per partecipare a tale evento, occorre registrarsi al seguente sito http://www.sbsoft.it/eventi/sb2dev2007/registrazione.aspx mentre per coloro che vogliono sapere come arrivare all'evento, possono visitare il seguente sito http://www.sbsoft.it/eventi/sb2dev2007/come_arrivare.aspx .
Un occassione interessante per acquisire, condividere confontarsi sulla nuova tecnologia .Net, inoltre durante lo svolgimento dell'evento ci saranno delle simpatiche soprese.
Insomma un occassione da non perdere, per coloro che utilizzano (per lavoro e passione) o sono interessanti a questa tecnologia.
Per maggiori informazioni ed iscrizione visitate il sito http://www.sbsoft.it/eventi/sb2dev2007/default.aspx
Che dirvi..... buona formazione :-)))))))))))

venerdì 27 luglio 2007

Download Visual Studio 2008 beta 2

E già, finalmente è uscita la versione beta 2 (pre realese) di Visual Studio 2008. In particolare da questa sito http://www.microsoft.com/downloads/details.aspx?FamilyId=B98A61BA-99B0-40B7-AB6E-5386A2B94217&displaylang=en potete scaricare la versione Microsoft Pre-release Software Visual Studio 2008 Beta 2 Professional Edition. Le altre versione di Visual Studio 2008 beta 2 (standard, express, ecc) potete trovarle qui http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx.
Mentre da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=3b72271c-e996-4989-898d-72d684966ce6&DisplayLang=en potete scaricare Microsoft Pre-release Software Visual Studio Team System 2008 Beta 2 Team Suite (Virtual PC) versione per Virtual Pc.
Qualche mese di prova e poi il rilascio finale (data stimata gennaio - febbraio 2008)
Che dirvi... buona programmazione. :-))))))))))))))

giovedì 26 luglio 2007

formazione gratuita


Oggi vi segnalo questo interessante sito http://www.xformare.it/wps/portal/spf riguardante la formazione. Il sito offre la possibilità di partecpare gratuitamente ad un corso di formazione. Una volta selezionata l'area tematica di proprio interesse è possibile selezionare il corso che si intende svolgere. Per l'area informatica http://www.xformare.it/wps/portal/spf/kcxml/04_Sj9SPykssy0xPLMnMz0vM0Y_QjzKLd4z3NQDJmMW7xjt76UciizjGO3vARXw98nNT9YOAMpHmQJHAEP2onNT0xORK_WB9b_0A_YLc0Ihyb0dHAOgSq1M!/delta/base64xml/L0lJSk03dWlDU1EhIS9JRGpBQU15QUJFUkVSRUlnLzRGR2dkWW5LSjBGUm9YZmcvN19BX1FU?WCM_PORTLET=PC_7_A_QT_WCM&WCM_GLOBAL_CONTEXT=/wps/wcm/connect/Progetto+SPF/Home/CATALOGO+CORSI/Aree+Tematiche/9.+Informatica+di+base%2C+avanzata%2C+applicata/ si hanno diversi corsi sul programma Microsoft Office, internet e tanto altro.
Che dirvi.... buona formazione :-)))

sabato 21 luglio 2007

download free ebook

Segnalazione sito: Download libri gratuiti
Da questo sito http://www.apress.com/free/ potete scaricare dei libri, in formato pdf, di seguito riporto i titoli di tali manuali.
A Programmer's Introduction to PHP 4.0
Writing Perl Modules for CPAN
Programming VB .NET: A Guide For Experienced Programmers
COM and .NET Interoperability
XML Programming: Web Applications and Web Services With JSP and ASP
Google, Amazon, and Beyond: Creating and Consuming Web Services
Practical Common Lisp
Dissecting a C# Application: Inside SharpDevelop
Che dirvi.... buona lettura.

lunedì 16 luglio 2007

Inviare file di grandi dimensioni

Oggi segnalo un nuovo servizio gratuito, in particolare da questo sito http://www.transferbigfiles.com/ potete inviare file di grandi dimensioni.
Dopo aver indicato il file da caricare ed un indirizzo email, nel quale verrà inviata un email, con un link dove si potrà scaricare il file.
Un servizio gratuito che può tornare utile per inviare file di grandi dimensioni.
Per informazioni ed utilizzo, visitate il seguente sito http://www.transferbigfiles.com/

domenica 8 luglio 2007

Compilatore gratuito per .Net

Segnalazione tools: Un compilatore leggere per .net
Vi segnalo questo simpatico compilatore http://www.sliver.com/dotnet/SnippetCompiler/ il quale permette la compilazione di piccoli frammenti di codice della tecnologia .Net
Molto utile per testare piccoli frammenti di codice, facilmente utilizzabili, vi ricordo che sempre su tale sito http://www.sliver.com/dotnet/index.aspx si trovano altri tools ed esempi.
Che dirvi... buona compilazione

giovedì 5 luglio 2007

Editor gratuito per le pagine web ed altri linguaggi


Oggi vi segnalo un programma gratuito. In particolare da questo sito http://www.activestate.com/Products/komodo_edit/ potete scaricare Komodo edit, un software completamente gratuito, che permette tramite una comodo interfaccia di scrivere righe di codice (javascript, c++, php, perl, css, hmtl ecc) con semplice comodità. Inoltre il programma dispone di valide funzionalità come la verifica del codice o l'autocompletamento del codice.


Per maggiori informazioni visitate il seguente sito http://www.activestate.com/Products/komodo_edit/ mentre per il download il seguente sito http://www.activestate.com/store/productdetail.aspx?prdGuid=20f4ed15-6684-4118-a78b-d37ff4058c5f


Che dirvi... buona stesura di codice :-)))


editor gratuito di testo

Segnalazione tools: Editor di testo gratuito
Vi segnalo questo sito http://www.flos-freeware.ch/notepad2.html in cui è possibile scaricare un programma per la stesura di file di testo. In particolare, tale programma è simile a notepad, ma con funzionalità avanzate.
Per la versione italiana visitate il seguente sito http://www.flos-freeware.ch/np2intl.html
Che dirvi... buon download.

lunedì 2 luglio 2007

Stampare in formato pdf tramite .Net

Segnalazione tools: Stampare in formato pdf tramite la tecnologia .Net
Vi segnalo questo tools http://www.ujihara.jp/iTextdotNET/en/ il quale permette di stampare in formato pdf tramite applicazione .net, tale componente è gratuito.

Editor controlo gratuito per pagine web o CMS

Oggi vi segnalo questo controllo completamente gratuito, permette tramite un amichevole interfaccia, di inserire nelle proprie pagine web o nei propri cms, un editor di testo.
Il controllo funziona con i vari browser in circolazione e si può utilizzare sia per linguaggi come php, che .Net e jsp.
Per maggiori informazioni e download visitate il seguente sito
http://tinymce.moxiecode.com/index.php

domenica 1 luglio 2007

CF rilevare la lingua del dispositivo tramite VB.Net e C#


Trucco: Compact Framework rilevare la lingua del dispositivo tramite Visual Basic Net e C# in ambiente windows mobile.


Tramite la proprietà TwoLetterISOLanguageName della classe currentCulture possiamo rilevare le iniziali (le prime due lettere) della lingua utilizzata nel dispositivo mobile.


Inseriamo lo spazio dei nomi Globalizzation come riportato qui di seguito:


VB.Net


Imports System.Globalization


C#


using System.Globalization;



Mentre per rilevare la lingua utilizziamo la proprietà TwoLetterISOLanguageName come riportato qui di seguito:


VB.Net


MessageBox.Show(CultureInfo.CurrentCulture.TwoLetterISOLanguageName)


C#


MessageBox.Show (CultureInfo.CurrentCulture.TwoLetterISOLanguageName) ;

Code snippets gratuiti

Segnalazione tools: Code snipptets a portato di mouse.
Vi segnalo questo sito http://gotcodesnippets.com/default.aspx in cui si trovano diversi frammenti di codici, un sito che viene costantemente aggiornato, suddiviso per linguaggio (vb.net, c#, xml, J#), inoltre si può contribuire inserendo dei propri code snippet.
Davvero interessante

Convertire codice da C++ a .Net

Segnalazione sito: Convertire da C++ a .Net
Vi segnalo questo sito http://www.code2code.net/Default.aspx in cui è possibile convertire del codice c++ in C# o in Vb.net o in un xml model.
Che dirvi... buona conversione :-)))

Supporta il blog ed offresi collaborazioni


FT: Supporta il blog ed offresi collaborazioni.


Il fuori tema di questo mese, riguarda il mio blog. Che vuol dire supporta il blog ed offresi collaborazioni? chi segue il mio blog o i miei blog :-))), avrà notato un lavoro costante e di buona qualità, tramite pubblicazione di articoli, trucchi, notizie. Il lavoro che c'è dietro non è semplice, il tempo dedicato alla stesura del post, ed altro ancora. Per questo se qualcuno è interessato ad offrirmi una pizza, un caffè ecc :-) mi farà molto piacere e contribuirà nel mantenere e a far crescere tale blog con un maggiore entusiasmo.


Supporta il blog, un modo per offrire all'autore del blog un valido apporto, una piccola donazione (contributo) in modo che possa offrire sempre di più la massima qualità dei contenuti, tramite i numerosi e costanti post.


Collaborazione: Inoltre offro la mia consulenza per le aziende, negozi, privati, enti pubblici e scuole, che intendono avvalersi di una figura professionale che possa migliorare e/o ottimizzare i processi lavorativi, nel settore informatico. La mia consulenza si applica ai seguenti campi:


sviluppo software (Windows application) creazione di programmi gestionali, contabili, buste paga, applicazioni aziendali ecc


Siti web (Asp.net) Creazione di portali, intranet, ecc.


Applicazioni industriali (Mobile, Micro Framework ecc) Programmi per la gestione dei sistemi mobile, apparecchiature industriali ecc.


Applicazioni per office: Miglioramento ed ottimizzazione applicazione che si basano sul prodotto Microsoft Office 2003 e Microsoft Office 2007


Docenza: Su prodotti Microsoft e Filenet.


Analisi: Crescita del business, gestione ed ottimizzazione delle risorse, verifica e test del software.


Servizi: Risorse umane, individuazione potenziali clienti (servizio offerto solo ai clienti GOLD), sicurezza e supporto.


Hai trovato interessante il mio blog? qualche trucco o articolo ti ha aiutato nel trovare la soluzione? supporta il blog, offrimi un caffè, o una pizza, effettua una donazione, in questo modo contribuirai alla continua pubblicazioni dei vari post ed alla crescita del blog. Ti ringrazio :-)))))


Non solo in moneta, ma anche in natura, tramite libri, materiale informatico ed altro ancora.


Scrivimi un email sia per una donazione e sia per una collaborazione.


emanuelemattei@aruba.it

lunedì 25 giugno 2007

Motore di ricerca per trovare frammenti di codice

Segnalazione siti: Motori di ricerca per codice.
Di seguito si riporta qualche sito, per poter effettuare delle ricerche per trovare determinati frammenti di codice di programmazione.
http://google.com/codesearch
http://search.serialcoder.net/default.aspx?hl=en
http://www.koders.com/

domenica 24 giugno 2007

Compact Framework impostare o rilevare il volume del dispositivo mobile, tramite visual basic net e C# in ambiente windows mobile

Articolo: Compact Framework impostare o rilevare il volume del dispositivo
mobile, tramite visual basic net e C# in ambiente windows mobile.


In questo articolo, vedremo come rilevare ed impostare il volume, in un
dispositivo mobile, in particolare per i pocketpc windows mobile 2003se,
utilizzando il linguaggio di programmazione Viaual Basic Net e C#.


Per impostare il volume, dobbiamo utilizzare l'api waveOutSetVolume
mentre per ottenere il volume occorre utilizzare la funzione api
waveOutGetVolume
della dll coredll.


Inserire lo spazio dei nomi


Inseriamo in un nuovo progetto per dispositivi mobile (pocketpc) lo spazio di
nomi per la gestione delle api di windows mobile, ossia il namespace InteropServices , di seguito si riporta
tale codice.


VB.Net



Imports System.Runtime.InteropServices



C#



using System.Runtime.InteropServices;



Creazione di un enumerazione e dichiarazione di api


Possiamo impostare il volume, in diverse modalità, alto, basso, molto alto,
ecc. a tal proposito dobbiamo crearci un enumerazione, o meglio una serie di
valori che indicano la tonalità del volume. Tale enumerazione va inserita a
livello di classe.


Di seguito si riporta il frammento di codice per le suddette operazioni:


VB.Net



'enumerazione per il volume



Public
Enum Volumes
As
Integer




OFF = 0


LOW = 858993459


NORMAL = 1717986918


MEDIUM = -1717986919


HIGH = -858993460


VERY_HIGH = -1



End
Enum




C#



//enumerazione per il volume



public
enum
Volumes :
int



{



OFF = 0,


LOW = 858993459,


NORMAL = 1717986918,


MEDIUM = -1717986919,


HIGH = -858993460,


VERY_HIGH = -1




}



Dopo aver creato i valori per la tonalità del volume, non ci resta che
inserire la dichiarazione delle api, in particolare per la funzione
waveOutSetVolume e waveOutGetVolume , tale codice va inserito a livello di
classe. Di seguito si riporta il frammento di codice delle suddette operazioni.


VB.Net



'definizione di api



Declare
Function waveOutSetVolume
Lib
"CoreDll.dll" (ByVal
device
As IntPtr,
ByVal volume
As
Integer)
As
Integer



Declare
Function waveOutGetVolume
Lib
"CoreDll.dll" (ByVal
device
As IntPtr,
ByRef volume
As
Integer)
As
Integer



C#



//definizione di api



[DllImport("coredll.dll",
SetLastError =
true)]


internal
static
extern
int waveOutSetVolume(IntPtr
device,
int volume);


[DllImport("coredll.dll",
SetLastError =
true)]


internal
static
extern
int waveOutGetVolume(IntPtr
device,
ref
int volume);



Impostare o rilevare il volume


Terminata la fase per il richiamo delle funzioni di sistema di windows
mobile, non ci resta che scrivere il codice per rilevare (tramite l'api
waveOutGetVolume ) o impostare (tramite l'api waveOutSetVolume ) il
volume del nostro dispositivo.


Nell'evento click di un pulsante o di una voce di menu, inseriamo il seguente
codice per impostare il volume con tonalità alta.


VB.Net



waveOutSetVolume(IntPtr.Zero, CType(Volumes.HIGH,
Integer))



C#



waveOutSetVolume(IntPtr.Zero,
(
int)Volumes.HIGH
);



Mentre per rilevare la tonalità del volume del nostro dispositivo, dobbiamo
utilizzare l'api waveOutGetVolume il quale accetta due valori, uno il
puntare del dispositivo, mentre il secondo, un valore numerico, indicante la
tonalità del volume.


Nell'evento click di un pulsante o di una voce di menu inseriamo il seguente
codice:


VB.Net



Dim intOttieni As
Integer = 0


waveOutGetVolume(IntPtr.Zero, intOttieni)


Dim StrVolume
As
String =
""



Select
Case intOttieni



Case
CType(Volumes.OFF,
Integer)



StrVolume = "OFF"




Case
CType(Volumes.LOW,
Integer)



StrVolume = "LOW"




Case
CType(Volumes.NORMAL,
Integer)



StrVolume = "NORMAL"




Case
CType(Volumes.MEDIUM,
Integer)



StrVolume = "MEDIUM"




Case
CType(Volumes.HIGH,
Integer)



StrVolume = "HIGH"




Case
CType(Volumes.VERY_HIGH,
Integer)



StrVolume = "VERY_HIGH"




Case
Else




StrVolume = "OFF"





End
Select



MessageBox.Show(StrVolume)



C#



int volume = (int)0;


waveOutGetVolume(IntPtr.Zero,
ref volume);


string sVolume =
"";


switch (volume)


{



case (int)Volumes.OFF:



sVolume = "OFF";


break;



case (int)Volumes.LOW:



sVolume = "LOW";


break;



case (int)Volumes.NORMAL:



sVolume = "NORMAL";


break;



case (int)Volumes.MEDIUM:



sVolume = "MEDIUM";


break;



case (int)Volumes.HIGH:



sVolume = "HIGH";


break;



case (int)Volumes.VERY_HIGH:



sVolume = "VERY_HIGH";


break;



default:



sVolume = "OFF";



break;



}


MessageBox.Show(sVolume);




Conclusione.


In questo articolo si è visto come utilizzando le api di windows mobile, per
impostare o rilevare le impostazioni del dispositivo mobile. Si fa presente che
tale codice si può utilizzare sia in ambiente windows mobile 2003 e sia nella
versione 5.0.