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

#6901
En mi opinión, lo suyo sería usar la alternativa FlashWindowEx(tended) para tener un mayor control sobre como actua el flash y su personalización xD.

Ejemplo de uso, para flashear el icono de la barra de tareas hasta que la ventana se vuelva activa:
Código (vbnet) [Seleccionar]
Me.FlashWindow(Me.Handle, FlashFlags.TaskBar Or FlashFlags.Until_Foreground)

Te dejo el código completo que escribí, por si te sirve:

Código (vbnet) [Seleccionar]
    ''' <summary>
    ''' Flashes the specified window.
    ''' It does not change the active state of the window.
    ''' For more info see here:
    ''' http://msdn.microsoft.com/en-us/library/windows/desktop/ms679347%28v=vs.85%29.aspx
    ''' </summary>
    ''' <param name="pwfi">A pointer to a FLASHWINFO structure.</param>
    ''' <returns>
    ''' The return value specifies the window's state before the call to the FlashWindowEx function.
    ''' If the window caption was drawn as active before the call, the return value is nonzero.
    ''' Otherwise, the return value is zero.
    ''' </returns>
    <System.Runtime.InteropServices.DllImport("user32.dll")>
    Private Shared Function FlashWindowEx(
            ByRef pwfi As FLASHWINFO
    ) As <System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)> Boolean
    End Function

    ''' <summary>
    ''' Contains the flash status for a window and the number of times the system should flash the window.
    ''' For more info see here:
    ''' http://msdn.microsoft.com/en-us/library/windows/desktop/ms679348%28v=vs.85%29.aspx
    ''' </summary>
    <System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)>
    Public Structure FLASHWINFO

        ''' <summary>
        ''' The size of the structure, in bytes.
        ''' </summary>
        Public cbSize As UInteger

        ''' <summary>
        ''' A handle to the window to be flashed.
        ''' The window can be either opened or minimized.
        ''' </summary>
        Public hwnd As IntPtr

        ''' <summary>
        ''' The flash status.
        ''' </summary>
        Public dwFlags As FlashFlags

        ''' <summary>
        ''' The number of times to flash the window.
        ''' </summary>
        Public uCount As UInteger

        ''' <summary>
        ''' The rate at which the window is to be flashed, in milliseconds.
        ''' If dwTimeout is zero, the function uses the default cursor blink rate.
        ''' </summary>
        Public dwTimeout As UInteger

    End Structure

    ''' <summary>
    ''' Contains the flash status for a window.
    ''' </summary>
    <System.ComponentModel.Description("Enum used as 'FlashFlags' parameter in 'FlashWindow' function.")>
    <Flags>
    Public Enum FlashFlags As Integer

        ''' <summary>
        ''' Stop flashing.
        ''' The system restores the window to its original state.
        ''' </summary>   
        [Stop] = 0I

        ''' <summary>
        ''' Flash the window caption.
        ''' </summary>
        Caption = 1I

        ''' <summary>
        ''' Flash the taskbar button.
        ''' </summary>
        TaskBar = 2I

        ''' <summary>
        ''' Flash both the window caption and taskbar button.
        ''' This is equivalent to setting the 'Caption Or TaskBar' flags.
        ''' </summary>
        All = 3I

        ''' <summary>
        ''' Flash continuously, until the 'Stop' flag is set.
        ''' </summary>
        Until_Stop = 4I

        ''' <summary>
        ''' Flash continuously until the window comes to the foreground.
        ''' </summary>
        Until_Foreground = 12I

    End Enum

    ''' <summary>
    ''' Flashes the specified window.
    ''' It does not change the active state of the window.
    ''' </summary>
    ''' <param name="Handle">
    ''' Indicates the handle to the window to flash.
    ''' </param>
    ''' <param name="FlashFlags">
    ''' Indicates the flash flags.
    ''' </param>
    ''' <param name="FlashCount">
    ''' Indicates the number of times to flash the window.
    ''' </param>
    ''' <param name="FlashDelay">
    ''' Indicates the rate at which the window is to be flashed, in milliseconds.
    ''' If dwTimeout is zero, the function uses the default cursor blink rate.
    ''' </param>
    ''' <returns>
    ''' The return value specifies the window's state before the call to the FlashWindowEx function.
    ''' If the window caption was drawn as active before the call, the return value is nonzero.
    ''' Otherwise, the return value is zero.
    ''' </returns>
    Public Function FlashWindow(ByVal [Handle] As IntPtr,
                                ByVal FlashFlags As FlashFlags,
                                Optional ByVal FlashCount As UInteger = UInteger.MaxValue,
                                Optional ByVal FlashDelay As UInteger = 0UI) As Boolean

        Dim fInfo As New FLASHWINFO()

        With fInfo

            .cbSize = Convert.ToUInt32(System.Runtime.InteropServices.Marshal.SizeOf(fInfo))
            .hwnd = [Handle]
            .dwFlags = FlashFlags
            .uCount = FlashCount
            .dwTimeout = FlashDelay

        End With

        Return FlashWindowEx(fInfo)

    End Function


Saludos
#6902
Cita de: Tzhed\ Kyperf/ en 29 Junio 2014, 15:57 PM
La cosa es, si el número 'límite' de combinaciones es X, ¿como se han se elegir las combinaciones exactamente? es decir, que criterio debe seguir la función que genera números para saltar por ejemplo de 1-8-10-11-23-43 a 1-28-30-33-34-35.

Buena pregunta, siempre me ha traido de cabeza este problema del compañero @Luis xD.

A ver si hoy es el dia en que resuelvo lo que precisas ;):

Output:

01 | 02 | 09 | 27 | 33 | 49
---------------------------
01 | 03 | 09 | 20 | 33 | 45
---------------------------
01 | 07 | 08 | 13 | 36 | 42
---------------------------
01 | 07 | 08 | 18 | 19 | 35
---------------------------
01 | 07 | 14 | 16 | 36 | 48
---------------------------
01 | 07 | 24 | 28 | 33 | 47
---------------------------
01 | 09 | 11 | 13 | 28 | 46
---------------------------
01 | 11 | 15 | 19 | 21 | 34
---------------------------
02 | 03 | 13 | 40 | 49 | 50
---------------------------
02 | 06 | 10 | 30 | 36 | 45
---------------------------
02 | 12 | 23 | 30 | 40 | 44
---------------------------
02 | 21 | 25 | 30 | 38 | 45
---------------------------
03 | 04 | 05 | 06 | 38 | 46
---------------------------
03 | 04 | 08 | 24 | 28 | 44
---------------------------
03 | 06 | 12 | 18 | 30 | 49
---------------------------
03 | 07 | 25 | 27 | 32 | 45
---------------------------
03 | 10 | 22 | 40 | 44 | 50
---------------------------
03 | 11 | 25 | 26 | 29 | 33
---------------------------
03 | 12 | 25 | 34 | 35 | 36
---------------------------
03 | 13 | 23 | 31 | 36 | 50
---------------------------
03 | 17 | 19 | 43 | 44 | 46
---------------------------
03 | 21 | 24 | 29 | 31 | 48
---------------------------
04 | 05 | 13 | 25 | 37 | 46
---------------------------
04 | 07 | 19 | 24 | 33 | 40
---------------------------
04 | 09 | 13 | 29 | 32 | 40
---------------------------
04 | 17 | 23 | 37 | 39 | 45
---------------------------
04 | 25 | 28 | 35 | 36 | 41
---------------------------
05 | 07 | 14 | 18 | 20 | 38
---------------------------
05 | 09 | 20 | 25 | 29 | 35
---------------------------
05 | 13 | 21 | 29 | 38 | 50
---------------------------
05 | 15 | 16 | 21 | 37 | 43
---------------------------
05 | 15 | 20 | 22 | 26 | 29
---------------------------
05 | 19 | 21 | 39 | 41 | 46
---------------------------
06 | 07 | 13 | 15 | 20 | 44
---------------------------
06 | 08 | 27 | 28 | 31 | 39
---------------------------
06 | 09 | 22 | 23 | 37 | 42
---------------------------
06 | 09 | 23 | 36 | 40 | 47
---------------------------
06 | 12 | 23 | 29 | 35 | 47
---------------------------
07 | 08 | 26 | 31 | 40 | 41
---------------------------
07 | 11 | 14 | 37 | 38 | 45
---------------------------
07 | 11 | 15 | 19 | 23 | 36
---------------------------
07 | 11 | 18 | 27 | 44 | 46
---------------------------
07 | 13 | 18 | 30 | 31 | 38
---------------------------
08 | 12 | 17 | 26 | 48 | 49
---------------------------
08 | 23 | 24 | 25 | 32 | 47
---------------------------
08 | 26 | 28 | 37 | 39 | 44
---------------------------
09 | 10 | 14 | 22 | 33 | 49
---------------------------
09 | 11 | 18 | 19 | 38 | 40
---------------------------
09 | 11 | 18 | 21 | 38 | 48
---------------------------
09 | 13 | 20 | 29 | 37 | 45
---------------------------
09 | 13 | 22 | 30 | 37 | 43
---------------------------
09 | 14 | 15 | 27 | 44 | 45
---------------------------
10 | 20 | 37 | 39 | 41 | 49
---------------------------
11 | 13 | 20 | 22 | 24 | 49
---------------------------
11 | 14 | 16 | 23 | 45 | 48
---------------------------
11 | 17 | 19 | 21 | 25 | 45
---------------------------
12 | 13 | 23 | 24 | 32 | 48
---------------------------
12 | 19 | 24 | 37 | 38 | 42
---------------------------
12 | 25 | 29 | 30 | 44 | 46
---------------------------
13 | 14 | 19 | 24 | 34 | 40
---------------------------
13 | 16 | 21 | 29 | 33 | 40
---------------------------
13 | 22 | 23 | 29 | 35 | 49
---------------------------
14 | 15 | 27 | 30 | 33 | 41
---------------------------
14 | 18 | 23 | 42 | 45 | 47
---------------------------
14 | 21 | 27 | 39 | 43 | 47
---------------------------
15 | 19 | 28 | 31 | 38 | 40
---------------------------
15 | 20 | 27 | 35 | 42 | 45
---------------------------
16 | 18 | 21 | 30 | 49 | 50
---------------------------
16 | 23 | 24 | 38 | 45 | 48
---------------------------
19 | 30 | 42 | 43 | 44 | 49
---------------------------
20 | 22 | 26 | 33 | 40 | 41
---------------------------
21 | 29 | 31 | 38 | 47 | 48
---------------------------
22 | 29 | 31 | 34 | 45 | 47
---------------------------
23 | 26 | 29 | 31 | 35 | 38
---------------------------
23 | 28 | 30 | 33 | 39 | 50
---------------------------
23 | 36 | 43 | 44 | 46 | 49
---------------------------
24 | 28 | 35 | 37 | 45 | 48
---------------------------
25 | 31 | 35 | 37 | 39 | 46
---------------------------
28 | 30 | 36 | 43 | 48 | 50
---------------------------


Código:
(Copiar, pegar, y compilar)
Código (vbnet) [Seleccionar]
Public Class ComboTest : Inherits Form

#Region " Objects, Vars "

    ' La Class "Random", es necesaria para desordenar una colección
    ' y esta declaración tiene que ir siempre fuera de cualquier Sub.
    Private ComboRandomizer As New Random

    ' El control que creo en tiempo de ejecución, donde mostraré las combinaciones.
    Private rtb As New RichTextBox With
            {
              .Dock = DockStyle.Fill,
              .Font = New Font("Lucida Console", 10.0F)
            }

    ' Una "palanca" para habilitar/deshabilitar el bloque de depuración.
    Private EnableDebug As Boolean = False

    ' Instancio una lista donde iremos guardando cada combinación obtenida.
    Private Combos As New List(Of Integer())

    ' Otra lista donde le daré el formato deseado a los números.
    Dim ComboStrings As List(Of String) = Nothing

    ' El máximo de combinaciones.
    Private Property MaxCombos As Integer = 80I

    ' El máximo de longitud para cada combinación.
    Private Property MaxComboLength As Integer = 6I

    ' Los números "guías" que usaremos para rellenar cada combinación.
    Private ReadOnly Numbers As Integer() =
        (From n As Integer In
         ("01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-" &
          "21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-" &
          "41-42-43-44-45-46-47-48-49-50"
         ).Split({"-"}, StringSplitOptions.RemoveEmptyEntries)).ToArray

#End Region

#Region " Constructors "

        ' De este Sub no hagas caso, es el constructor del Form.
    Public Sub New()

        ' This call is required by the designer.
        ' Add any initialization after the InitializeComponent() call.
        InitializeComponent()

        ' Añado el control al Form.
        Me.Controls.Add(rtb)

    End Sub

#End Region

#Region " Event-Handlers "

    Private Sub ComboTest() Handles MyBase.Load

        Me.DoCombos()
        Me.PrintCombos()

    End Sub

#End Region

#Region " Methods "

    ' La función que se encarga de desordenar y devolverte una combinación.
    ' By Elektro.
    Friend Function GetRandomCombination(Of T)([Collection] As IEnumerable(Of T),
                                               [Length] As Integer) As IEnumerable(Of T)

        Return (From Item As T In [Collection] Order By ComboRandomizer.Next Take [Length]).ToArray

    End Function

    Private Sub DoCombos()

        ' Añadir combinaciones a la lista, hasta que la lista tenga 'MaxComboLength' (80) elementos.
        Do Until Combos.Count = (MaxCombos - 1)

            ' Obtengo una combinación.
            Dim tmpCombo As Integer() = Me.GetRandomCombination(Of Integer)(Numbers, MaxComboLength)

            ' Ordeno los elementos de la combinación, de menos a mayor.
            Array.Sort(tmpCombo)

            ' Añado la combinación a la lista.
            Combos.Add(tmpCombo)

        Loop

        ' Ordeno los elementos de la lista, basandome en el orden de los elementos de cada Array.
        ' NOTA: Puede tener fallos al ordenar, no aseguro que el orden sea perfecto.
        Combos = (From Combo As Integer() In Combos Order By Convert.ToDecimal(String.Join("", Combo)) Ascending).ToList
        Combos = (From Combo As Integer() In Combos Order By Combo.First Ascending).ToList

        ' Además, creo utra lista Strings, para darle formato a cada combo numérico,
        ' y añadirle así un "0" a los números del "1" al "9" y que quede más bonito en la previsualización xD.
        Me.ComboStrings =
            (From Combo In Combos
             Select (String.Join(" | ", From Value As String In Combo
                                       Select If(Value.Length = 1, "0" & Value, Value)))).ToList

#If DEBUG Then

        ' El bloque de depuración.
        ' Este bloque entero es para testear el formato que le quieras dar.
        If Me.EnableDebug Then

            Dim sb As New System.Text.StringBuilder

            With sb

                For Index As Integer = 0 To (MaxCombos - 1)

                    sb.AppendLine(String.Format("Combo sin formato:"))
                    sb.AppendLine(String.Join(", ", Combos(Index)))
                    sb.AppendLine()
                    sb.AppendLine(String.Format("Combo con formato:"))
                    sb.AppendLine(String.Join(", ", ComboStrings(Index)))

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

                    sb.Clear()

                Next Index

            End With

        End If

#End If

    End Sub

    Private Sub PrintCombos()

        ' Muestro los Combos en el control.
        With Me.rtb

            .SuspendLayout()
            For Each Combo As String In Me.ComboStrings
                .AppendText(Combo)
                .AppendText(Environment.NewLine & New String("-", Combo.Length) & Environment.NewLine)
            Next Combo
            .ResumeLayout()

            .Select(0, 0)

        End With

    End Sub

#End Region

End Class


PD: ¿Era eso lo que querías o tampoco? xD.

Saludos
#6903
Además de ser algo "imposible", no se trata de un programa opensource, los terminos de uso de la aplicación seguramente prohibiran la ingeniría inversa es decir cualquier tipo de manipulación intencionada, y no se si llegará a ser incluso ilegal.

Aparte, se que lo pides sin maldad pero nadie va a desarrollarte un programa de tal magnitud (el hardware necesario para testear, el desarrollo de los algoriitmos y el chequeo de los controles de errores, las semanas o meses de tiempo invertido en hacer algo que no sea una chapuza, casi nada!), solamente por sentirse un buen samaritano para hacerte un favor, a menos que pagues lo que vale ese trabajo.

De todas formas parece que alguien se ha molestado en compartir un proyecto sencillo de usar y que parece eficiente, eso si, trabaja con imagenes estáticas, pero puedes empezar a trastear por aquí:
http://www.codeproject.com/Tips/561129/Face-Detection-with-Lines-of-Code-VB-NET

Saludos
#6904
Los símbolos <> están reservados por el lenguaje, simplemente debes escaparlos.

echo #include ^<loquesea^> > archivo.txt

=> Tutorial extendido de aprendizaje Batch By Elektro.

Citar
  • ^

La exclusión de caracteres, una de las cosas que más errores puede ocasionarte...

Hay que tener en mente cuales son todos los operadores conflictivos de Batch, por conflictivos me refiero a los operadores que no se pueden usar en cadenas sin excluir dicho operador.

Un ejemplo:
@Echo off
Echo Me & You
Pause >NUL




En el ejemplo hago uso del operador & pero no lo estoy haciendo correctamente, debido a las circunstancias tenemos que excluirlo (escaparlo).

Esta es la manera correcta:

@Echo off
Echo Me ^& You
Pause >NUL


#6905
Hola Luis

Para convertir un número a positivo puedes usar el método Math.Abs()
Y lo que quieres hacer cuando un número es '0' no está del todo claro.

Te sugiero que apliques tus propias reglas iterando los elementos del Array, por ejemplo:

Código (vbnet) [Seleccionar]
       Dim num1 As Integer = -50I '  Un numero negativo para probar este ejemplo.

       Dim Result1 As Integer() = {num1 - 1, num1 - 2, num1 + 3, num1 + 6, num1 + 8}

       For Index As Integer = 0 To (Result1.Count - 1)

           Select Case Result1(Index)

               Case Is = 0 ' El valor es 0.
                   ' Hacer algo con el número 0 aquí.
                   ' Result1(Index) = Not 0

               Case Is < 0 ' El valor es negativo.
                   ' Lo convierto a positivo.
                   Result1(Index) = Math.Abs(Result1(Index))

           End Select '/ Result1(Index)


       Next Index

        Result1 = Result1.Distinct().ToArray
       Array.Sort(Result1)


saludos
#6906
Aparte de lo comentado por @engel lex:

eficacia = el tiempo que estés dispuesto a invertir para conseguir la contraseña dejando al algoritmo hacer su función, pueden ser horas, dias, semanas, meses...

Todo depende de la complejidad de la contraseña y del rendimiento de la aplicación que uses.

PD: Te recomiendo Advanced Archive Password Recovery http://www.elcomsoft.com/archpr.html

Saludos
#6907
Software / Re: Una pregunta
29 Junio 2014, 02:34 AM
El archivo de licencia de MBytes se almacena en el directorio "C:\ProgramData\Malwarebytes\Malwarebytes Anti-Malware\Configuration\license.conf", siempre puedes copiarlo y pegarlo en una futura actualización del producto.

PD: De todas formas, una desinstalación de MBytes no elimina el contenido de este directorio, por lo que SI que debería preservar TODA la configuración al reinstalarlo o actualizarlo, no lo afirmo porque me pide reiniciar para completar la reinstalación y ahora mismo no me apetece reiniciar xD.

Saludos
#6908
Hombre, si te preocupa el tamaño entonces debo decir que el compañero @engel lex se ha pasado un pelín (de largo) con las aproximaciones genericas de tamaño, puedes grabar 180 minutos a 1080p y no tiene porque sobrepasar digamos los 5 Gb consiguiendo una calidad visual aceptable, todo dependerá de los factores que utilices al codificar (formato, resolución, bitrate, color de imagen, captura de audio, etc).

¿grabar 3 horas en 1 GB?, poder se puede, pero por supuesto prescindiendo de MUCHA calidad de imagen.

Y si buscas un programa donde puedas especificar un temporizador de grabación, es decir, para que deje de grabar a los 180 minutos, pues la verdad es que lo desconozco, pero siempre puedes recurrir a la utilización de algun script que haga "X" acción pasado "Y" minutos, y no necesita grandes conocimientos de programación.

Saludos
#6909
Cita de: owl-eyes en 28 Junio 2014, 19:48 PMwindows 7 ultimate es mejor en el software porque posee mayor "estabilidad"

windows 8.1 profesional debe instalar. Porque posee la mayor estabilidad y seguridad que los dema's

Menudas chorradas dices colega, una tras otra en cada comentario que he leido a lo largo de este y otros temas (lo digo sin ánimo de ofender, pero es que no te cortas)...

Lo peor de todo es que veo que cuando alguien te da una opinión contraria la tuya, no la respetas e intentas humillarle con comentarios e imagenes ofensivas, ¿a tus espuestas las llamas "respuestas mentadas"?, ni siquiera creo que ese adjetivo exista en el diccionario, en fin, lo que hay que ver.

Las ediciones más avanzadas de Windows son mejores en relación al producto, de eso no cabe duda, pero no tienen que serlo en relación al consumidor, esto quiere decir que, la mejor edición de Windows siempre será aquella que mejor se adapte a tus necesidades, como ya te ha comentado el compañero @engel lex (y con toda la razón del mundo) ¿cuantas características usarías de la versión Enterprise?, ¿para que quieres algo que trae un abanico entero de comodidades que no te resultan necesarias? ...¿a eso lo llamas "mejor versión"?, pues que sepas que en realidad todas esas características que nunca vas a llegar a usar pero que consumen y consumen con sus servicios activos simplemente será más perjudicial para tu sistema que si supieses elegir con cabeza una edición que si se adapte a tu entorno.

y ya, por último, te sugiero que revises una tabla de diferencias (de las miles que puedes encontrar en Google) de las características entre las distintas ediciones de Windows 8/8.1, te serviría para estar mejor informado de lo que hables en un futuro.


Saludos!
#6910
Multimedia / Re: Hola! ¿como cortar video?
29 Junio 2014, 01:56 AM
Hola

1. Dices que tienes un video pero quieres cortarle AUDIO (no se si los demás se han dado cuenta de ese pequeño detalle...) entonces si realmente has expresado correctamente tus necesidades, lo que debes hacer es retrasar la pista de audio 3 seg, lo que puedes hacer en cualquier programa como avidemux, virtualdub, mkvtoolnix, etc... elige un programa, y cuando hayas decidido, si tienes dudas te explico como hacerlo.

2. Si tu intención es recortar tanto video como audio al mismo tiempo, avidemux es simple y sencillo, pero todo depende del formato de video y su codificación, si los keyframe de ese video duran 3 segundos, entonces podrás cortar 3 segundos con mucha mayor precisión que si los keyframes fuesen de 10 segundos, porque para cortar, se necesita un frame de referencia.

Saludos