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

#9291
Cita de: Ari Slash en  4 Marzo 2013, 16:50 PM
Pues primero que nada te recomendaria crear los controles de forma dinamica, y con un correlativo y formato definido

luego a cada "boton" creado le enlazas un evento comun en el cual, tome el nombre del objeto (sender) y recorra todos los siguientes moviendo su posicion, extrayendo el correlativo del mismo nombre.

Muchas gracias por el code, de C# sólo entiendo un poco la sintaxis, tendré que pasarlo a VBNET a ver si saco algo en claro.

Lo de handlear todos los controles a un sub e interactuar con ellos mediante el sender se hacerlo, pero... ¿Como hago lo de mover sus posiciones sin saber las dimensiones exactas de cada elemento desplegable?, eso es lo que me reconcome la cabeza... y sé que se puede hacer, pero no tengo mucha capacidad resolutiva con este tipo de problemas que son más matemáticos que otra cosa xD.

Por cierto, lo que he subrayado de tu comentario, ¿me lo podrías explicar mejor?, creo que no lo he entendido ¿Crear controles de forma dinámica, correlativos y con formato definido?, no he entendido nada de esa parte, ¿Que me estás sugeriendo que haga?, ¿Donde busco información acerca de eso?.

Un saludo!
#9292
Modificar permisos de carpetas:

Código (vbnet) [Seleccionar]
#Region " Folder Access Function "

   ' [ Folder Access Function ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   ' Set_Folder_Access("C:\Folder", Folder_Access.Create + Folder_Access.Write, Action.Allow)
   ' Set_Folder_Access("C:\Folder", Folder_Access.Delete, Action.Deny)

   Public Enum Folder_Access
       Create = System.Security.AccessControl.FileSystemRights.CreateDirectories + System.Security.AccessControl.FileSystemRights.CreateFiles
       Delete = System.Security.AccessControl.FileSystemRights.Delete + System.Security.AccessControl.FileSystemRights.DeleteSubdirectoriesAndFiles
       Write = System.Security.AccessControl.FileSystemRights.AppendData + System.Security.AccessControl.FileSystemRights.Write + Security.AccessControl.FileSystemRights.WriteAttributes + System.Security.AccessControl.FileSystemRights.WriteData + System.Security.AccessControl.FileSystemRights.WriteExtendedAttributes
   End Enum

   Public Enum Action
       Allow = 0
       Deny = 1
   End Enum

    Private Function Set_Folder_Access(ByVal Path As String, ByVal Folder_Access As Folder_Access, ByVal Action As Action) As Boolean
        Try
            Dim Folder_Info As IO.DirectoryInfo = New IO.DirectoryInfo(Path)
            Dim Folder_ACL As New System.Security.AccessControl.DirectorySecurity
            Folder_ACL.AddAccessRule(New System.Security.AccessControl.FileSystemAccessRule(My.User.Name, Folder_Access, System.Security.AccessControl.InheritanceFlags.ContainerInherit Or System.Security.AccessControl.InheritanceFlags.ObjectInherit, System.Security.AccessControl.PropagationFlags.None, Action))
            Folder_Info.SetAccessControl(Folder_ACL)
            Return True
        Catch ex As Exception
            Throw New Exception(ex.Message)
            ' Return False
        End Try

#End Region
#9293
Cita de: Novlucker en  4 Marzo 2013, 15:21 PM
Me ha llamado la atención eso :xD ¿por que dices lo de F#?

Saludos

Ups perdón, siempre me confundo, quería decir SharpDevelop, la IDE xD.

saludos
#9294
NUEVA VERSIÓN

Splitty 1.6

  • Error de límite máximo de 300 MB al usar el formato ISO corregido (Método: La aplicación añade automáticamente una clave de registro para registrar la utilidad PowerISO)
  • Mejoras visuales en la barra de taréas de Windows 7 (Información del progreso).
  • Protección temporal contra escritura/borrado/modificación de archivos de la carpeta de origen mientras esta se está procesando (SPLIT).
  • Monitorización de cambios de la carpeta de origen para actualizar la información que muestra la aplicación antes de hacer el SPLIT.
  • He unificado las estructuras en el mismo source, la aplicación ahora usa los recursos (.exe) de la arquitectura del SO (x64/x86).
  • Corregida una errata de sintaxis (if variable = valor = valor), joder, no sé como no lo ví antes, pero estaba funcionando bien xD.
  • Corregido el error de ventanas indeseadas (MessageBoxes) en la barrá de taréas.
  • Otros pequeños cambios sin importancia.

    http://elektrostudios.tk/Splitty.rar

    PD: Sobre lo de FSharp SharpDevelop y hacerlo compatible con FW 2.0 me ha sido imposible.

    Saludos!
#9295
Hola.

En mi aplicación muestro un MSGBOX pero la ventana del MSGBOX aparece también en el TaskBar, me he dado cuenta que esto sólo ocurre si muestro el MGSBOX desde un thread.

Aplicación:


TaskBar:


PD: Lo de la derecha es el MSGBOX, no quiero que eso aparezca en la barra de taréas.

¿Como puedo ocultar la ventana del MSGBOX en el TaskBar?, espero que no haya que recurrir a obtener el handle de la ventana del MSGBOX y esas cosas... ¿Hay algo más fácil?

Este es el código que uso:
Código (vbnet) [Seleccionar]
MessageBox.Show(My.Resources.ResourceManager.GetObject(Language_Resource & "09"), My.Settings.Version, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)


#9296
nada _katze_ he estado probando pero ese control tampoco me sirve, al final lo he hecho manuálmente pero necesito ayuda para automatizar la taréa.






El tema es que necesito hacer un menú colapsable (no me sirve ningún control de terceros colapsables para hacer esto porque es un menú por imágenes y paneles)

Os dejo unas imagenes para que entendais lo que quiero hacer...

Yo esto se hacerlo de forma manual, es decir, en el evento "click" de un botón, al clickarlo, expandir manualmente el panel, osea redimensionar más colocarlo (control.size + control.location) y hacer lo mismo con todo el resto de elementos...

Pero esa manera es un verdadero fiasco porque tengo más de 60 elementos y necesito encontrar una forma dinámica de que todo se organize de un modo más automático, pero no llego a la solución ni a la conclusión de como se podría hacer esto, ni siquiera en pseudocódigo, nada, mi cabeza y mi creatividad no dán para más, jeje.

PD: en las imagenes los "elementos" son botones, pero en el code original son PictureBoxes, y lo verde serían paneles.

Ah, por cierto, el problema más grande creo que es que los "elementos" (los paneles) no pueden tener el mismo tamaño, algunos son más grandes que otros y esto no puedo cambiarlo de ninguna manera, por eso no he llegado a una solución matemática (que tampoco soy un génio) ni he podido sacar conclusiones en pseudocode. De otra forma creo que sería muy fácil, si todos los paneles fuesen del mismo tamaño sólo tendría que "handlear" todos los elementos en un sub, hacer una regla de trés con todos los elementos y restarle/sumarle el valor del tamaño del panel para resizarlos... en fín me valdría de ese valor para poder hacer todo de una forma más automática, pero es que no puedo hacerlo así.






#9297
Hexadecimal a Array de Bytes:

Código (vbnet) [Seleccionar]
#Region " Hex to Byte-Array Function "

    ' [ Hex to Byte-Array Function ]
    '
    ' Examples :
    ' Dim Byte_Array = Hex_to_Byte_Array("000a42494c4c2047415445535ad50adc4f5ca6f9efc1252aadf9847f")
    ' My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\KEYNAME", "VALUENAME", Byte_Array, Microsoft.Win32.RegistryValueKind.Binary)

    Private Function Hex_to_Byte_Array(ByVal HEX_String As String) As Byte()
        Dim Bytes_Array((HEX_String.Length \ 2) - 1) As Byte
        For i As Integer = 0 To HEX_String.Length - 1 Step 2
            Dim HEX_Byte As String = HEX_String.Substring(i, 2)
            Dim Byte_Value As Byte = Byte.Parse(HEX_Byte, Globalization.NumberStyles.AllowHexSpecifier)
            Bytes_Array(i \ 2) = Byte_Value
        Next
        Return Bytes_Array
    End Function

#End Region







Windows API Code Pack:
Código (vbnet) [Seleccionar]
#Region " Set TaskBar Status Function "

    ' [ Set TaskBar Status Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    ' Set_TaskBar_Status(TaskBar_Status.Paused)

    Public Enum TaskBar_Status
        Normal = 2     ' Blue
        Stopped = 4    ' Red
        Paused = 8     ' Yellow
        Disabled = 0   ' No colour
        Undefinied = 1 ' Marquee
    End Enum

    Private Function Set_TaskBar_Status(ByVal TaskBar_Status As TaskBar_Status) As Boolean
        Try : Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.Instance.SetProgressState(TaskBar_Status)
            Return True
        Catch ex As Exception : Throw New Exception(ex.Message)
        End Try
    End Function

#End Region


Windows API Code Pack:
Código (vbnet) [Seleccionar]
#Region " Set TaskBar Value Function "

    ' [ Set TaskBar Value Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    ' Set_TaskBar_Value(50, 100)

    Private Function Set_TaskBar_Value(ByVal Current_Value As Integer, ByVal MAX_Value As Integer) As Boolean
        Try : Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.Instance.SetProgressValue(Current_Value, MAX_Value)
            Return True
        Catch ex As Exception : Throw New Exception(ex.Message)
        End Try
    End Function

#End Region
#9298
Valoro la respuesta de $Edu$.

Bueno, al menos dices que aprendiste algo,
un saludo!
#9299
Cita de: cawento en  2 Marzo 2013, 19:36 PM
Si existen dos archivos con el mismo nombre en distintos directorios, el último sobreescribe al primero, esto es asi?

El parámetro "/Y" del comando "Copy" sirve para remplazar archivos, "SÍ" a tu pregunta.

Cierro el tema.

Saludos
#9300
EDITO 2: Ya lo he solucionado... j*der todo lo que es necesario sólo para agregar una maldita clave al registro.

Lo de usar datos binários para agregar una clave binária tiene sentido, pero que me digan que desde Batch con el comando "Reg.exe" lo puedes hacer usando como valor un string y sin ningún esfuerzo por parte del usuario/scripter, y en cambio en .NET haya que hacer todo el proceso manual y estríctamente y encima séa necesario conocer las bases principales de los bytes y el binário para poder convertir el string a sus respectivos valores de bytes y para así luego poder agregar la maldita clave... en fín! esto para mi ha sido desesperante. Este trozo de código si que lo copio y sin haber aprendido nada, porque me ha quemado del todo.

PD: ¿Alguien que entienda de arrays de bytes y todo esto me puede decir si el code está bien?, es que tuve que restarle "-1" al "data.length" (en lugar de restarle "-3" como pone en el código original) para que me funcionase corréctamente.

Solución:
Código (vbnet) [Seleccionar]
        Dim data As String = "000a42494c4c2047415445535ad50adc4f5ca6f9efc1252aadf9847f"
       Dim bytes((data.Length \ 2) - 1) As Byte
       For i As Integer = 0 To data.Length - 1 Step 2
           Dim hexByte As String = data.Substring(i, 2)
           Dim value As Byte = Byte.Parse(hexByte, Globalization.NumberStyles.AllowHexSpecifier)
           bytes(i \ 2) = value
       Next
       My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\PowerISO", "USER", bytes, Microsoft.Win32.RegistryValueKind.Binary)


http://www.dreamincode.net/forums/topic/138591-write-reg-binary-hex-to-the-registry/

Saludos.






EDITO: ya he solucionado uno de los problemas, en la función asumo que el parámetro es de tipo string y por eso el array de bytes no me tiraba ni patrás.

Ahora sólo necesito que alguien me ayude a convertir este valor hexadecimal a bytes para poder añadir la clave...

000a42494c4c2047415445535ad50adc4f5ca6f9efc1252aadf9847f

no sé como hacerlo sincéramente, he usado 3 convertidores online HEX a BIN pero no creo que eso me sirva, algo estaré haciendo mal porque esto no me funciona:

PD: los ceros sueltos ("0,0") no los puse yo a propósito, la IDE me lo convierte en ceros sueltos y "1" unos sueltos...

Código (vbnet) [Seleccionar]
           Dim BinaryData As Byte() = {11, 11, 10, 1, 11, 10, 11, 11, 11, 0, 0, 1, 0, 10, 1, 1, 0, 10, 10, 10, 10, 10, 11, 1, 11, 11, 10, 0, 0, 0, 0, 0, 0, 0}
           My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\PowerISO", "USER", BinaryData, Microsoft.Win32.RegistryValueKind.Binary)



Necesito que el contenido de la clave quede como en este ejemplo:



¿Como narices se convierte ese valor?





Hola,

Hace tiempo una función para agregar claves al registro, pero ahora me he dado cuenta de que no funciona con claves binárias, y necesita agregar una.


Código (vbnet) [Seleccionar]
   Public Function Reg_Set_Value(ByVal RegKey As String, ByVal RegValue As String, ByVal RegData As String, ByVal RegDataType As Microsoft.Win32.RegistryValueKind) As Boolean
       Try
           My.Computer.Registry.SetValue(RegKey, RegValue, RegData, RegDataType)
           Return True
       Catch ex As Exception
           Throw New Exception(ex.Message)
       End Try
   End Function


Código (vbnet) [Seleccionar]
Reg_Set_Value("HKEY_CURRENT_USER\Software\PowerISO", "USER", "000a42494c4c2047415445535ad50adc4f5ca6f9efc1252aadf9847f", Microsoft.Win32.RegistryValueKind.Binary)

También he intentado creando un array de Bytes (no sé si será una estupidez...) pero aparte de que no se si he hecho corréctamente la conversión del string a binário, no sé utilizar los bytes para esto:
Código (vbnet) [Seleccionar]
Dim val() As Byte = {0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 1, 0, 0, 0, 1, 8}
Reg_Set_Value("HKEY_CURRENT_USER\Software\PowerISO", "USER", val(), Microsoft.Win32.RegistryValueKind.Binary)


Así es como puedo crear la clave que necesito usando un script de Regedit:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\PowerISO]
"USER"=hex:00,0a,42,49,4c,4c,20,47,41,54,45,53,5a,d5,0a,dc,4f,5c,a6,f9,ef,c1,\
 25,2a,ad,f9,84,7f


Y así como lo puedo hacer en Batch:
Código (dos) [Seleccionar]
REG ADD "HKCU\Software\PowerISO" /V "USER" /T "REG_BINARY" /D 000a42494c4c2047415445535ad50adc4f5ca6f9efc1252aadf9847f /F

Ni eso ni Google me han servido para saber que estoy haciendo mal.

¿Alguna información please?

Un saludo.