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.