novembre 2003 Blog Posts
La seguente subroutine in VB.NET permette di ricavare le caption di tutte le finestre aperte:
Public Sub GetAllWindowsCaption(ByRef Captions As System.Collections.ArrayList) Dim proc As System.Diagnostics.Process Captions.Clear() For Each proc In Process.GetProcesses() If proc.MainWindowTitle.Length > 0 Then Captions.Add(proc.MainWindowTitle) End If Next proc End Sub
Al ritorno dalla subroutine, la collections Captions contiene la lista delle caption.
La seguente function consente di recuperare l'occupazione di memoria (in bytes) di un processo attivo sulla macchina locale o su di una macchina in rete.I parametri in input sono:MachineName = nome della macchina;Processname = nome del processo.
La funzione restituisce MEMORY_EXCEPTION se la macchina remota non esiste, MEMORY_NOPROCESS se il processo non è attivo oppure lo spazio di memoria occupato dal processo (come intero a 64 bit).
Const MEMORY_EXCEPTION As Int64 = -2 Const MEMORY_NOPROCESS As Int64 = -1
Public Function GetProcessMemory(ByVal MachineName As String, ByVal ProcessName As String) As Int64 Dim oProcess As Process Dim oProcesses As Process() Try If...
La seguente function in VB.NET permette di ricavare, in maniera ricorsiva, l'insieme dei controlli presenti all'interno di una form.L'argomento Form è la form da cui ricavare l'elenco dei controlli ed è di tipo Object per permettere la ricorsione sui controlli all'interno di controlli di tipo Container.
Public Sub GetAllControls(ByVal Form As System.Object, ByRef Controls As System.Collections.ArrayList) Dim ctrl As System.Windows.Forms.Control
For Each ctrl In Form.controls If ctrl.Controls.Count > 0 Then GetAllControls(ctrl, Controls) End If Controls.Add(ctrl) Next
End Sub
La seguente function in VB.NET permette di ricavare, in maniera ricorsiva, l'occupazione su disco (in Kbytes) di una directory.La variabile Path contiene il percorso della directory (senza il carattere terminatore "\").La funzione ritorna lo spazio occupato oppure -1 se si è verificato un erroreIl costrutto try/catch è utilizzato per garantire che la funzione non vada mai in errore.
Public Function GetDirSize(ByVal Path As System.String) As Int64 Try Dim dirdata() As System.IO.DirectoryInfo Dim filedata() As System.IO.FileInfo Dim file As System.IO.FileInfo Dim dimension As Int64 = 0
Dim dir As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(Path) ' Scansione dei file della directory filedata...
In Visual Basic 6.0 esiste l'oggetto App che ci fornisce informazioni riguardo la nostra applicazione.In VB.NET l'oggetto App è sparito ed è comparso il namespace System.Reflection.Assembly.La seguente funzione recupera il percorso dell'applicazione:
Public Function GetPath() as System.String Dim Path as System.String Path = System.Reflection.Assembly.GetExecutingAssembly.Location Path = Path.Substring(0, Path.LastIndexOf("\")) GetPath=PathEnd Function
Il Framework .NET offre la possibilità di memorizzare, all'interno di un assembly, un qualunque tipo di file (cablandolo all'interno dell'EXE o dell DLL).Per fare ciò è necessario:1) importare il file all'interno del progetto utilizzando il menù Project\Add Existing Items;2) selezionare il file all'interno del solution explorer e selezionare il menù contestuale properties;3) modificare la proprietà Build Action in Embedded Resource;4) utilizzare il seguente codice per caricare il contenuto del file all'interno di un array di byte: . . Dim As As System.Reflection.Assembly Dim st As System.IO.Stream Dim bytearray As Byte() As = Reflection.Assembly.GetExecutingAssembly st = As.GetManifestResourceStream("RootNamespace.file.ext") ReDim bytearray(CInt(st.Length) - 1) st.Read(bytearray, 0, CInt(st.Length)) ...
Si può fare in modo che una form non superi una dimensione massima e una dimensione minima prestabilita modificando il costruttore della form inserendon le seguenti istruzioni:
Protected Sub New() . . Me.MaximumSize = New System.Drawing.Size(MaxWidth, MaxHeight) Me.MinimumSize = New System.Drawing.Size(MinWidth, MinHeight) . . End Sub
Quando si devono inserire molti valori all0'interno di una listbox, è possibile fa in modo che il framework .NET aggiorni la stessa list box una sola volta al termine del riempimento.E' sufficiente invocare il metodo BeginUpdate() prima di cominciare il riempimento della list box e il metodo EndUpdate() al termine dello stesso per rendere effettivi i cambiamenti.Un esempio di utilizzo di questa tecnica è riportato nel seguente pezzo di codice:
. . lstDati.BeginUpdate() for i=0 to 100 lstdati.Items.Add(array(i)) next i lstDati.EndUpdate() . .
Per ottenere un simpatico effetto animazione della caption delle nostre applicazioni VB.NET possiamo utilizzare la seguente routine:
Public Sub CaptionThread() Dim strCaption As System.String = "Caption Animata ...." Dim counter As System.Int16 While (True) For counter = 0 To strCaption.Length Me.Text = strCaption.Substring(0, counter) System.Threading.Thread.Sleep(100) Next For counter = 0 To strCaption.Length - 1 Me.Text = strCaption.Substring(counter) System.Threading.Thread.Sleep(100) Next End While End Sub
Questa deve essere eseguita in un apposito thread della nostra form:
Private AnimationCaptionThread As System.Threading.Thread
il quale deve essere avviato nell'evento load:
Private Sub Form1_Load(.....) Handles MyBase.Load . . AnimationCaptionThread = New System.Threading.Thread(AddressOf CaptionThread) AnimationCaptionThread .Start() . . End Sub
ed arrestato nell'evento...
La proprietà Location di un oggetto System.Windows.Forms.Control o di un oggetto System.Windows.Forms.Form restituisce la posizione fisica dell'oggetto stesso rispetto al padre.Per poter ricavare la posizione assoluta rispetto alla form principale oppure allo schermo si può ricorrere alla seguente routine:
Private Function CalculateXPosition(ByVal Frm As System.Windows.Forms.Form, ByVal Ctrl As System.Windows.Forms.Control) As Integer If (Ctrl.Parent Is Frm) Then CalculateXPosition = Ctrl.Location.X Else CalculateXPosition = Ctrl.Location.X + CalculateXPosition(Frm, Ctrl.Parent) End IfEnd Function
Il parametro Frm può essere la form principale della nostra applicazione oppure Nothing se si vuole calcolare la posizione assoluta rispetto allo schermo.
In modo analogo, utilizzando la proprietà Location.y, si può creare la...
E' possibile inserire elementi di testo colorato all'interno di list view utilizzando il seguente codice:
. .Dim ListItem As System.Windows.Forms.ListViewItemListItem = New System.Windows.Forms.ListViewItem(New String() {"Elemento colorato"}, -1, forecolor, backcolor, Nothing)lstLista.Items.Add(ListItem) . .
lstLista è un oggetto di tipo List View;forecolor è un oggetto di tipo System.Drawing.Color (ad esempio System.Drawing.Color.Red) e rappresenta il colore di primo piano;backcolor è un oggetto di tipo System.Drawing.Color (ad esempio System.Drawing.Color.Blue) e rappresenta il colore di sfondo.