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

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

0 Miembros y 1 Visitante están viendo este tema.

z3nth10n

#270
Citarno eres quien para llamar noobs a los que no saben PHP...

:o :o :o :o :o :o :o :o :o

Tengo que citarlo, porque me parece muy fuerte... Cuando te pase la lista de los lenguajes que había tocado y no había aprendido, estaba VB.NET y PHP, es decir que yo mismo me califico como noob... Lo que más bueno me parece, es que m estás acusando, de a ver llamado noob a alguien que no sepa PHP... Hombre, en ciertas ocasiones puede, pero, porque me vienen preguntando (no en el foro, si no por Skype), cosas y digo, es que no sabes Googlear... Y cosas tales, pero yo en mi vida, he tomado a nadie por Noob en el tema de la programación en el foro, y si lo ha parecido ha sido p**a coincidencia...

Sobre la String, eran las 12 de la noche y llevaba prisa por irme... Me dí cuenta, pero ni me pare a corregirlo... Puede que haya hecho Copy/paste, pero porque llevaba prisa... Si no, me hubiese parado a comprobar bien lo que hacía eso.. Y es más hasta lo sospechaba, pero como ya digo llevaba prisa tio, que se le va a hacer. :P




Edit: En SO no te digo que no..., pero aquí en el foro, todavía no he tomado a nadie como noob. ;)

Interesados hablad por Discord.

z3nth10n

Nuevo Snippet, calcular distancia recorrida con el ratón: :)

Código (vbnet) [Seleccionar]
Public Class Form1

#Region "Variables"
   Private Enum eUnidades  'Las unidades de nuestro "odometro" serán metro o kilometros
       Metros = 0
       Kilometros
   End Enum
   Private UnidadActual As eUnidades

   Private NOMBRE_FICHERO_ODOMETER As String = "MouseOdometerNET.tmp"  'Fichero donde se guardará la distancia recorrida (siempre en milimetros)
   Private NOMBRE_FICHERO_ODOMETER_Config As String = "MouseOdometerNET.cfg" 'Fichero donde se guardará si la distancia está en metros o kilometros

   Private DistanciaRecorridaMM As Single  'Distancia total recorrida (siempre en milimetros)

   Private Structure sPointMM  'Coordenadas del raton en milímetros
       Dim X As Single
       Dim Y As Single
   End Structure

   Private gDPIX As Integer = 96   'DPIs de la pantalla
   Private gDPIY As Integer = 96

   Private WithEvents TMR_guardarDistancia As New Timer    'Timer que periodicamente guarda la distancia en el fichero
   Private WithEvents TMR_capturaPosicionMouse As New Timer    'Timer de captura de la posición del raton

   Private puntoAnterior As New Point(0, 0)    'Punto capturado anteriormente
#End Region

#Region "Ficheros. Lectura / Escritura"
   Private Sub EscribirFichero(ByVal Fichero As String, ByVal Data As String)
       Dim objFileWrite = New System.IO.StreamWriter(Fichero, False, System.Text.Encoding.Default)
       objFileWrite.Write(Data)
       objFileWrite.Flush()
       objFileWrite.Close()
   End Sub

   Private Function LeerFichero(ByVal Fichero As String) As String
       Dim objFileRead As New System.IO.StreamReader(Fichero)
       Dim sData As String = objFileRead.ReadToEnd
       objFileRead.Close()

       Return sData
   End Function
#End Region

#Region "Eventos a nivel de formulario"
   Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
       TMR_capturaPosicionMouse.Enabled = False
       TMR_guardarDistancia.Enabled = False

       TMR_capturaPosicionMouse.Dispose()
       TMR_guardarDistancia.Dispose()

       'Cuando cerramos el programa, se graba la distancia recorrida
       EscribirFichero(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER, DistanciaRecorridaMM.ToString)

       GC.Collect()
   End Sub

   'Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
   '    If Me.WindowState = FormWindowState.Minimized Then
   '        Me.Visible = False
   '    End If
   'End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim g As Graphics = Me.CreateGraphics()
       gDPIX = g.DpiX '¿Cual son los DPI de la pantalla?
       gDPIY = g.DpiY

       Me.WindowState = FormWindowState.Minimized
       NotifyIcon1.ShowBalloonTip(20, "Información", "MouseOdemeterNET Ejecutándose", ToolTipIcon.Info)

       IniciarParametros() 'Carga los "parámetros"
       SetCheckUnidadMenu() 'Activa o desactiva la unidad de medida acutal en el ContextMenu

       'Si no existe el fichero con la distancia recorrida, se crea un nuevo
       If IO.File.Exists(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER) = False Then
           EscribirFichero(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER, "0")
           DistanciaRecorridaMM = 0
       Else
           'En caso contrario, se carga la distancia recorrida
           Dim s As String = LeerFichero(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER)
           DistanciaRecorridaMM = CType(s, Single)
       End If

       'Inicializamos el timer de la captura de la posicion del raton
       TMR_capturaPosicionMouse.Interval = 250
       TMR_capturaPosicionMouse.Enabled = True

       'Cada "60 segundos" se irá guardando la distancia recorrida
       TMR_guardarDistancia.Interval = 60000
       TMR_guardarDistancia.Enabled = True

       'Obtenemos el punto acual donde se encuentra el raton
       puntoAnterior = Cursor.Position

       Me.Width = 0
       Me.Height = 0
   End Sub
#End Region

#Region "Calculo de la distancia"
   'Convierte una posicion de pixel en pantalla a su valor en milimetros
   Public Function PIXELtoMM(ByVal ValorPixel As Integer, ByVal ValorDPI As Integer) As Single
       Return (ValorPixel / ValorDPI * 25.4)
       'Return (Format(((25.4 * ValorPixel) / ValorDPI), "0.0000"))
   End Function

   ' Calcula la distancia entre dos puntos (expresados en pixels)
   Private Function DistanciaEntreDosPuntos(ByVal Origen As Point, ByVal Destino As Point) As Single

       If (Origen.X = Destino.X) And (Origen.Y = Destino.Y) Then
           Return 0
       Else
           'Paso 1: los puntos pasados como "pixels" se convierten en coordenadas cartesianas en "milimetros"
           Dim tmpPointOrigenMM As sPointMM

           Dim tmpPointDestinoMM As sPointMM

           tmpPointOrigenMM.X = PIXELtoMM(Origen.X, gDPIX)
           tmpPointOrigenMM.Y = PIXELtoMM(Origen.Y, gDPIY)

           tmpPointDestinoMM.X = PIXELtoMM(Destino.X, gDPIX)
           tmpPointDestinoMM.Y = PIXELtoMM(Destino.Y, gDPIY)

           'Paso 2: Aplicar la formula de la distancia entre dos puntos para saber la distancia en milimetros
           'd=SQR[ (destino.x-origen.x)^2 + (destino.y-origen.y)^2 ]

           Dim Xdist As Single = Math.Pow((tmpPointDestinoMM.X - tmpPointOrigenMM.X), 2)
           Dim Ydist As Single = Math.Pow((tmpPointDestinoMM.Y - tmpPointOrigenMM.Y), 2)

           Return Math.Sqrt(Xdist + Ydist)

       End If
   End Function
#End Region

#Region "Timers"
   'Timer que va guardando la distancia en un fichero
   Private Sub TMR_guardarDistancia_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TMR_guardarDistancia.Tick
       EscribirFichero(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER, DistanciaRecorridaMM.ToString)
   End Sub

   'Timer que va capturando la posición del raton
   Private Sub TMR_capturaPosicionMouse_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TMR_capturaPosicionMouse.Tick

       'Oculta el "formulario". Esto se hace solo la primera vez que se entra en este timer
       Static bHecho As Boolean
       If bHecho = False Then
           bHecho = True
           Me.Visible = False
       End If

       Dim MousePosition As Point
       MousePosition = Cursor.Position

       'Actualiza la variable con la distancia recorrida
       DistanciaRecorridaMM += DistanciaEntreDosPuntos(puntoAnterior, MousePosition)
       puntoAnterior.X = MousePosition.X
       puntoAnterior.Y = MousePosition.Y

       'Muesta la distancia en el ContextMenu
       Select Case UnidadActual
           Case eUnidades.Metros
               DistanciaToolStripMenuItem.Text = DistanciaRecorridaMM / 1000 & " m"
           Case eUnidades.Kilometros
               DistanciaToolStripMenuItem.Text = DistanciaRecorridaMM / 1000000 & " km"
       End Select

       'y en el "caption" del NotifyIcon
       NotifyIcon1.Text = "MouseOdometerNET (" & DistanciaToolStripMenuItem.Text & ")"

   End Sub
#End Region

#Region "ContextMenu"
   '¿Cerrar la aplicación?
   Private Sub CerrarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CerrarToolStripMenuItem.Click
       If MessageBox.Show("Oh Dios mío. ¿Estás seguro que deseas volver a la soledad del escritorio de Windows?", Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
           Me.Close()
       End If
   End Sub
   '¿Resetear la distancia recorrida?
   Private Sub ResetearToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ResetearToolStripMenuItem.Click
       If MessageBox.Show("¿Estás seguro que deseas resetear la distancia recorrida?", Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
           EscribirFichero(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER, "0")
           DistanciaRecorridaMM = 0
       End If
   End Sub
   'Seleccionar la distancia como "Metros"
   Private Sub MetrosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MetrosToolStripMenuItem.Click
       UnidadActual = eUnidades.Metros
       EscribirFichero(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER_Config, UnidadActual)
       SetCheckUnidadMenu()
   End Sub
   'Seleccionar la distancia como "Kilometros"
   Private Sub KilometrosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KilometrosToolStripMenuItem.Click
       UnidadActual = eUnidades.Kilometros
       EscribirFichero(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER_Config, UnidadActual)
       SetCheckUnidadMenu()
   End Sub
#End Region

#Region "Miscelanea"
   'Devuelve cual es la carpeta "Temporal" de Windows
   Private Function CarpetaTempWindows() As String
       Dim s As String
       s = IO.Path.GetTempPath
       If s.EndsWith("\") = False Then s &= "\"
       Return s
   End Function
   'Activa o desactiva la unidad de distancia en el ContextMenu
   Private Sub SetCheckUnidadMenu()
       Select Case UnidadActual
           Case eUnidades.Kilometros
               KilometrosToolStripMenuItem.CheckState = CheckState.Checked
               MetrosToolStripMenuItem.CheckState = CheckState.Unchecked
           Case eUnidades.Metros
               KilometrosToolStripMenuItem.CheckState = CheckState.Unchecked
               MetrosToolStripMenuItem.CheckState = CheckState.Checked
       End Select
   End Sub
   'Inicia los "parámetros", de tal forma que si cerramos el programa y luego lo volvemos a ejecutar,
   'Se inicializara la "unidad" de medida anterior
   Private Sub IniciarParametros()
       If IO.File.Exists(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER_Config) = False Then
           UnidadActual = eUnidades.Metros
           EscribirFichero(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER_Config, UnidadActual)
       Else
           Dim s As String = LeerFichero(CarpetaTempWindows() & NOMBRE_FICHERO_ODOMETER_Config)
           UnidadActual = CType(s, eUnidades)
       End If
   End Sub
#End Region

End Class


Fuente: http://www.gamefilia.com/ollydbg/11-07-2009/24484/cuantos-kilometros-recorre-tu-raton-adivinalo-ahora

Source: http://blog.transitopesado.com/blog/file.axd?file=2011%2f2%2fMouseOdometerNET_source.zip

Un saludo.
PD:
Con esto voy a poder hacer mi app, ahora solo me falta saber cuantas letras clico al día... :P Según Drvy vio por ahí cada 1000 teclas son 20 calorías, pues ale, a hacer reglas de 3... :P

Y así puedo sacar cuantas calorías se queman xD Que te parece?

Interesados hablad por Discord.

Eleкtro

Cita de: Ikillnukes en 31 Julio 2013, 13:11 PMyo en mi vida, he tomado a nadie por Noob en el tema de la programación

Ahá...

Cita de: Ikillnukes en  5 Julio 2013, 14:12 PMxD Que bueno es saber CSS y HTML y un poco de PHP. Es la ostia los noobs que son algunos.

Cita de: Novlucker en  5 Julio 2013, 15:06 PM[Offtopic] No subestimar a los demás, alguien podría estar pensando lo mismo sobre ti en .NET :silbar:

PD: La otra cita es para que recuerdes el buen consejo de Novlucker.

Si quieres aceptar mi consejo hazlo, sino pues no lo hagas, pero ya te he dicho lo que pienso y tu también lo acabas de hacer, ya no es necesario que sigamos haciendo más offtopics.

Saludos








z3nth10n

#273
Eh, eh, eh! xDD Me estás citando temas de MP xD Eso es privado, además, eso es en StackOverFlow, aquí no he visto nadie noob, solo que lo piden todo muy hecho, vamos como soy yo... xD

Ale, hasta aquí mi último offtopic, no quiero quedar yo como el malo, ostias! :xD :xD :laugh:

Maemia, vas y me sacas un MP que no tiene nada que ver con EHN, pero a que juegas? LOL xDD
PD: No te tomes a mal la expresión "a que juegas" ;)

Un saludo.




Citar[Offtopic] No subestimar a los demás, alguien podría estar pensando lo mismo sobre ti en .NET :silbar:

Por ejemplo, medio foro... xD




Edit: Pero que digo? xD Si eso es un topic, es verdad, me reitero a lo dicho, pero por igual, me refería a StackOverflow, "la comunidad del código hecho", si tu lo sabes bien, que algunos preguntan unas cacho burradas que pa que... :P

Interesados hablad por Discord.

Novlucker

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

z3nth10n

#275
Cita de: Novlucker en 31 Julio 2013, 15:06 PM
http://foro.elhacker.net/net/customizar_texto_2_o_3_veces_dentro_del_mismo_label-t394160.0.html;msg1867848#msg1867848

CitarEdit: Pero que digo? xD Si eso es un topic, es verdad, me reitero a lo dicho, pero por igual, me refería a StackOverflow, "la comunidad del código hecho", si tu lo sabes bien, que algunos preguntan unas cacho burradas que pa que... :P

:¬¬ :¬¬ Mientras tu te molestabas en buscar el topic yo me estaba reiterando en lo que he dicho, pido perdón... :P

Es más, si se me permite voy a citar un topic de StackOverFlow en el que creo que me vais a dar la razón...

La super ultra mega pregunta de PHP: http://stackoverflow.com/questions/17475292/no-database-selected-on-php/17475317#17475317

Solo a ese topic me refería (porque no encuentro preguntas muy noobs, bueno puede que algunas, pero son fallos tontos que cualquiera podría tener, hasta yo mismo), no me digáis, que no tengo razón, por lo menos quien sepa de PHP, pensará que ese tío que ha hecho la pregunta es un burro... No me digáis que no, porque eso es ya trolear... ;)

Puede que llevéis razón, en que otra persona puede estar pensando lo mismo de mi en .NET, pero eso no me quita a mi, de defender lo que si se en PHP ;)




Y ya dejemos desviar el tema...

Que os parece el Snippete que me he encontrado por ahí? :silbar:

Interesados hablad por Discord.

Eleкtro

Cita de: Ikillnukes en 31 Julio 2013, 15:08 PMMientras tu te molestabas en buscar el topic yo me estaba reiterando en lo que he dicho, pido perdón...

Cita de: Ikillnukes en  5 Julio 2013, 14:12 PM

Pincha donde dice "Cita de: Ikillnukes" y verás lo que ocurre... ;)

Saludos.






Un administrador de Snippets:

http://forum.mphca.net/showthread.php?150809-Release-Vb-net-Code-Snippet-Manager



PD: NO LO HE TESTEADO








z3nth10n

#277
Cita de: EleKtro H@cker en 31 Julio 2013, 16:00 PM
Cita de: Ikillnukes en  5 Julio 2013, 14:12 PM

Pincha donde dice "Cita de: Ikillnukes" y verás lo que ocurre... ;)

Saludos.



Ya no me dí cuenta de hacerlo, me di cuenta más tarde xD

Cita de: EleKtro H@cker en 31 Julio 2013, 16:00 PM


Un administrador de Snippets:

http://forum.mphca.net/showthread.php?150809-Release-Vb-net-Code-Snippet-Manager



PD: NO LO HE TESTEADO

Anda, que chulo...

PD: Sigues sin opinar el Source que he encontrado.. :(

Interesados hablad por Discord.

Eleкtro

Cita de: Ikillnukes en 31 Julio 2013, 16:02 PMPD: Sigues sin opinar el Source que he encontrado.. :(

¿Porque me toca siempre a mi opinar todos los snippets q posteas? xD

Si fuese un snippet tuyo opinaria, o en caso de que tuviese errores o se pudiese mejorar pues comentaria todos esos aspectos...

...¿pero que leches quieres q diga de ese snippet? xD, pues me parece un snippet muy ...peculiar, vaya ...que no le encuentro utilidad alguna :xD, pero bueno seguro que alguna utilidad se le podrá dar, aunque sea por pura curiosidad de saber cuantos "kilometros" recorremos a diario...

Saludos.








Eleкtro

#279
Guardar y recuperar datos en una aplicación, por ejemplo si la aplicación se mata después de un bug o si reiniciamos el Pc (de forma brusca sin esperar a que las aplicaciones se cierren), etc...

El code es genérico y está optimizado para salvaguardar los datos (items) de un Listview, pero se puede modificar fácilmente para usarlo con todo tipo de datos...


PD: Esto es una traslación con pocas mejoras de un code de C# que me proporcionó Novlucker, así que los créditos para él.
Código (vbnet) [Seleccionar]
#Region " Backup and Recovery Listview Items "

    ' [ Backup and Recovery Listview Items ]

    ReadOnly BackupFile As String = "Recovery.tmp"  ' File conaining the data to recover.
    Private BackupData As New List(Of ListViewItem) ' Storage for the data to backup.
    Private BinaryFormat As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()

    Private Sub Backup(ByVal ListView As ListView)

        BackupData.Clear()

        Select Case ListView.Items.Count

            Case 0
                Try : IO.File.Delete(BackupFile) : Catch : End Try
                ' We don't need the BackupFile if it will not contains anything to recover...

            Case Else

                BackupData.AddRange(ListView.Items.Cast(Of ListViewItem))

                Using Writter As New IO.FileStream(BackupFile, IO.FileMode.Create)
                    BinaryFormat.Serialize(Writter, BackupData)
                End Using

        End Select

    End Sub

    Private Sub Recovery(ByVal ListView As ListView)

        If IO.File.Exists(BackupFile) Then

            Using Reader As New IO.FileStream(BackupFile, IO.FileMode.Open)
                BackupData = DirectCast(BinaryFormat.Deserialize(Reader), List(Of ListViewItem))
            End Using

            ListView.Items.AddRange(BackupData.ToArray())

        End If

    End Sub

#End Region


Ejemplo de uso:

Para guardar todos los items de un listview en un archivo temporal ...por ejemplo cada 60 segundos:

Código (vbnet) [Seleccionar]
   WithEvents BackupTimer As New Timer With {.Interval = 60 * 1000, .Enabled = True}

   Private Sub BackupTimer_Tick(sender As Object, e As EventArgs) Handles BackupTimer.Tick
       Backup(ListView1)
       End ' Matamos la aplicación si se quiere testear...
   End Sub



Y para restaurar los datos perdidos en la próxima ejecución de la aplicación podemos hacer lo siguiente:

Código (vbnet) [Seleccionar]
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       If IO.File.Exists(BackupFile) Then

           If MessageBox.Show( _
              "An error ocurred during the last session." & vbNewLine & vbNewLine & _
              "Do you want to recover the lost data?", "Recovery", _
              MessageBoxButtons.YesNo, MessageBoxIcon.Question) _
           = DialogResult.Yes Then

               Recovery(ListView1)
               MessageBox.Show("Data recovered!", "Recovery", MessageBoxButtons.OK, MessageBoxIcon.Information)

           End If

       End If
     
   End Sub


Saludos.