Librería de Snippets para VB.NET !! (Compartan aquí sus snippets)

Iniciado por Eleкtro, 18 Diciembre 2012, 22:23 PM

0 Miembros y 2 Visitantes están viendo este tema.

Eleкtro

Cita de: Novlucker en 16 Enero 2013, 20:20 PM
Tienes que intentar mejorar tus conceptos  :¬¬ es algo bastante básico

Pues el que hizo la función original es un pedazo de Coder de CodeProject que ha hecho unos 10 controles extendido... así que quizás si usa ByVal es por algo... no sé, no me culpeis a mí xD.

PD: Cuanto más me adentro en .NET más me doy cuenta que es imposible saberlo todo al milímetro!

Saludos!








Novlucker

#31
Cita de: EleKtro H@cker en 16 Enero 2013, 20:38 PM
Pues el que hizo la función original es un pedazo de Coder de CodeProject que ha hecho unos 10 controles extendido... así que quizás si usa ByVal es por algo... no sé, no me culpeis a mí xD.

PD: Cuanto más me adentro en .NET más me doy cuenta que es imposible saberlo todo al milímetro!

Ahí es donde se diferencia C# de VB.NET. C# te obliga a hacer cosas que en VB.NET son opcionales, como declarar el tipo de dato de retorno de una función, o sabes que todo objeto va siempre por referencia y los otros por valor (boolean, double, etc), salvo que se especifique que va por referencia :-\

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

ABDERRAMAH

El concepto de byval y byref se entiende mejor en c++ que en visualbasic, yo que soy de los que aprendió con vb me costó entender a qué se refiere, en cierta forma es como pasar punteros en c++.

Eleкtro

Cargar un recurso embedido (.exe) al disco duro

Código (vbnet) [Seleccionar]
#Region " Load Resource To Disk Function "

    ' [ Load Exe Resource To Disk Function ]
    '
    ' // By Elektro H@cker (Gracias a Kubox)
    '
    ' Examples:
    '
    ' Load__Exe_Resource_To_Disk(My.Resources.Exe_Name, "C:\File.exe")
    ' ' Process.Start("C:\File.exe")

    Private Function Load__Exe_Resource_To_Disk(ByVal Resource As Byte(), ByVal Target_File As String) As Boolean
        Try
            Dim File_Buffer As Byte() = Resource
            Dim Buffer_FileStream As New IO.FileStream(Target_File, IO.FileMode.Create, IO.FileAccess.Write)
            Buffer_FileStream.Write(File_Buffer, 0, File_Buffer.Length) : Buffer_FileStream.Close()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

#End Region





MessageBox Question - Cancel operation

Código (vbnet) [Seleccionar]
  Dim Answer = MessageBox.Show("Want to cancel the current operation?", "Cancel", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
  If Answer = MsgBoxResult.Yes Then Application.Exit() Else e.Cancel = True





Mover un archivo, con varias opciones adicionales.

Código (vbnet) [Seleccionar]
#Region " Move File Function "

    ' [ Move File Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    '
    ' MsgBox(Move_File("C:\File.txt", "C:\Test\")) ' Standard move
    ' MsgBox(Move_File("C:\File.txt", "C:\Test\", True)) ' Create the directory if doesn't exists
    ' MsgBox(Move_File("C:\File.txt", "C:\Test\", , True)) ' Replace any existing file
    ' MsgBox(Move_File("C:\File.txt", "C:\Test\", , , IO.FileAttributes.Hidden + IO.FileAttributes.ReadOnly)) ' Apply new attributes

    Private Function Move_File(ByVal File As String, ByVal Target_Path As String, _
                               Optional ByVal Force_Target_Path As Boolean = False, Optional ByVal Force_File_Replace As Boolean = False, _
                               Optional ByVal Attributes As System.IO.FileAttributes = IO.FileAttributes.Normal)

        Dim File_Information = My.Computer.FileSystem.GetFileInfo(File) ' Get Input File Information

        ' Directory
        If Not Force_Target_Path And Not My.Computer.FileSystem.DirectoryExists(Target_Path) Then
            Return False ' Target Directory don't exists
        ElseIf Force_Target_Path Then
            Try
                My.Computer.FileSystem.CreateDirectory(Target_Path) ' Create directory
            Catch ex As Exception
                'Return False
                Return ex.Message ' Directory can't be created maybe beacuse user permissions
            End Try
        End If

        ' File
        Try
            My.Computer.FileSystem.MoveFile(File, Target_Path & "\" & File_Information.Name, Force_File_Replace) ' Moves the file
            If Not Attributes = IO.FileAttributes.Normal Then My.Computer.FileSystem.GetFileInfo(Target_Path & "\" & File_Information.Name).Attributes = Attributes ' Apply File Attributes
            Return True ' File is copied OK
        Catch ex As Exception
            'Return False
            Return ex.Message ' File can't be created maybe beacuse user permissions
        End Try
    End Function

#End Region








Eleкtro

Obtener la arquitectura del OS

Código (vbnet) [Seleccionar]
#Region " Get OS Architecture Function "

    ' [ Get OS Architecture Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    ' Dim Architecture = Get_OS_Architecture()

    Private Function Get_OS_Architecture() As Integer
        Dim Bits = Runtime.InteropServices.Marshal.SizeOf(GetType(IntPtr)) * 8
        Select Case Bits
            Case 32 : Return 32 ' x86
            Case 64 : Return 64 ' x64
            Case Else : Return Nothing ' xD
        End Select
    End Function

#End Region





Ejemplo de un overload

Código (vbnet) [Seleccionar]
    ' Examples:
    '
    ' Test(0)
    ' Test"0")

    Sub Test(ByVal Argument As Integer)
        MsgBox("Integer: " & Argument)
    End Sub

    Sub Test(ByVal Argument As String)
        MsgBox("String: " & Argument)
    End Sub





El snippet de Get All Files, mejorado:

Código (vbnet) [Seleccionar]
#Region " Get All Files Function "

    ' [ Get All Files Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples:
    '
    ' Dim Files As Array = Get_All_Files("C:\Test", True)
    ' For Each File In Get_All_Files("C:\Test", False) : MsgBox(File) : Next

    Private Function Get_All_Files(ByVal Directory As String, Optional ByVal Recursive As Boolean = False) As Array
        If System.IO.Directory.Exists(Directory) Then
            If Not Recursive Then : Return System.IO.Directory.GetFiles(Directory, "*", IO.SearchOption.TopDirectoryOnly)
            Else : Return IO.Directory.GetFiles(Directory, "*", IO.SearchOption.AllDirectories)
            End If
        Else
            Return Nothing
        End If
    End Function

#End Region








Eleкtro

No es mucho, pero puede servir...

Obtener la ruta del directorio o del archivo "user.config"

Código (vbnet) [Seleccionar]
#Region " Get User Config Function "

   ' [ Get User Config Function ]
   '
   ' // By Elektro H@cker (Gracias a Seba123Neo)
   '
   ' Examples :
   '
   ' * First add a reference to "System.Configuration" in the proyect
   '
   ' MsgBox(Get_User_Config(User_Config.File))
   ' MsgBox(Get_User_Config(User_Config.Path))

   Enum User_Config
       File
       Path
   End Enum

   Private Function Get_User_Config(ByVal Setting As User_Config) As String
       Dim UserConfig As String = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.PerUserRoaming).FilePath
       Select Case Setting
           Case User_Config.File : Return UserConfig
           Case User_Config.Path : Return UserConfig.Substring(0, UserConfig.LastIndexOf("\"))
           Case Else : Return False
       End Select
   End Function

#End Region








$Edu$

Se supone que todos los apuntes que has hecho desde que aprendiste vb.net estan aca no? digo porque te los iba a pedir pero veo que estan todos aca xD

Eleкtro

Sí xDDDDDD, apuntes convertidos en funciones/snippets, creo que para lo poco que sé de .NET me lo curro ;D.








Eleкtro

Calcular el hash MD5 de un archivo:

Código (vbnet) [Seleccionar]
    #Region " Get MD5 Of File Function "
     
       ' [ Get MD5 Of File Function ]
       '
       ' Examples :
       '
       ' MsgBox(Get_MD5_Of_File("C:\Test.txt"))
     
       Private Function Get_MD5_Of_File(ByVal File As String) As String
           Using MD5_Reader As New System.IO.FileStream(File, IO.FileMode.Open, IO.FileAccess.Read)
               Using MD5 As New System.Security.Cryptography.MD5CryptoServiceProvider
                   Dim MD5_Byte() As Byte = MD5.ComputeHash(MD5_Reader)
                   Dim MD5_Hex As New System.Text.StringBuilder(MD5.ComputeHash(MD5_Reader).Length * 2)
                   For Number As Integer = 0 To MD5_Byte.Length - 1 : MD5_Hex.Append(MD5_Byte(Number).ToString("X2")) : Next
                   Return MD5_Hex.ToString().ToLower
               End Using
           End Using
       End Function
     
    #End Region






Calcular el hash MD5 de un string:

Código (vbnet) [Seleccionar]
#Region " Get MD5 Of String Function "

    ' [ Get MD5 Of String Function ]
    '
    ' Examples :
    '
    ' MsgBox(Get_MD5_Of_String("C:\Test.txt"))

    Private Function Get_MD5_Of_String(ByVal str As String) As String
        Dim MD5_Hex As String = Nothing
        Dim MD5 As New System.Security.Cryptography.MD5CryptoServiceProvider()
        Dim MD5_Byte = System.Text.Encoding.UTF8.GetBytes(str)
        Dim MD5_Hash = MD5.ComputeHash(MD5_Byte)
        MD5.Clear()
        For Number As Integer = 0 To MD5_Hash.Length - 1 : MD5_Hex &= MD5_Hash(Number).ToString("x").PadLeft(2, "0") : Next
        Return MD5_Hex
    End Function

#End Region





Obtener la ID de la placa base:

Código (vbnet) [Seleccionar]
#Region " Get Motherboard ID Function "

    ' [ Get Motherboard ID Function ]
    '
    ' Examples :
    '
    ' Dim Motherboard_ID As String = Get_Motherboard_ID()
    ' MsgBox(Get_Motherboard_ID())

    Private Function Get_Motherboard_ID() As String
        For Each Motherboard As Object In GetObject("WinMgmts:").InstancesOf("Win32_BaseBoard") : Return Motherboard.SerialNumber : Next Motherboard
        Return Nothing
    End Function

#End Region






Obtener la ID del procesador:

Código (vbnet) [Seleccionar]
#Region " Get CPU ID Function "

    ' [ Get CPU ID Function ]
    '
    ' Examples :
    '
    ' Dim Processor_ID As String = Get_Motherboard_ID()
    ' MsgBox(Get_CPU_ID())

    Private Function Get_CPU_ID() As String
        For Each CPU_ID As Object In GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_Processor") : Return CPU_ID.ProcessorId : Next CPU_ID
        Return Nothing
    End Function

#End Region








Eleкtro

#39
Para cambiar los cursores de Windows (En el sistema, fuera del form)

Código (vbnet) [Seleccionar]
#Region " Set System Cursor Function "

   ' [ Set System Cursor Function ]
   '
   ' Examples :
   '
   ' Set_System_Cursor("C:\Cursors\Arrow.ani", System_Cursor.ARROW))
   ' MsgBox(Set_System_Cursor("C:\Cursors\Cross.cur", System_Cursor.CROSS))

   ' Set System Cursor [ API declarations ]
   Private Declare Function SetSystemCursor Lib "user32.dll" (ByVal hCursor As IntPtr, ByVal id As Integer) As Boolean
   Private Declare Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As IntPtr

   ' Set System Cursor [ API Constants ]
   Private Enum System_Cursor As UInt32
       APP_STARTING = 32650
       ARROW = 32512
       CROSS = 32515
       HAND = 32649
       HELP = 32651
       I_BEAM = 32513
       NO = 32648
       SIZE_ALL = 32646
       SIZE_NESW = 32643
       SIZE_NS = 32645
       SIZE_NWSE = 32642
       SIZE_WE = 32644
       UP = 32516
       WAIT = 32514
   End Enum

   ' Set System Cursor [ Function ]
   Private Function Set_System_Cursor(ByVal Cursor_File As String, ByVal Cursor_Type As System_Cursor) As Boolean
       If SetSystemCursor(LoadCursorFromFile(Cursor_File), Cursor_Type) = 0 Then Return False ' Error loading cursor from file
       Return True
   End Function

#End Region






Hotmail sender (Envía correos desde hotmail)

* Es necesario descargar la librería EASENDMAIL (Es gratis aunque se puede comprar licencia): http://www.emailarchitect.net/webapp/download/easendmail.exe  

PD: Sé que esto se puede hacer con la class system.net.mail, pero con esto no dependemos de puertos, y el SSL de los servidores que usemos en la librería se detecta automáticamente...

Código (vbnet) [Seleccionar]
#Region " Hotmail Sender Function "

   ' [ Hotmail Sender Function ]
   '
   ' // By Elektro H@cker
   '
   ' * First add a reference to "EASendMail" into the project.
   '
   ' Examples :
   '
   '  MsgBox(Hotmail_Sender("ElektroHacker@hotmail.com", "MyPass", "Anonym@gmail.com", "Test subject", "Test body", {"C:\File1.txt", "C:\File2.txt"}))

   Private Function Hotmail_Sender(ByVal Account_User As String, ByVal Account_Password As String, ByVal Mail_To As String, ByVal Mail_Subject As String, ByVal Mail_Body As String, Optional ByVal Mail_Attachments() As String = Nothing) As Boolean

       Dim Hot_Mail As New EASendMail.SmtpMail("TryIt")
       Dim Hot_Server As New EASendMail.SmtpServer("smtp.live.com")
       Dim Hot_Smtp As New EASendMail.SmtpClient()

       Hot_Server.User = Account_User
       Hot_Server.Password = Account_Password
       Hot_Server.ConnectType = EASendMail.SmtpConnectType.ConnectSSLAuto

       Hot_Mail.From = Account_User
       Hot_Mail.To = Mail_To
       Hot_Mail.Subject = Mail_Subject
       Hot_Mail.TextBody = Mail_Body
       If Mail_Attachments IsNot Nothing Then For Each Attachment In Mail_Attachments : Hot_Mail.AddAttachment(Attachment) : Next

       Try : Hot_Smtp.SendMail(Hot_Server, Hot_Mail) : Return True
       Catch ex As Exception : Return False : End Try

   End Function

#End Region