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

#7341
Multimedia / Re: Alternativa a DVDFab
3 Febrero 2014, 07:49 AM
Hola

Revivo este post para comentar que por fin encontré la alternativa perfecta al problemático DVDFAB (hasta ayer seguía sin encontrar un software que lo pudiese igualar xD).

Aiseesoft DVD Copy

y

Aiseesoft Blu-Ray Copy

(Luego están los productos "Ripper" y "Converter" de la misma familia, que hacen otras cosas muy distintas...y son los que yo probé en su dia)

Como su nombre indica, obviamente uno trabaja DVD's y el otro BD's, es prácticamente como la característica de copiado del DVDFAB, puedes abrir una carpeta que contenga un DVD/BD, seleccionar la película principal, customizar las pistas de audio, video, y subtitulos que quieres ripear, eliminar el menú de la película ...todo de forma muy cómoda.

...En fin, dos programas muy buenos (y de pago) que funcionan perféctamente en Windows 8.1 sin congelar el PC, a diferencia del DVDFAB.

Un saludo!
#7342
Cita de: SpesMod en  2 Febrero 2014, 19:34 PMcomo lo ejecuto y le mando estos parametros (archivo y 5) para que los procese?

No te lo tomes a mal pero para venir de un lenguaje como C/C++ te veo bastante perezoso para Googlear información básica (el manejo de argumentos en X lenguaje) :¬¬ ~> http://ss64.com/vb/arguments.html

Entonces deberías reemplazar esta orden:
Citar
Código (vb) [Seleccionar]
WScript.Echo Caesar("hola",5)

Por esta otra:
Código (vb) [Seleccionar]
WScript.StdOut.Write(Caesar(WScript.Arguments(0), WScript.Arguments(1)))

Para llamar al Script y redireccionar la salida del Script a un archivo de texto puedes hacerlo así:
Código (dos) [Seleccionar]
Cscript.exe //NoLogo "Caesar.vbs" "hola" 5 > "RESULTADO.TXT"

Como viste en el ejemplo uso un string como parámetro y no un archivo de texto "fuente.txt", la razón es que usar archivos de texto en mi opinión es primitivo, estoy convencido de que podrías trabajar diréctamente con Strings sin necesidad de crear/manipular archivos secundarios en el HDD, de todas formas te muestro los cambios que deberías hacer al Script VBS para tomar un archivo de texto como primer argumento:

Código (vb) [Seleccionar]
' Cojo la primera linea del archivo que le pases como argumento.
str = Split(CreateObject("Scripting.FileSystemObject"). _
OpenTextFile(WScript.Arguments(0), 1).ReadAll(), vbnewline)(0)

WScript.StdOut.Write(Caesar(str, WScript.Arguments(1)))


En la consola...:
Código (dos) [Seleccionar]
Cscript.exe //NoLogo "Caesar.vbs" "FUENTE.TXT" 5 > "RESULTADO.TXT"

Saludos!
#7343
Hola

CitarREG ADD HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /v "NV Hostname" /t REG_SZ /d %1 " NOMBRE DEL NUEVO HOST " /F 1>NUL

En todas las órdenes estás usando el parámetro especial %1, si elimimnas eso en cada linea en teoría ya te deberian funcionar.
Aquí tienes un mini ejemplo y una pregunta parecida ~> http://foro.elhacker.net/scripting/dar_nombre_a_la_pc_con_la_mac_address-t404488.0.html;msg1903396#msg1903396


Sobre el funcionamiento del comando REG no entraré en detalles ...puedes aprender el uso de cada parámetro leyendo la ayuda del comando en la consola:
REG /?

Saludos
#7344
Cita de: SpesMod en  2 Febrero 2014, 18:19 PMes un chancay de a 20 en C/C++ pero aqui en Bat se me hace dificil

Claro, Batch no dispone prácticamente de NADA util ni muhco menos de métodos/comandos para manejar ASCII o HEX para rotar caracteres (aunque se pueden improvisar cosas con el viejo truco del Exit Code).

¿Y si utilizas VBS (que lo puedes ejecutar como si se tratase de un archivo Bat) para escribir tu método de cifrado Caesar?:

Cita de: http://demon.tw/programming/vbs-caesar.html
Código (vb) [Seleccionar]
WScript.Echo Caesar("hola",5)

Function Caesar(str,rotation)

Dim length,char,i
Caesar = ""
length = Len(str)
For i = 1 To length
char = Mid(str,i,1)
If char >= "A" And char <= "Z" Then
char = Asc("A") + (Asc(char) - Asc("A") + rotation) Mod 26
Caesar = Caesar & Chr(char)
ElseIf char >= "a" And char <= "z" Then
char = Asc("a") + (Asc(char) - Asc("a") + rotation) Mod 26
Caesar = Caesar & Chr(char)
Else
Caesar = Caesar & char
End If
Next

End Function

Saludos
#7345
No se si te refieres a hacer algo como esto, porque el ejemplo que has dado con datos de typo Byte , con varios 'For Range' "fijos" del 1 al 4 y esa condicional me sigue pareciendo que tiene poco que ver con la pregunta real.

Este código combina todos los elementos de un Array de forma aleatoria, el resultado (en tu caso) son combinaciones de números desordenados.

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

   ''' <summary>
   ''' Tu array numérico.
   ''' </summary>
   Private IntArray As Integer() =
   {
       10I, 20I, 30I, 40I, 50I, 60I, 70I, 80I, 90I
   }

   Private Sub Button1_Click() Handles Button1.Click

       TextBox2.Text = String.Join("; ", RandomizeArray(IntArray))
       ' TextBox2.Text = String.Join(Nothing, RandomizeArray(arr))

   End Sub

   ' By Elektro
   '
   ''' <summary>
   ''' Randomizes the elements of the given Collection.
   ''' </summary>
   ''' <typeparam name="T"></typeparam>
   ''' <param name="Collection">Indicates the Collection to randomize.</param>
   ''' <returns>IEnumerable{``0}.</returns>
   Public Function RandomizeArray(Of T)(ByVal Collection As IEnumerable(Of T)) As IEnumerable(Of T)

       Dim Randomizer As New Random
       Return (From Item As T In Collection Order By Randomizer.Next).ToArray

   End Function

End Class
#7346
Pero Luis, ¿has leido el título del snippet? xD, ese método no tiene nada que ver con combinar Arrays (y supongo que después de saber eso ya no te interesará el funcionamiento de las órdenes de LINQ).
( Tienes razón el Snippet lo publiqué yo, pero no es de mi propiedad. )

Las #Regiones sirven básicamente para organizar el código, si te fijas, en la IDE puedes expandir/colapsar una región, y así todo queda más armónico y profesional, no tiene ninguna otra utilidad ...son prácticamente comentarios que puedes eliminar.

No sé que más decirte porque semanas atrás ya te habré puesto unos 1.000 códigos diferentes para unir un Array y mostrarlo en un Listbox, el problema hace tiempo que debería estar solucionado pero como no es así postea el código que tienes y el problema que tienes con ese código porque sin problema no puede haber soluciones. ¿Que es lo que pretendes hacer?.

EDITO:
Cita de: luis456 en  2 Febrero 2014, 13:14 PMAAA y ya estoy con esto del insert code que no me sale joe....

¿Te refieres a insertar un código en el post?, pues para ser sincero yo te he editado todos y cada uno de los códigos que has publicado hasta el día de hoy xD, me das trabajo, no porque hayas infringido las normas ni nada por el estilo, es que símplemente me gusta ver un código con su sintaxis correcta (que nunca la usas xD), por eso no te he dicho nada porque las normas no las has infringido, no hay problema, aunque podrías hacer el favor de usar el tag más apropiado con tanto código que publicas:

[code = vbnet] Tu código [ /code]

Saludos!
#7347
Reinicializar el escritorio de forma correcta en Windows 8.1 cuando un programa de terceros mata el Explorer.

Hoy me encontré en una situación algo extraña, necesitaba instalar un programa de terceros ...un reemplazamiento del botón de inicio apra Windows 8, y necesito que este proceso sea automatizado, pero al instalar este programa de forma silenciosa al terminar la instalación se mataba de forma automática el explorer.exe ...ya que el instalador así lo requiere, desaparecia el fondo, el taskbar, el explorer, quedando visible sólamente un fondo de un color solido.

La solución manual a este problema (al cual me he enfreentado muchas veces) es tan simple como abrir el administrador de tareas para ejecutar el explorer.exe, o hacerlo desde la consola de windows (CMD), pero como ya dije necesitaba automatizar la tarea así que intenté hacerlo desde la CMD, el problema es que al parecer esto no es suficiente Windows 8/8.1 (Desde la CMD).

...Por más que intenté ejecutar de forma automatizada el explorer.exe después de la instalación de este software sólamente se abria una ventana del explorer, quiero decir... los elementos del escritorio no se reinicializaban (taskbar, wallpaper, explorer...), y esa es la razón de porque he escrito esta pequeñísima mini-utilidad en VB.NET la cual me ha resuelto el problema.

Aquí tienen el source y un ejemplo de uso real (la aplicación del ejemplo es solo para Windows 8.1) si probais el ejemplo hacedlo en una VM no en vuestro PC ~> http://www.mediafire.com/download/nh8z5bkglh9se36/InitializeExplorer%20Sample.rar

El código fuente de la aplicación sólamente es esto, supongo que habrá escasas personas que tengan el mismo problema, pero bueno, que lo disfruten:

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

Imports System.IO
Imports System.Runtime.InteropServices
Imports RefreshExplorer.NativeMethods

#End Region

''' <summary>
''' Initializes a new instance of Explorer process.
''' </summary>
Module RefreshExplorer

#Region " P/Invoke "

   ''' <summary>
   ''' Class NativeMethods.
   ''' </summary>
   Friend Class NativeMethods

       ''' <summary>
       ''' Retrieves a handle to the top-level window whose class name and window name match the specified strings.
       ''' This function does not search child windows.
       ''' This function does not perform a case-sensitive search.
       ''' </summary>
       ''' <param name="lpClassName">
       ''' The class name or a class atom created by a previous call to the
       ''' RegisterClass or RegisterClassEx function.
       ''' The atom must be in the low-order word of lpClassName;
       ''' the high-order word must be zero.
       ''' If lpClassName points to a string, it specifies the window class name.
       ''' The class name can be any name registered with RegisterClass or RegisterClassEx,
       ''' or any of the predefined control-class names.
       ''' If lpClassName is NULL, it finds any window whose title matches the lpWindowName parameter.
       ''' </param>
       ''' <param name="zero">
       ''' The window name (the window's title).
       ''' If this parameter is NULL, all window names match.</param>
       ''' <returns>IntPtr.</returns>
       <DllImport("user32.dll", EntryPoint:="FindWindow", SetLastError:=True, CharSet:=CharSet.Unicode)>
       Public Shared Function FindWindowByClass(
           ByVal lpClassName As String,
           ByVal zero As IntPtr
       ) As IntPtr
       End Function

   End Class

#End Region

#Region " ReadOnly Strings "

   ''' <summary>
   ''' Indicates the directory where the Explorer process is located.
   ''' </summary>
   Private ReadOnly ExplorerDirectory As String =
       Environment.GetFolderPath(Environment.SpecialFolder.Windows)

   ''' <summary>
   ''' Indicates the filename of the process.
   ''' </summary>
   Private ReadOnly ExplorerFilename As String = "Explorer.exe"

   ''' <summary>
   ''' Indicates the desk Taskbar Class-name.
   ''' </summary>
   Private ReadOnly TaskBarClassName As String = "Shell_TrayWnd"

#End Region

#Region " Process "

   ''' <summary>
   ''' The explorer process.
   ''' </summary>
   Dim Explorer As New Process With
   {
    .StartInfo = New ProcessStartInfo With
                 {
                  .FileName = Path.Combine(ExplorerDirectory, ExplorerFilename),
                  .WorkingDirectory = My.Application.Info.DirectoryPath,
                  .UseShellExecute = True
                 }
   }

#End Region

#Region " Main "

   ''' <summary>
   ''' Defines the entry point of the application.
   ''' </summary>
   Sub Main()

       Select Case Convert.ToBoolean(CInt(FindWindowByClass(TaskBarClassName, Nothing)))

           Case False ' The Taskbar is not found.

               Try
                   Explorer.Start()
                   Console.WriteLine("Windows Explorer has been re-initialized successfully")
                   Environment.Exit(0)

               Catch ex As Exception
                   Console.WriteLine(ex.Message)
                   Debug.WriteLine(ex.Message)
                   Environment.Exit(1)

               End Try

           Case True ' The Taskbar is found.
               Console.WriteLine("Can't proceed, Windows Explorer is currently running. Exiting...")
               Environment.Exit(2)

       End Select

   End Sub

#End Region

End Module
#7348
Hola

Si estás seguro de que el número de lineas y el contenido nunca va a cambiar en ese archivo XML pues... entonces la solución que has pensado es viable, aunque no me parece la mejor solución, yo te recomendaría utilizar la aplicación XMLStarlet que sirve precísamente para la edición de archivos XML, aunque óbviamente deberás tratar el archivo como un archivo XML indicando el namespace el attributo a modificar y etc.

Por otro lado Batch es muy feo y lento, muy poco óptimo para estas tareas de procesamiento, te propongo una solución mejor utilizando VBS (El intérprete ya viene con Windows así que no tienes que instalar software en la empresa):

NOTA: Asegúrate de que la codificación de los archivos XML sea ANSI.

Código (vb) [Seleccionar]
' El Objeto 'FileSystemObject'.
Set FSO        = CreateObject("Scripting.FileSystemObject")

Directory      = ".\"             ' El directorio donde guardas los archivos.
FileExt        = "xml"            ' La extensión de los archivos a escanear.
LineToScan     = 7                ' La linea para identificar el archivo.
TextToMatch    = "Something"      ' El texto que buscar en la linea a examinar.
LineToReplace  = 22               ' El número de la linea a reemplazar.
TextToReplace  = "<New Password>" ' El nuevo texto de la linea a reemplazar.

' Recorro los archivos del directorio 'Directory'.
For Each File In FSO.GetFolder(Directory).Files

' Si la extensión del archivo es igual que 'FileExt'...
If LCase(FSO.GetExtensionName(File)) = LCase(FileExt) Then

' Creo un Array con el contenido del archivo (las lineas de texto).
Lines = Split(FSO.OpenTextFile(File, 1).ReadAll(), vbcrlf)

' Si la cantidad de elementos del Array (lineas) es igual o mayor que 'LineToReplace';
' y si además el texto de la linea 'LineToScan' es igual a 'TextToMatch'...
If (uBound(Lines) => (LineToReplace -1)) And _
  (LCase(Lines(LineToScan - 1)) = LCase(TextToMatch)) Then

' Reemplazo la linea 'LineToReplace' por el texto 'TextToReplace'.
Lines(LineToReplace -1) = TextToReplace

' Reemplazo el archivo original, con los cambios realizados.
FSO.CreateTextFile(File, 2).Write(Join(Lines, vbcrlf))

'' ...O Creo un nuevo documento en la misma carpeta del archivo original, con los cambios realizados.
' FSO.CreateTextFile(FSO.GetBaseName(File) & ".tmp", 2).Write(Join(Lines, vbcrlf))

' Detengo la iteración de los elementos, salgo del búcle.
Exit For ' // Each File In FSO.GetFolder(Directory).Files

End If ' // (uBound(Lines) => (LineToReplace -1)) And (LCase(Lines(LineToScan - 1)) = LCase(TextToMatch))

End If ' // LCase(FSO.GetExtensionName(File)) = LCase(FileExt)

Next ' // File

Wscript.Quit(0) ' Salisa exitosa: '0'


Modifícalo a tus necesidades,
Saludos!
#7349
Scripting / Re: Problema con Python
31 Enero 2014, 05:47 AM
En Py2 ' Print ' es una declaración pero en Py3 ' Print ' es una función, por lo tanto tienes que usar la sintaxis correcta (usar los paréntesis para pasarle los parámetros al método).

Código (python) [Seleccionar]
print("Hello World")

Más diferencias que debes saber ~> http://docs.python.org/3.0/whatsnew/3.0.html

Saludos!
#7350
Hola!

Tengo unas cuantas pistas de audio (archivos mp3) y quiero juntar todas las pistas de audio en 1 único archivo para añadirlo como pista de audio del video que quiero crear (para subirlo a youtube).

El problema es que no tengo "el video", es decir, me gustaría saber si me pueden ayudar a encontrar loops de animaciones DE TEMÁTICA ROCK para añadirlo como pista de video a mi video de youtube... ya que por más que intento buscar loops de videos no encuentro nada, ni de música en general, ni de rock, lo único que he encontrado gratis es esto :S http://www.youtube.com/watch?v=IPpzNQjaDsY , y los demás que encontré, son de pago.

También me gustaría saber si conocen una herramienta simple, algo que no sea tan pesado y profesional como el Sony Vegas o Adobe after effectssólamente para realizar la tarea de unir una pista de audio junto a un loop de video infinito... es decir, si tengo una pista de audio de 60 minutos, y un video de 2 minutos, ¿como puedo hacer un loop infinito de ese video para que ocupe los 60 minutos de duración de audio sin requerir el uso de utilidades que precisen mucha RAM?

Gracias por leer,
Saludos!