Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Keyen Night

#371
Estamos haciendo un Messenger :xD así se puede en una linea:

Código (vbnet) [Seleccionar]
        Dim fechaInicial As New DateTime(2009, 3, 2, 6, 20, 30)
        Dim fechafinal As New DateTime(2010, 6, 2, 6, 20, 30)

        Dim vDiferencia As New TimeSpan(fechafinal.Ticks - fechaInicial.Ticks)

        MessageBox.Show(vDiferencia.TotalDays)
#372
El .Net hace transformaciones de tipos automaticamente e inicializa los objetos automaticamente tambien .Net es un lenguaje simple, comodo y muy visual lo que le falta es potencia :-\
#373
Tanto el ejemplo mio como el de D4N93R funcionan perfectamente en .Net y en C#
#374
Date1.Subtract(Date2).TotalDays

Así de simple :P

Tambien en vez de TotalDays puedes usar segundos, minutos, etc.
#375
.NET (C#, VB.NET, ASP) / Re: SmartDll.dll
21 Julio 2010, 20:07 PM
Si ya te entiendo tambien pense en eso pero me dio flogera xD obviamente se necesita que el plugin pueda tener acceso al programa que lo cargo, bueno seguiré trabajando y cualquier avance lo comunico, Gracias por tu respuesta ;)
#376
.NET (C#, VB.NET, ASP) / SmartDll.dll
21 Julio 2010, 19:19 PM
Buenas tardes/días/noches a todos xD me ha llamado mucho la atención lo de los plugings y addons que se puede hacer con System.Reflection en .Net así que he me puse a hacer una dll SmartDll.dll que sirviera para facilitar la comunicación entre el programa y los plugins de una manera más comoda, entonces vengo aqui a pedir consejos y opiniones mientras voy desarrollando el proyecto de tal manera que quede lo mejor posible, aqui está el source:

Para que no tengan que leerselo y analizarlo basicamente crea un objeto apartir de la dll a cargar comprobando que dentro de ella exista la clase Plugin
dentro de esta clase debe ir todo el contenido y además debe ser la clase principal y tambien el nombre de raiz y el del ensamblado del plugins deben ser los mismos, luego tenemos 2 funciones una que devuelve todos los controles dentro del plugin y otra que te devuelve solo los de un tipo en especifico por ejemplo solo los TextBox

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

#Region " Private "

    Private _
    _DllInfo As FileInfo, _
    _EntryPoint As String, _
    _Assembly As Assembly, _
    _ObjectType As Type, _
    _ObjectInstance As Object

#End Region

#Region " Private Shared "



#End Region

#Region " Public "

    Public Sub New(ByVal Path As String)
        Try
            If IsSmartDll(Path) Then
                _DllInfo = New FileInfo(Path)
                _EntryPoint = New FileInfo(Path).Name.Split(CChar("."))(0) & "."
                _Assembly = Assembly.LoadFile(Path)
                _ObjectType = _Assembly.GetType(_EntryPoint & "Plugin")
                _ObjectInstance = _Assembly.CreateInstance(_EntryPoint & "Plugin")
            Else
                Throw New Exception(Path & " not belongs to SmartDll")
            End If
        Catch ex As Exception
            Throw New Exception(ex.Message, ex.InnerException)
        End Try
    End Sub

    Public ReadOnly Property FileInfo() As [FileInfo]
        Get
            Return _DllInfo
        End Get
    End Property

    Public Function GetControlsByType(ByVal FindType As Type) As List(Of Control)
        GetControlsByType = New List(Of Control)

        For Each Objeto As PropertyInfo In _ObjectType.GetProperties

            Try

                If Objeto.PropertyType.Name = FindType.Name Then
                    GetControlsByType.Add(CType(Objeto.GetValue(_ObjectInstance, New Object() {}), Control))
                Else
                    Continue For
                End If

            Catch
                Continue For
            End Try

        Next

    End Function

    Public Function GetControls() As List(Of Control)
        GetControls = New List(Of Control)

        For Each Objeto As PropertyInfo In _ObjectType.GetProperties

            Try
                GetControls.Add(CType(Objeto.GetValue(_ObjectInstance, New Object() {}), Control))
            Catch
                Continue For
            End Try

        Next

    End Function

#End Region

#Region " Public Shared "

    Public Shared Function IsSmartDll(ByVal Path) As Boolean
        Try
            Dim Dll As Assembly = Assembly.LoadFile(Path)

            Return Dll.GetType(New FileInfo(Path).Name.Split(CChar("."))(0) & ".Plugin") IsNot Nothing

        Catch
            Return False
        End Try
    End Function

#End Region

End Class


Pueden decir que creen ustedes que hace falta, dudas, criticas o correcciones de errorres o recomendaciones de mejores practicas ;D

Notas:

  • Para que serviria llamar Subs y Funciones de un plugin?
#377
Está fue una clase hecha por mí para hacer versiones de prueba con solo editar algunos valores y modificar los detalles a tu gusto estarías bien a mi me parece super comoda xD aqui está el fuente:

:http://www.speedyshare.com/files/23462745/Trialer.rar

Bueno trabaja con el registro de windows guardando datos cifrados como fecha de inicio, días que dura la prueba, fecha final, esta registrado? y cosas por el estilo yo la única recomendación que te hago es que le agreges AccesControl Deny a la llave del registro cuando la dejes de usar para así protegerla.

Este es más o menos un ejemplo de su uso en Form_Load:

Código (vbnet) [Seleccionar]
       Try

           ''///INICIALIZAMOS LA VERSION TRIAL CON ID 1555\\\''
          Dim mTrial As Trial = New Trial(1555, 5, Now)

           If Not mTrial.IsStarted Then
               mTrial.StartTrial()
           Else
               mTrial = Trial.FromId(1555)
           End If

               If mTrial.IsEnded Then
               Messagebox.Show("Se acabo la versión de Prueba!!!")
                   End
               End If

            If Not mTrial.IsRegistered Then
                Messagebox.Show("Recuerde que no está registrado le quedan " & mTrial.AvailableDays.ToString & " días")
            End If

       Catch ex As Exception

           If ex.Message.Contains("fecha") Then
               MessageBox.Show("La fecha del sistema no es correcta, por favor verifiquela.", "Hora/Fecha Incorrecta (Error #001)", MessageBoxButtons.OK, MessageBoxIcon.Error)
               End
           End If

           MessageBox.Show("Imposible leer Licencia, información corrupta o incorrecta." & vbNewLine & ex.Message, "Licencia Inválida (Error #002)", MessageBoxButtons.OK, MessageBoxIcon.Error)
           End
       End Try


Bueno revisa tu la clase para que veas como funciona xD tambien te recomiendo un servidor ftp, o una base de datos que guarde las versiones de prueba otorgadas a tal forma que despues de acaba no se puede "reiniciar" otra version de prueba.
#378
Olvidate de los Timers tienes el evento TextChanged es mucho mejor, recuerda la propiedad TextLength de los TextBox es lo mismo que usar Len(TextBox.Text) pero es la forma más correcta.
#379
Me explicare mejor con nombres pero ya lo solucione.

Tenía un Form1 al que le coloque Form1.BackColor = White y BackGroundImage una imagen cualquiera que no ocupaba todo el Form, en tiempo de diseño se veia la Imagen del BackGroundImagen y la parte que no cubria en color White como se debería ver pero al compilar, la imagen en BackGroundImagen no se veía sino solamente el BackColor.
#380
Cree un nuevo proyecto y pasee todos los controles y todo las configuraciones al nuevo y se soluciono, ya BackGroundImage se ve por encíma de BackColor pero igualmente aquí queda entonces un error del Visual Basic ya que no tiene otra explicación...