|
7481
|
Programación / Scripting / Re: Ayuda - Leer Caracter por Caracter
|
en: 2 Febrero 2014, 19:08 pm
|
es 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?: 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
|
|
|
7482
|
Programación / .NET (C#, VB.NET, ASP) / Re: Combinaciones letras o numeros
|
en: 2 Febrero 2014, 18:19 pm
|
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. 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
|
|
|
7483
|
Programación / .NET (C#, VB.NET, ASP) / Re: Combinaciones letras o numeros
|
en: 2 Febrero 2014, 15:51 pm
|
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:AAA 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!
|
|
|
7484
|
Programación / .NET (C#, VB.NET, ASP) / [APORTE] Reinicializar el escritorio de forma correcta en Windows 8.1 cuando...
|
en: 1 Febrero 2014, 01:45 am
|
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.rarEl 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: #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
|
|
|
7485
|
Programación / Scripting / Re: Consulta Batch encuentra archivo XML por contenido y modifica linea
|
en: 31 Enero 2014, 19:45 pm
|
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. ' 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!
|
|
|
7487
|
Media / Multimedia / ¿Cual seria la mejor forma de automatizar esta tarea para crea video musical?...
|
en: 30 Enero 2014, 05:32 am
|
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!
|
|
|
7488
|
Programación / Scripting / Re: Ayuda con VBS
|
en: 30 Enero 2014, 01:35 am
|
error tonto y muy simple pues seguia usando comillas dobles objcdo.subject = "TextRandom(n)" Como información adicional quiero explicarte que la comilla doble es un símbolo reservado por el lenguaje para encerrar un String (lo que resulta obvio ), entonces cuando quieras insertar comillas dobles en un string debes escapar el caracter, la forma de escaparlo es duplicar el símbolo (2 comillas dobles para encerrar el string y 2 comillas dobles para insertar una comilla doble dentro del string) y concatenar el texto con el operador "&", todo esto se haría así: objcdo.subject = """" & TextRandom(n) & """"
o bien: objcdo.subject = """" & "Texto Normal" & """"
O también puedes utilizar la función Chr que devuelve el caracter de un byte (0-255): objcdo.subject = chr(34) & TextRandom(n) & chr(34)
o bien: objcdo.subject = chr(34) & "Texto Normal" & chr(34)
Saludos.
|
|
|
7489
|
Programación / Scripting / Re: Ayuda con VBS
|
en: 29 Enero 2014, 23:14 pm
|
Bienvenido al foro. 1. Debes usar las etiquetas de código, porfavor lee las normas. 2. No existe ningún método que se denomine 'reemplace', en todo caso imagino que quieres decir 'replace', pero no entiendo el uso que le quieres dar en este escenario. 3. Para resolver la situación de poder usar una cadena de texto aleatoria como ' asunto', es tan simple como asignar los datos que devuelve el método ' TextRandom' a la propiedad ' Subject' del objeto ' objcdo'. objcdo.subject = TextRandom(n)
Te sugiero que leas un tutorial básico, no de VBS, sinó de programación orientada a objetos en general, ya que esto es lo más básico de todo ...y supongo que no querrás pasarte la vida necesitando ayuda para resolver cosas básicas . Saludos!
|
|
|
|
|
|
|