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 - Eleкtro

#7621
Cita de: Ikillnukes en  8 Diciembre 2013, 17:46 PMVale la pena usar una enumeración, por ejemplo en el Width de X (14) objectos?? O mas bien, es mejor usar X (14) declaraciones de tipos int??

Típica pregunta inentendible como de costumbre Ikillnukes, pero viniendo de ti te perdono xD

¿Si no entiendo mal quieres decir que tienes 14 objectos y quieres guardar el valor de "ancho" de cada objeto en algún lugar para acceder a ellos fácilmente?

Por como pintas el problema no creo que una Enum sea lo que necesitas, puesto que para empezar no se puede crear dinámicamente una Enum en tiempo de ejecución (al menos eso dice MSDN), y los elementos de una Enum tampoco se pueden modificar en tiempo de ejecución, ademas los valores de "widths" me imagino que serán numéricos (otro motivo para no pdoer usar una Enum).

Un Array es algo complétamente diferente a una Enum, no tiene ni pies ni cabeza comparar uno con lo otro, Enumeraciones es para X cosas y un Array para otras, una Enum es util si se sabe usar y puedes hacer con ella cosas interesantes como utilizar el attributo Flags y combinarlos (si resultase necesario), pero como ya digo, dudo que sea el caso de que una Enum te sirva...

Yo te recomiendo el uso de un Dictionary o cualquier otro Type como una Tuple; un Array 2D también te sirve pero pff teniendo esto no hace falta, te muestro un ejemplo en VB.NET:

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

   Private myObject As Object = "Object 1"

   Private ReadOnly Widths As New Dictionary(Of Object, Size) From
   {
       {myObject, New Size(500, 0)}
   }

   Private Sub Test() Handles MyBase.Shown

       ' Ejemplo de como iterar los elementos del diccionario
       For Each key As KeyValuePair(Of Object, Size) In Widths
           MsgBox(String.Format("Object:{0} Width:{1}", CStr(key.Key), CStr(key.Value.Width)))
       Next

       ' Ejemplo de como acceder a un elemento específico:
       MsgBox(Widths(myObject).Width)
       MsgBox(Widths.First.Value.Width)

   End Sub

End Class


EDITO: Si además del "Width" petendes especificar más cosas te recomiendo que crees tu Type propio y le añadas los miembros que quieras, como en el ejemplo del link que me has mostrado:

Citar
Código (csharp) [Seleccionar]
preset = new Item();
preset.name = "Apple";
preset.cost = 25;
preset.weight = 1;

Saludos!
#7622
Windows / Re: Algo ilogico
8 Diciembre 2013, 20:13 PM
¿Y si dejan de Trollearse mútuamente sobre si el mundo es una ***** o no lo es? (antes de que les cierren el post) xD

Siguiendo el tema de antes,
El ejemplo de @Topomanuel sobre como realizar una copia de seguridad no me parece mal, pero al ser una partición no te libraría de una catástrofe en ese disco duro si sufre daños o se formatea la unidad entera por error o infección de virus o cualquier otra cosa (esto ya lo sabes tú, pero lo comento igual), para mi sería mucho mejor si se respaldan los datos en un dispositivo de almacenamiento extraible y dedicado únicamente a almacenar dichas copias de seguridad, eso es lo que hago yo.

Grabar DVD's también me parece una buena idea pero para casos que no superen los 50 GB más o menos, yo tengo alrededor de 5 TeraBytes de datos que respaldar, sería una tremenda locura grabar DVD's y sale más barato comprar dos discos para respaldar los archivos.

Saludos!
#7624
Un ayudante para la interface MCI, reproduce archivos wav,mp3,midi y obtiene información esencial del archivo.

La class es algo básica, solo le añadí lo esencial porque me dió bastantes problemas la verdad.

Código (vbnet) [Seleccionar]
' [ MCI Player ]
'
' // By Elektro H@cker

#Region " Usage Examples "

' Dim AudioFile As New MCIPlayer("C:\Audio.wav")
' AudioFile.Play(AudioPlayMode.BackgroundLoop)

' Dim sb As New System.Text.StringBuilder
' sb.AppendLine("Filename: " & AudioFile.Filename)
' sb.AppendLine("State...: " & AudioFile.State.ToString)
' sb.AppendLine("Mode....: " & AudioFile.PlaybackMode.ToString)
' sb.AppendLine("Channels: " & CStr(AudioFile.Channels))
' sb.AppendLine("Duration: " & TimeSpan.FromMilliseconds(AudioFile.Duration).ToString("hh\:mm\:ss"))

' MessageBox.Show(sb.ToString, "MCI Player", MessageBoxButtons.OK, MessageBoxIcon.Information)

' AudioFile.Stop()

#End Region

#Region " MCI Player "

''' <summary>
''' Play Wave, MP3 or MIDI files
''' </summary>
Public Class MCIPlayer
    Inherits NativeWindow
    Implements IDisposable

#Region " API "

    ''' <summary>
    ''' Sends a command string to an MCI device.
    ''' The device that the command is sent to is specified in the command string.
    ''' </summary>
    ''' <param name="command">
    ''' Pointer to a null-terminated string that specifies an MCI command string.
    ''' For a list, see Multimedia Command Strings.
    ''' </param>
    ''' <param name="buffer">
    ''' Buffer that receives return information.
    ''' If no return information is needed, this parameter can be NULL.
    ''' </param>
    ''' <param name="bufferSize">
    ''' Size, in characters, of the return buffer specified.
    ''' </param>
    ''' <param name="hwndCallback">
    ''' Handle to a callback window if the "notify" flag was specified in the command string.
    ''' </param>
    <System.Runtime.InteropServices.
    DllImport("winmm.dll", SetLastError:=True)>
    Private Shared Function mciSendString(
            ByVal command As String,
            ByVal buffer As System.Text.StringBuilder,
            ByVal bufferSize As Integer,
            ByVal hwndCallback As IntPtr
    ) As Integer
    End Function

#End Region

#Region " Variables "

    ''' <summary>
    ''' The form to manage Windows Messages.
    ''' </summary>
    Private WithEvents formulary As Form = Nothing

    ''' <summary>
    ''' Indicates the audio play command of mciSendString.
    ''' </summary>
    Private PlayCommand As String = String.Empty

    ''' <summary>
    ''' Buffer that receives return information.
    ''' </summary>
    Private ReturnInfo As New System.Text.StringBuilder() With {.Capacity = 255}

    ''' <summary>
    ''' The current filename of the file that is to be played.
    ''' </summary>
    Private _filename As String = String.Empty

    ''' <summary>
    ''' Indicates the current playback mode.
    ''' </summary>
    Private _PlaybackMode As AudioPlayMode

    ''' <summary>
    ''' Flag to cancel the BackgroundLoop PlaybackMode.
    ''' </summary>
    Private CancelLoop As Boolean = False

#End Region

#Region " Properties "

    ''' <summary>
    ''' The current filename of the file that is to be played.
    ''' </summary>
    Public Property Filename() As String

        Get
            Return _filename
        End Get

        Set(ByVal value As String)

            If Not IO.File.Exists(value) Then
                Throw New IO.FileNotFoundException
                Exit Property
            End If

            _filename = value

        End Set

    End Property

    ''' <summary>
    ''' Gets che current Playback State.
    ''' </summary>
    Public ReadOnly Property State As PlaybackState
        Get
            mciSendString("status file mode", ReturnInfo, ReturnInfo.Capacity, IntPtr.Zero)
            Return [Enum].Parse(GetType(PlaybackState), ReturnInfo.ToString, True)
        End Get
    End Property

    ''' <summary>
    ''' Gets or sets the playback mode of the current file.
    ''' </summary>
    Public Property PlaybackMode As AudioPlayMode
        Get
            Return _PlaybackMode
        End Get
        Set(value As AudioPlayMode)
            _PlaybackMode = value
        End Set
    End Property

    ''' <summary>
    ''' Gets the channels of the file.
    ''' </summary>
    ReadOnly Property Channels() As Integer
        Get
            mciSendString("status file channels", ReturnInfo, ReturnInfo.Capacity, IntPtr.Zero)
            Return If(IsNumeric(ReturnInfo.ToString),
                      CInt(ReturnInfo.ToString),
                      -1)
        End Get
    End Property

    ''' <summary>
    ''' Gets the file duration in Milleseconds.
    ''' </summary>
    ReadOnly Property Duration() As Integer
        Get
            mciSendString("set file time format milliseconds", Nothing, 0, IntPtr.Zero)
            mciSendString("status file length", ReturnInfo, ReturnInfo.Capacity, IntPtr.Zero)
            Return If(String.IsNullOrEmpty(ReturnInfo.ToString), 0, CInt(ReturnInfo.ToString))
        End Get
    End Property

#End Region

#Region " Enumerations "

    ''' <summary>
    ''' Audio File playback state.
    ''' </summary>
    Public Enum PlaybackState As Short

        ''' <summary>
        ''' File is playing.
        ''' </summary>
        Playing = 0

        ''' <summary>
        ''' File is paused.
        ''' </summary>
        Paused = 1

        ''' <summary>
        ''' File is stopped.
        ''' </summary>
        Stopped = 2

    End Enum

    ''' <summary>
    ''' Windows Message Identifiers.
    ''' </summary>
    Public Enum KnownMessages As Integer

        ''' <summary>
        ''' Notifies an application that an MCI device has completed an operation.
        ''' MCI devices send this message only when the MCI_NOTIFY flag is used.
        ''' </summary>
        MM_MCINOTIFY = 953

    End Enum

#End Region

#Region " Constructor "

    ''' <summary>
    ''' Play Wave, MP3 or MIDI files.
    ''' </summary>
    ''' <param name="AudioFile">Indicates the filename of the media to play.</param>
    Public Sub New(ByVal AudioFile As String)

        ' Set the Audio file.
        Me.Filename = AudioFile

        ' Set the Formulary.
        Me.formulary = Form.ActiveForm

        ' Assign the form handle.
        SetFormHandle()

    End Sub

    ''' <summary>
    ''' Play Wave, MP3 or MIDI files.
    ''' </summary>
    ''' <param name="Formulary">Indicates the Form to assign the Handle.</param>
    ''' <param name="AudioFile">Indicates the filename of the media to play.</param>
    ''' <remarks></remarks>
    Public Sub New(ByVal Formulary As Form, ByVal AudioFile As String)

        ' Set the Audio file.
        Me.Filename = AudioFile

        ' Set the Formulary.
        Me.formulary = Formulary

        ' Assign the form handle.
        SetFormHandle()

    End Sub

#End Region

#Region " Public Methods "

    ''' <summary>
    ''' Plays the file that is specified as the filename.
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Play(ByVal PlayMode As AudioPlayMode)

        DisposedCheck()

        Select Case PlayMode

            Case AudioPlayMode.Background
                PlayCommand = "play file from 0"
                Me.PlaybackMode = AudioPlayMode.Background

            Case AudioPlayMode.BackgroundLoop
                PlayCommand = "play file from 0 notify"
                Me.PlaybackMode = AudioPlayMode.BackgroundLoop

            Case AudioPlayMode.WaitToComplete
                PlayCommand = "play file from 0 wait"
                Me.PlaybackMode = AudioPlayMode.WaitToComplete

        End Select

        ' Open command
        Select Case Me.Filename.Split(".").LastOrDefault

            Case "mp3"
                mciSendString(String.Format("open ""{0}"" type mpegvideo alias file", Me.Filename),
                              Nothing,
                              0,
                              IntPtr.Zero)

            Case "wav"
                mciSendString(String.Format("open ""{0}"" type waveaudio alias file", Me.Filename),
                              Nothing,
                              0,
                              IntPtr.Zero)

            Case "mid", "midi"
                mciSendString("stop midi", Nothing, 0, 0)
                mciSendString("close midi", Nothing, 0, 0)
                mciSendString(String.Format("open sequencer! ""{0}"" alias file", Me.Filename),
                              Nothing,
                              0, IntPtr.Zero)

            Case Else
                Throw New Exception("File type not supported.")
                [Close]()

        End Select

        ' Play command
        mciSendString(PlayCommand, Nothing, 0, If(PlaybackMode = AudioPlayMode.BackgroundLoop,
                                                  Me.Handle,
                                                  IntPtr.Zero))

    End Sub

    ''' <summary>
    ''' Pause the current playback.
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Pause()
        DisposedCheck()
        CancelLoop = True
        mciSendString("pause file", Nothing, 0, IntPtr.Zero)
    End Sub

    ''' <summary>
    ''' Resume the current playback if it is currently paused.
    ''' </summary>
    Public Sub [Resume]()
        DisposedCheck()
        If Me.State = PlaybackState.Paused Then
            CancelLoop = False
            mciSendString("resume file", Nothing, 0, IntPtr.Zero)
        End If
    End Sub

    ''' <summary>
    ''' Stop the current playback.
    ''' </summary>
    Public Sub [Stop]()
        DisposedCheck()
        CancelLoop = True
        mciSendString("stop file", Nothing, 0, IntPtr.Zero)
    End Sub

    ''' <summary>
    ''' Close the current file.
    ''' </summary>
    Public Overloads Sub [Close]()
        DisposedCheck()
        CancelLoop = True
        mciSendString("close file", Nothing, 0, IntPtr.Zero)
    End Sub

#End Region

#Region " Event Handlers "

    ''' <summary>
    ''' Assign the handle of the target form to this NativeWindow,
    ''' necessary to override WndProc.
    ''' </summary>
    Private Sub SetFormHandle() _
    Handles formulary.HandleCreated, formulary.Load, formulary.Shown

        Try
            If Not Me.Handle.Equals(Me.formulary.Handle) Then
                Me.AssignHandle(Me.formulary.Handle)
            End If
        Catch ' ex As InvalidOperationException
        End Try

    End Sub

    ''' <summary>
    ''' Releases the Handle.
    ''' </summary>
    Private Sub OnHandleDestroyed() _
    Handles formulary.HandleDestroyed

        Me.ReleaseHandle()

    End Sub

#End Region

#Region " Windows Messages "

    ''' <summary>
    ''' Processes Windows messages for this Window.
    ''' </summary>
    ''' <param name="m">
    ''' Contains the Windows Message parameters.
    ''' </param>
    Protected Overrides Sub WndProc(ByRef m As Message)

        MyBase.WndProc(m)

        If m.Msg = KnownMessages.MM_MCINOTIFY Then

            If Not CancelLoop Then
                Play(AudioPlayMode.BackgroundLoop)
            Else
                CancelLoop = False
            End If

        End If

    End Sub

#End Region

#Region " IDisposable "

    ''' <summary>
    ''' To detect redundant calls when disposing.
    ''' </summary>
    Private IsDisposed As Boolean = False

    ''' <summary>
    ''' Prevents calls to methods after disposing.
    ''' </summary>
    Private Sub DisposedCheck()
        If Me.IsDisposed Then
            Throw New ObjectDisposedException(Me.GetType().FullName)
        End If
    End Sub

    ''' <summary>
    ''' Disposes the objects generated by this instance.
    ''' </summary>
    Public Sub Dispose() Implements IDisposable.Dispose
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub

    ' IDisposable
    Protected Overridable Sub Dispose(IsDisposing As Boolean)

        If Not Me.IsDisposed Then

            If IsDisposing Then
                [Close]()
                Me.formulary = Nothing
                Me.ReleaseHandle()
                Me.DestroyHandle()
            End If

        End If

        Me.IsDisposed = True

    End Sub

#End Region

End Class

#End Region







Un pequeño ejemplo que hice para recordar el uso de una Task:

Código (vbnet) [Seleccionar]
#Region " TASK Example "

Public Class Form1

    ' NORMAL TASK USAGE:
    ' ------------------
    Private Task1 As Threading.Tasks.Task
    Private Task1CTS As New Threading.CancellationTokenSource
    Private Task1CT As Threading.CancellationToken = Task1CTS.Token

    Private Sub MyTask1(ByVal CancellationToken As Threading.CancellationToken)

        For x As Integer = 0 To 9999

            If Not CancellationToken.IsCancellationRequested Then
                Debug.Print("Task1: " & x)
            Else
                MsgBox(String.Format("Task1 Canceled at ""{0}""", x))
                Exit Sub
            End If

        Next x

    End Sub

    ' ANONYMOUS TASK METHOD:
    ' ---------------------
    Private Task2 As Threading.Tasks.Task
    Private Task2CTS As New Threading.CancellationTokenSource
    Private Task2CT As Threading.CancellationToken = Task2CTS.Token

    Private Delegate Function Task2Delegate(ByVal CancellationToken As Threading.CancellationToken)

    Private MyTask2 As Task2Delegate =
      Function(CancellationToken As Threading.CancellationToken) As Boolean

          For x As Integer = 0 To 9999

              If Not CancellationToken.IsCancellationRequested Then
                  Debug.Print("Task2: " & x)
              Else
                  MsgBox(String.Format("Task2 Canceled at ""{0}""", x))
                  Return False
              End If

          Next x

          Return True

      End Function

    Private Sub TaskTest() Handles MyBase.Shown

        ' Run an asynchronous Task.
        Task1 = Threading.Tasks.Task.Factory.StartNew(Sub() MyTask1(Task1CT), Task1CT)

        ' Wait 2 seconds (Just to demonstrate this example)
        Threading.Thread.Sleep(2 * 1000)

        ' Cancel the Task.
        Task1CTS.Cancel()

        ' Wait for the Task to finish the being cancelled.
        Task1.Wait()

        ' Show the task status
        MsgBox(Task1.Status.ToString) ' Result: RanToCompletion

        ' ReStart the Task1.
        Task1 = Threading.Tasks.Task.Factory.StartNew(Sub() MyTask1(Task1CT), Task1CT)

        ' Start the Task2
        Task2 = Threading.Tasks.Task.Factory.StartNew(Of Boolean)(Function() MyTask2(Task2CT), Task2CT)

        ' Wait for both Taks to finish their execution.
        Threading.Tasks.Task.WaitAll()

    End Sub

End Class

#End Region

#7625
Scripting / Re: Hola
7 Diciembre 2013, 18:11 PM
Bienvenido,
debes saber que están prohibidos ese tipo de títulos estúpidos como "Hola" y "Ayuda",
tampoco estaría demás que comentases que lenguaje tienes pensado usar para la labor.

Porfavor, corrige el post y lee estas normas: http://foro.elhacker.net/scripting/normas_del_tablon_leer_antes_de_postear-t201567.0.html

Saludos!
#7626
Windows / Re: Algo ilogico
7 Diciembre 2013, 03:35 AM
@topomanuel

Yo quiero pensar que lo que él quiso decir es que los programas originales no son portadores de virus (aunque seguro que más de uno llevará regalito incluido!),
como tu bien dices es bueno aclarar que cualquier archivo puede ser una fuente de virus o que también puede ser infectado por un tercero, indiferéntemente de cual sea la procedencia original del executable...

Saludos!
#7627
Windows / Re: Algo ilogico
7 Diciembre 2013, 03:19 AM
CitarAlgo ilogico

Sin ánimo de ofender, en mi opinión lo único que me parece ilógico es el razonamiento que has usado.

¿Es que acaso existe algún sistema de backup inteligente como para saber si los archivos que quieres copiar están infectados o no?,
¿Y los que se dedican al mundo del Malware y quieren hacer copias de seguridad de su Malware, que pasaría con ellos?.

Un usuario hace una copia de seguridad para salvaguardar ciertos archivos, no para tener la seguridad de que esos archivos estén libres de virus.

Si un usuario es un manazas que siempre acaba infectado por no sabe manejar su pc, ni 1 ni 100 copias de seguridad diferentes le van a salvar de la catástrofe, esto es así, aprendan a responsabilizarse de su PC instalando un antivirus, no haciendo copias de seguridad.

Además, la característica "Backup & Restore" de Windows es algo muy cutre y básico, no se le puede pedir más,
si quieres tener un mayor control sobre un backup se debe usar una aplicación profesional, ya que estas suelen tener caracteristicas donde poder especificar reglas, (Ejemplo de regla: Reemplazar archivos sólamente si el tamaño del nuevo archivo es mayor que el tamaño del antiguo.) y esto puede evitar en cierta manera que se omitan archivos indeseables al crear la copia de seguridad.

Saludos!
#7628
Citar
Código (vbnet,4,5) [Seleccionar]

Dim TextBoxCount As Short = -1
TextBoxCount = -1
'TextBoxCount += 1
TextBoxCount += 0
TextBoxes = {TextBox6, ...}

Todo eso me sacó de quizio.

No es necesario darle tantas vueltas,
Inicializa la variable con valor 0, y le sumas un valor de 1 al final del bloque del For, no al principio, así el primer elemento procesado será Textboxes(0), es decir, el Textbox5, o mejor dicho, el TextBox6, porque el Textbox5 lo has quitado del Array.

sub sumar

    TextBoxes = {TextBox5, TextBox6, ...}
   TextBoxCount = 0

   For X...

       select case...
       end select

       ' última orden:
       TextBoxCount +=1

   Next X

end sub


Saludos
#7629
Ya existe una zona dedicada al contenido multimedia ( Series - Películas - Música - Juegos - Programas ) donde se puede compartir albums de musica, maquetas echas por uno mismo, o lo que uno quiera, yo una vez compartí sesiones, pero creo que fue en el foro libre, que por cierto es también otro lugar donde pueden postear material echo por uno mismo (de su propiedad) porque eso no infringe ninguna norma...

Sobre la creación de música, eso si que lo apoyo (aunque mi voto no cuente un comino xD), estaría bien ver como la gente ayuda en una zona dedicada a la creación de Música con el FruityLoops, Cubase, Reason, y demás. Pero por otro lado siendo honestos, creo que el foro ya tolera demasiados temas que nada tienen que ver con el Hacking, no creo que vayan a tolerar uno más.

A ver lo que opinan los demás!

Saludos
#7630
En el método sumar, la variable TextBoxCount empieza a contar desde 1, 1 es el segundo elemento, por eso se salta el TextBox5.

Para corregirlo, borra esta linea del principio del bloque del For, y ponla al final del bloque:
Citar
Código (vbnet) [Seleccionar]
TextBoxCount += 1

EDITO:
O bien otra manera de solucionarlo puedes modificar esto:
Citar
Código (vbnet) [Seleccionar]
TextBoxCount = 0 ' Reseteo el valor a cero
Por esto otro:
Código (vbnet) [Seleccionar]
TextBoxCount = -1 ' Reseteo el valor a -1
Pero eso resulta algo confuso, mejor coloca la linea que te dije donde debe ir colocada.

saludos