elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 [727] 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 ... 1254
7261  Programación / .NET (C#, VB.NET, ASP) / Re: [C#] VirusTotal Scanner 0.1 en: 28 Junio 2014, 03:32 am
Doddy, permiteme decirte que siempre has utilizado unos contrastes de colores demasiado "altos" para la vista, y yo siempre he respetado los gustos de los demás, pero es que esa GUI es la que más me ha jodido los ojos de todas las que hiciste xD, te lo digo desde el aprecio q sabes q te tengo.

Un saludo!
7262  Programación / .NET (C#, VB.NET, ASP) / Re: Necesito ayuda con unos textbox en .net en: 28 Junio 2014, 03:24 am
Puedes utilizar el método Except para llevar a cabo la tarea:

Código
  1. Dim Seriales1 As String = "_xxxxxxxx_zzzzzzzzz"
  2. Dim Seriales2 As String = "_xxxxxxxx_hhhhhhhh_zzzzzzzzz"
  3. Dim Seriales3 As String = String.Join("_", Seriales2.Split("_").Except(Seriales1.Split("_")))

Saludos
7263  Programación / .NET (C#, VB.NET, ASP) / Re: ARREGLOS VISUAL.NET en: 28 Junio 2014, 02:54 am
Reacuerdo haber solucionado un tema parecido para VisualBasicScript, quizás te sirva de algo: http://foro.elhacker.net/scripting/batch_obtener_nombre_con_extension-t410321.0.html;msg1926804#msg1926804

Tu metodología no me parece la mas idonea, más si estás empezando, ya que tanto For anidado y además especificando pasos solo puede acabar liandote,
te muestro otro enfoque más liviano que he ideado:



Código
  1.    ' Creo un Array para almacenar como referencia el rango de semanas GPS.
  2.    ' Al valor inicial hay que descontarle un '1' (1772) porque el índice de un array empieza por '0'.
  3.    Private ReadOnly GPSWeeks As Integer() =
  4.        Enumerable.Range(1773 - 1, 1825).ToArray
  5.  
  6.    ' Obtengo la cantidad de dias del año actual.
  7.    ' Esto lo hago por los años bisiestos, que tienen '1' día más (366).
  8.    Private ReadOnly TotalDaysInYear As Integer =
  9.        (From month As Integer In Enumerable.Range(1, 12)
  10.        Select DateTime.DaysInMonth(Now.Year, month)).Sum
  11.  
  12.    ' Ya estamos listos para iterar los elementos ...del modo que uno prefiera :), esto solo es un ejemplo:
  13.    Private Sub Test() Handles MyBase.Shown
  14.  
  15.        Dim sb As New System.Text.StringBuilder
  16.  
  17.        For DayOfYear As Integer = 1 To TotalDaysInYear ' (365 or 366)
  18.  
  19.            ' Obtengo la fecha exacta dado el número del día del año actual.
  20.            Dim DateOfYear As DateTime = New DateTime(Now.Year, 1, 1).AddDays(DayOfYear - 1)
  21.  
  22.            sb.AppendLine(String.Format("Day Of Year: {0}", CStr(DayOfYear)))
  23.            sb.AppendLine(String.Format("Date: {0}", CStr(DateOfYear)))
  24.            sb.AppendLine(String.Format("GPS Week: {0}", CStr(Me.GPSWeeks(DatePart(DateInterval.WeekOfYear, DateOfYear)))))
  25.  
  26.            MessageBox.Show(sb.ToString, "GPS Calendar Info - By Elektro",
  27.                            MessageBoxButtons.OK, MessageBoxIcon.Information)
  28.  
  29.            sb.Clear()
  30.  
  31.        Next DayOfYear
  32.  
  33.    End Sub



@engel lex

Porfavor, ya que tienes el detalle de llevar las normas del foro en tu firma, la próxima vez podrías intentar respetar la utilización de las etiquetas GeShi, no es un muy buen ejemplo :P...
7264  Programación / .NET (C#, VB.NET, ASP) / Re: AYUDA Agilizar y reducir código. VB.NET Framework 4.5 en: 3 Mayo 2014, 02:51 am
Una manera simple:

Código
  1.    Private Sub Test()
  2.  
  3.        Dim Amount As Integer = -0I
  4.        Dim Unknown As Object = " 5 "
  5.  
  6.        ' No uses el método 'Val()' para validar, es algo prehistórico ...de VB6.
  7.        Integer.TryParse(Convert.ToString(Unknown).Trim, Amount)
  8.  
  9.        Dim Buttons As List(Of Button) =
  10.            GetDynamicControls(Of Button)(Collection:=Me.Controls,
  11.                                          NamePattern:="Button",
  12.                                          NameRange:=Enumerable.Range(1, Amount)) ' From Button1 To Button5
  13.  
  14.        Buttons.ForEach(Sub(bt As Button) bt.Enabled = False)
  15.  
  16.    End Sub

...Utilizando este método de uso genérico, el cual no he optimizado muy bien y habrá formas más limpias de escribirlo, pero sirve.

Código
  1.    ' Get Dynamic Controls
  2.    ' ( By Elektro )
  3.    '
  4.    ''' <summary>
  5.    ''' Gets a range of controls dinamycally by specifying the control's name pattern.
  6.    '''
  7.    ''' To use this method properly, the controls need to have a dynamic name.
  8.    '''
  9.    ''' Example:
  10.    ''' 'Button1', 'Button2', 'Button3', etc..
  11.    ''' Both has the same name and only differs the indexed number.
  12.    '''
  13.    ''' </summary>
  14.    ''' <typeparam name="T"></typeparam>
  15.    ''' <param name="Collection">Indicates the control collection where to find the controls.</param>
  16.    ''' <param name="NamePattern">Indicates the name pattern of the controls.</param>
  17.    ''' <param name="NameRange">Indicates the dynamic indexed pattern range.</param>
  18.    ''' <returns>List(Of T).</returns>
  19.    Private Function GetDynamicControls(Of T)(ByVal Collection As ControlCollection,
  20.                                              ByVal NamePattern As String,
  21.                                              ByVal NameRange As IEnumerable(Of Integer)) As List(Of T)
  22.  
  23.        If NameRange.Count < 1 Then Return Nothing
  24.  
  25.        Dim Controls As New List(Of T)
  26.  
  27.        For Each ctrl As T In Collection.OfType(Of T)()
  28.  
  29.            For Index As Integer = NameRange.Min To NameRange.Max
  30.  
  31.                If TryCast(ctrl, Control).Name.Equals(NamePattern & CStr(Index), StringComparison.OrdinalIgnoreCase) Then
  32.                    Controls.Add(ctrl)
  33.                End If
  34.  
  35.            Next Index
  36.  
  37.        Next ctrl
  38.  
  39.        Controls.Reverse() ' Sort them.
  40.  
  41.        Return Controls.ToList()
  42.  
  43.    End Function

Saludos
7265  Programación / Scripting / Re: [APORTE] [BATCH] Automatizar apertura de volumen y baúl cifrado v2.2 en: 3 Mayo 2014, 00:30 am
cambiando los menús por choise, todavía conservo la particularidad de la opción por defecto? que es lo que está como [1] en las opciones. Es decir, que no necesito escribir una opción (1-6), sino con sólo dar enter, sin haber introducido un número, se va a esa opción.

El comando Choice espera un UserInput (la interacción por parte del usuario) para seleccionar una opción entre las opciones que especificaste,
por lo tanto no hay lugar para predefinir una opción porque el comando obliga a que una de las opciones se deba elegir...
...a menos que especifiques un tiempo de espera máximo y entonces si que puedes especificar también la opción por defecto al terminar el tiempo de espera.

Lee la ayuda del comando.

Cita de: Choice.exe /?
  /T   tiempo de espera  Número de segundos de pausa antes de que se elija
                       una opción predeterminada. Los valores permitidos
                       están comprendidos entre 0 y 9999. Si se especifica
                       0, no habrá pausa y se seleccionará la opción
                       predeterminada.

   /D   opción            Especifica la opción predeterminada después de nnnn
                       segundos. Carácter debe estar en el conjunto
                       especificado de opciones por la opción /C y también
                       debe especificarse nnnn con /T.

Ejemplo:
Código
  1. Choice.exe /C "123" /M "Elige" /T 10 /D "3"
  2. (Echo %ErrorLevel%) & REM Resultado: '3'



Citar
añadir la opción de extraer de forma automática la memoria USB cuando termine de desmontar y cerrar todas las unidades cifradas.
Por ahora sólo he encontrado que puedo hacerlo con aplicaciones externas.

Nunca me he interesado por saber como "extraer" un dispositivo extraible de forma automatizada, pero si has encontrado un programa de terceros capaz de hacerlo eso significa que la API de Windows así se lo permite, así que debe haber alguna función en la WinAPI para hacerlo, desconozco cual ...pero la WinAPI olvídate de poder tocarla en Batch.

EDITO: Lo encontré: CM_Request_Device_Eject function + Info, de hecho según he leido en este source esa es la función que utiliza la aplicación 'USBEject' que mencionaste.
Es muchísimo más dificil de lo que parece en un principio, hay que usar drivers, si esta fuera la única solución entonces preferiría depender de ese tal "USBEject".

También se me ocurre que quizás en alguna Class (referente a los dispositivos extraibles y/o volúmenes) de WMI puedas invocar el comando (el cual desconozco el nombre, pero debería ser algo como "Eject/Extract") de ejecución del dispositivo (InvokeVerb("Eject")), eso sería más viable porque si encuentras información al respecto entonces puedes reproducirlo en Batch usando el comando WMIC.

EDITO: Encontré algo parecido, escrito en PowerShell:
Citar
Código:
$driveEject = New-Object -comObject Shell.Application
$driveEject.Namespace(17).ParseName("E:").InvokeVerb("Eject")
Fuente: http://sushihangover.blogspot.nl/2012/02/powershell-eject-local-or-remote.html

Y lo mismo para VBS:
Citar
Código
  1. For Each d in CreateObject("Scripting.FileSystemObject").Drives
  2. CreateObject("Shell.Application").Namespace(17).ParseName("E:\").InvokeVerb("Eject")
  3. Next
Fuente: http://forums.mydigitallife.info/threads/29412-VBScript-Fast-eject-disk-on-drives

...Se supone que el comando "Eject" sirve tanto para ejecutar CD-Roms como para extraer unidades extraibles, se supone.

Y como última alternativa, con este comando puedes mostrar la ventana de extracción de dispositivos extraibles:
Código
  1. rundll32.exe shell32.dll,Control_RunDLL hotplug.dll, @SystemDir

Saludos.
7266  Programación / .NET (C#, VB.NET, ASP) / [SOURCE] Elektro ErrorDialog en: 2 Mayo 2014, 17:54 pm
Elektro ErrorDialog



Descripción:

Esto es simplemente un Form propio para controlar excepciones, lo pueden añadir a sus proyectos como una plantilla.



Imágenes:

(En tiempo de ejecución)



(En diseño)




Inspiración:

Para desarrollar este Form me inspiré en la idea y en el diseño del desarrollador de la aplicación "WinToolkit" (Legolash2o), aunque su diálogo está escrito en C#...y no he visto el source, pero me gustó la idea y el diseño, además de esto examiné a fondo y comparé otros diseños y códigos fuente de la página CodeProject.





Demostración:




Ejemplos de uso:

(Ejemplo de uso básico)
Código
  1.    Private Shadows Sub Shown(sender As Object, e As EventArgs) _
  2.    Handles MyBase.Shown
  3.  
  4.        Try
  5.            Dim Url As New Uri(String.Empty)
  6.  
  7.        Catch ex As Exception
  8.  
  9.            Using ErrorDialog As New ErrorDialog(ex, sender)
  10.                ErrorDialog.ShowDialog()
  11.            End Using
  12.  
  13.        End Try
  14.  
  15.    End Sub

(Ejemplo de uso avanzado)
Código
  1. Public Class Form1
  2.  
  3.    Public Sub New()
  4.  
  5.        ' This call is required by the designer.
  6.        InitializeComponent()
  7.  
  8.        ' Catches Managed Exceptions.
  9.        AddHandler AppDomain.CurrentDomain.FirstChanceException, AddressOf Application_ManagedException
  10.  
  11.        ' Catches Unhandled Exceptions.
  12.        AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf Application_UnhandledException
  13.  
  14.        ' Catches Thread Exceptions.
  15.        AddHandler Application.ThreadException, AddressOf Application_ThreadException
  16.  
  17.    End Sub
  18.  
  19.    ''' <summary>
  20.    ''' Handles the 'UnhandledException' event of the Application.
  21.    ''' </summary>
  22.    ''' <param name="sender">The source of the event.</param>
  23.    ''' <param name="e">The <see cref="UnhandledExceptionEventArgs"/> instance containing the event data.</param>
  24.    Private Sub Application_UnhandledException(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
  25.  
  26.        Using ErrorDialog As New ErrorDialog(DirectCast(e.ExceptionObject, Exception), Me)
  27.            ErrorDialog.ShowDialog()
  28.        End Using
  29.  
  30.    End Sub
  31.  
  32.    ''' <summary>
  33.    ''' Handles the 'FirstChanceException' event of the Application.
  34.    ''' </summary>
  35.    ''' <param name="sender">The source of the event.</param>
  36.    ''' <param name="e">The <see cref="Runtime.ExceptionServices.FirstChanceExceptionEventArgs" /> instance containing the event data.</param>
  37.    Private Sub Application_ManagedException(ByVal sender As Object, ByVal e As Runtime.ExceptionServices.FirstChanceExceptionEventArgs)
  38.  
  39.        Using ErrorDialog As New ErrorDialog(e.Exception, Me)
  40.            ErrorDialog.ShowDialog()
  41.        End Using
  42.  
  43.    End Sub
  44.  
  45.    ''' <summary>
  46.    ''' Handles the 'ThreadException' event of the Application.
  47.    ''' </summary>
  48.    ''' <param name="sender">The source of the event.</param>
  49.    ''' <param name="e">The <see cref="Threading.ThreadExceptionEventArgs"/> instance containing the event data.</param>
  50.    Private Sub Application_ThreadException(sender As Object, e As Threading.ThreadExceptionEventArgs)
  51.  
  52.        Using ErrorDialog As New ErrorDialog(e.Exception, Me)
  53.            ErrorDialog.ShowDialog()
  54.        End Using
  55.  
  56.    End Sub
  57.  
  58. End Class



Descarga:

http://www.mediafire.com/download/f6caca6bcc9wbwc/Elektro+ErrorDialog.rar
7267  Programación / Scripting / Re: [APORTE] [BATCH] Automatizar apertura de volumen y baúl cifrado v2.2 en: 2 Mayo 2014, 08:24 am
Las modificaciones que hiciste son excelentes, no se puede mejorar mucho más.

Pero los menus:
Citar
Código
  1.  
  2. :OPCIONES_1
  3. call :MENU_1
  4. set var=1
  5. set /p var= Seleccione una opci¢n (1-6) [1]:
  6. if %var%==1 (goto :MONTAR_RO)
  7. if %var%==2 (goto :MONTAR_RW)
  8. if %var%==3 (call :MONTAR_RW && goto :MONTAR_CAL_RO)
  9. if %var%==4 (call :MONTAR_RW && goto :MONTAR_CAL_RW)
  10. if %var%==5 (call :MONTAR_RW && goto :ABRIR_BAUL)
  11. if %var%==6 (goto :OPCIONES_6)
  12. call :MENSAJE_7
  13. timeout 1 >nul
  14. goto :OPCIONES_1

Podrías hacerlos dinámicos:
(código corregido)
Código:
:OPCIONES_1
Call :MENU_1
Set "Options={Goto :MONTAR_RO}; {Goto :MONTAR_RW}; {Call :MONTAR_RW,Goto :MONTAR_CAL_RO}; {Call :MONTAR_RW,Goto :MONTAR_CAL_RW}; {Call :MONTAR_RW,Goto :ABRIR_BAUL}; {Goto :OPCIONES_6}"
Choice.exe /C "123456" /M "Seleccione una opci¢n (1-6) [1]"
For /F "Tokens=%ErrorLevel%,* Delims=;" %%# In ('Echo "%Options%"') Do (
For /F "Tokens=2-3 Delims={,}" %%X In ('Echo "%%~#"') Do ((%%~X) && (%%~Y))
)
Call :MENSAJE_7
Timeout.exe 1 1>Nul
Goto :OPCIONES_1

REM Esto lo puse solo para testear la llamada a las etiquetas...
:MONTAR_RO
Echo MONTAR_RO
Pause&Exit

:MONTAR_RW
Echo MONTAR_RW
Exit /B 0 & REM Aquí usas un Call para llamar a este bloque, así que debes indicar un código de salida (0|1).

:MONTAR_CAL_RO
Echo MONTAR_CAL_RO
Pause&Exit
( Un pobre intento de simular un Array seteando una cadena delimitada, y poder simular también un índice de elementos del Array para poder acceder a un elemento indicando el índice con lo único que nos proporciona Batch para hacer algo semejante ...un For. )

EDITO: Añado otra solución alternativa, más simple:

Código:
SetLocal EnableDelayedExpansion & REM Necesario para expandir la(s) variable(s).

:OPCIONES_1
Call :MENU_1

Set "Choice1=Goto :MONTAR_RO"
Set "Choice2=Goto :MONTAR_RW"
Set "Choice3=Call :MONTAR_RW;Goto :MONTAR_CAL_RO"
Set "Choice4=Call :MONTAR_RW;Goto :MONTAR_CAL_RW"
Set "Choice5=Call :MONTAR_RW;Goto :ABRIR_BAUL"
Set "Choice6=Goto :OPCIONES_6"

Choice.exe /C "123456" /M "Seleccione una opci¢n (1-6) [1]"
Set /A "ChoiceIndex=%ErrorLevel%"
For /F "Tokens=1-2 Delims=;" %%X In ('Echo !Choice%ChoiceIndex%!') Do ((%%~X) && (%%~Y))

SetLocal DisableDelayedExpansion
Call :MENSAJE_7
Timeout.exe 1 1>Nul
Goto :OPCIONES_1





Citar
Qué sería aconsejable modificar para que quedara mejor (más rápido).
Para que sea más rápido debes utilizar otro lenguaje distinto, si en algo destaca Batch es por su incompetencia y lentitud.

Por ejemplo, en Batch debes usar una aplicación externa (Find.exe|Findstr.exe) para buscar patrones de cadenas en otra cadena (la salida de un comando), depender de la ejecucion y del tiempo de ejecución de otro exe y del código de salida que este mande para determinar que se encontró una cadena y/o una expresion regular ...eso ya de por si es una mier-da y es muy lento en comparación con cualquier otro lenguaje.

Además, también dependes de otras aplicaciones como 'TaskList.exe', el cual no muestra una lista de procesos en Tiempo Real, por propia experiencia te puedo decir que a veces el comando tiene una demora de 10-15 segundos en actualizar la lista de procesos para mostrar el proceso que andas buscando, así que para obtener mayor eficacia en Batch podrías hacer una Query a las Classes de WMI utilizando (de nuevo) una aplicación externa, WMIC:

Ej:
Código:
( WMIC.exe Process Where Name='KeyPass.exe' Get /Format:List | Find.exe "=" )1>NUL 2>&1 && (...) || (...)

...en cualquier otro lenguaje no necesitarías depender de ningún exe para verificar si un proceso está corriendo, podrías usar las Classes de WMI diréctamente, lo cual es más rápido sin duda.

Como ya digo, tu Batch-Script no se puede mejorar mucho más, así está perfecto aunque le hagas alguna que otra pequeña modificación como las que he comentado.

¡Saludos!
7268  Sistemas Operativos / Windows / Re: Guía de personalización de imágenes de implementación de Windows (WIM) (Parte 2) en: 30 Abril 2014, 18:27 pm
Lo de la contraseña, prueba a modificar el valor "LogonCount", quizás me equivoco pero intuyo que le asignates un '0' y por eso te da error.


Citar
· Omitir la pantalla de selección de usuario (Auto-Loguearse).

Agregamos el componente Microsoft-Windows-Shell-Setup > AutoLogon al paso Specialize y también al paso oobeSystem y aplicamos estos valores:

El número de veces que la cuenta se ha usado:
LogonCount = 1
7269  Programación / Scripting / Re: error ejecutar vbs desde tarea programada error el sistema no puede encontrar el en: 30 Abril 2014, 18:17 pm
supongo que el archivo '33.bat' se encuentra en el directorio 'C:\1', ¿verdad?,
en ese caso el motivo de que no encuentre el archivo podría deberse a que el directorio de trabajo actual del Script VBS sea "C:\Windows\System32", no "C:\1".

Aquí tienes la solución a ese problema: http://foro.elhacker.net/scripting/como_puedo_arrastrar_y_concatenar_archivos_de_texto_en_un_batch-t413258.0.html;msg1938492#msg1938492

saludos
7270  Sistemas Operativos / Windows / Re: Guía de personalización de imágenes de implementación de Windows (WIM) (Parte 4) en: 28 Abril 2014, 13:01 pm
@Dato000

1: Tienes que montar la imagen que contiene el entorno WinPE de la instalación de Windows, es decir, en mi caso es la imagen con índice 2 del archivo "boot.wim", una vez montada verás la carpeta "...\sources" que mencionas y allí los recursos dll, dicha carpeta y los mismos recursos dll también están en el dvd de windows, puede ser un poco confuso, pero tiene una explicación, esto es porque los recursos del dvd que están a simple vista son las imágenes que se utilizan en el entorno gráfico (Ej: cuando haces doble click en el archivo setup.exe), y los recursos dll de adentro de la imagen boot.wim son las imagenes que se utilizan al bootear, en el entorno "por consola", por eso es recomendable reemplazar los archivos tanto en el dvd como adentro de la imagen boot.wim.

2: Supongo que la conversión que hiciste a PNG la hiciste solamente para subir/compartir la imagen, pero de todas formas, por si acaso, te comento que las imágenes que modifiques deben tener las mismas propiedades (profundidad de color, transparencia, tamaño, extensión) que las imágenes originales.

3: Yo utilizo 'Anolis resourcer' para reemplazar recursos, hay otros programas que me gustan más como el 'ResourceHacker FX', pero prefiero el primero porque es con el que conseguí automatizar la tarea por linea de comandos.

Saludos!
Páginas: 1 ... 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 [727] 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 ... 1254
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines