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 - Keyen Night

#71
Puedes agregar la información a los recursos del ejecutable como array de bytes, si la serializas, haciendo uso de las API:

Código (vb.net) [Seleccionar]

    <DllImport("kernel32.dll", SetLastError:=True)> _
       Public Function BeginUpdateResource(ByVal pFileName As String, _
       <MarshalAs(UnmanagedType.Bool)> ByVal bDeleteExistingResources As Boolean) As IntPtr
    End Function

    <DllImport("kernel32.dll", SetLastError:=True)> _
        Public Function UpdateResource(ByVal hUpdate As IntPtr, _
                                       ByVal lpType As Integer, _
                                       ByVal lpName As Integer, _
                                       ByVal wLanguage As Integer, _
                                       ByVal lpData As Object, _
                                       ByVal cbData As Integer) As Boolean
    End Function

    <DllImport("kernel32.dll", setlasterror:=True)> _
    Public Function EndUpdateResource(ByVal hUpdate As IntPtr, _
                                      ByVal fDiscard As Boolean) As Boolean
    End Function

    <DllImport("kernel32.dll", SetLastError:=True)> _
Public Function LoadResource(ByVal hModule As IntPtr, _
                             ByVal hResInfo As IntPtr) As IntPtr
    End Function

    <DllImport("kernel32.dll", SetLastError:=True)> _
Public Function LoadLibrary(ByVal lpFileName As String) As IntPtr
    End Function

    <DllImport("kernel32.dll")> _
Public Function FindResource(ByVal hModule As IntPtr, _
                             ByVal lpName As Integer, _
                             ByVal lpType As Integer) As IntPtr
    End Function

    <DllImport("kernel32.dll")> _
Public Function LockResource(ByVal hResData As IntPtr) As IntPtr
    End Function

    <DllImport("kernel32.dll", SetLastError:=True, EntryPoint:="FreeLibrary")> _
Public Function FreeLibrary(ByVal hModule As IntPtr) As Boolean
    End Function

    <DllImport("kernel32.dll", SetLastError:=True)> _
Public Function SizeofResource(ByVal hModule As IntPtr, _
                               ByVal hResInfo As IntPtr) As UInteger
    End Function

    <DllImport("kernel32.dll", CharSet:=CharSet.Unicode, EntryPoint:="EnumResourceNamesW", SetLastError:=True)> _
Public Function EnumResourceNames(ByVal hModule As IntPtr, _
                              ByVal lpszType As Integer, _
                              ByVal lpEnumFunc As EnumResNameProcDelegate, _
                              ByVal lParam As IntPtr) As Boolean
    End Function

    Public Delegate Function EnumResNameProcDelegate(ByVal hModule As IntPtr, _
                                                     ByVal lpszType As IntPtr, _
                                                     ByVal lpszName As IntPtr, _
                                                     ByVal lParam As IntPtr) As Boolean


Puedes prepar el ejecutable a generar para buscar en el mismo el recurso, que no existe en el momento que generas el ejecutable, sino que se le agrega después de que se genera. Puedes buscar información de como se usan estas API, espero que te sirva de algo, si no logras dar con la funcionalidad avisas y te doy un ejemplo ;)
#72
Yo lo resolví así no es perfecto pero disimula casi totalmente...

Ese código en el evento Load del Form

Código (vb.net) [Seleccionar]
        Me.DoubleBuffered = True
        Panel1.GetType.GetProperty( _
"DoubleBuffered", _
Reflection.BindingFlags.NonPublic Or _
Reflection.BindingFlags.Instance) _
.SetValue(Panel1, True, Nothing)


Y en el evento Scroll, no en el MouseWheel, colocas...

Código (vb.net) [Seleccionar]
Panel1.Invalidate()

Sino lo vez bien entonces solo queda una alternativa, recortar el rectángulo del BackgroundImage que esta detrás del Panel y colocarlo como fondo al Panel, el método Invalidate llama al evento Paint del Panel de modo que se puede editar las coordenadas y tamaños en el evento Scroll para que al hacer Invalidate se redibuje el rectángulo. Estoy haciendo el ejemplo a ver si se ve mejor.
#73
Al menos en mi computadora acabo de probar y baja como tu mismo dices, presiono el scrollbar y voy bajando y va bajando a medida de que bajo el mouse .__.
#74
El VS 2012, descargue la versión express y la probé y ahora ya estoy descargando la Ultimate, de verdad que supieron dominar el diseño y la simplicidad, es excelente esta versión, pero conservo mi VS 2008 porque como dice seba123neo es como un estándar. La versión 2010 la tengo también pero no me acostumbre a ella, no se porque, en la pagina de Microsoft puedes encontrar descripciones detalladas de cada versión y compararlas tu mismo. El VS 2012 funciona por defecto con .Net Framework 4.5, que hoy no todo el mundo tiene, lo que podría significar una molestia para el usuario final común, y tener una versión tan avanzada para trabajar con un .Net Framework desactualizado tu dirás que haces :silbar: Claro Microsoft lucha a toda costa para hacer que todos abandonen todos los sistemas de Windows por detrás del Windows 7, casi que están arrestando gente por tener Windows XP :xD :xD :xD
#75
Eso se puede solucionar fácilmente con expresiones regulares, como es un tema extenso te regalo el código, con la condición de que investigues un poco es un tema interesante y muy útil :xD

Edito: Para modificar el error del espacio de la expresión regular.

Código (vb.net) [Seleccionar]

Imports System.Text.RegularExpressions

       Dim Expresión As String = String.Format("{0}[^{0}$]+{0}", Convert.ToChar(32))

       'Esta variable simula la que tu creas en tu aplicación'
       Dim Comando As String = String.Format("Comando.exe {0}C:\ejemplo{0} {0}C:\carpeta\ruta{0} {0}D:\archivos{0}", Convert.ToChar(32))

       For Each x As Match In Regex.Matches(Comando, Expresión)
           MessageBox.Show(x.Value)
       Next
#76
Environment.GetCommandLineArgs, te entrega la lista de parámetros con la que fue llamada tu aplicación, ya ordenada, comenzando desde la ruta completa de tu ejecutable.
#77
Ordena los TabIndex de manera que el Panel tenga el Index 0 y partir de allí en aumento según el orden que quieres que lleven de forma que no se repita el 0.

@seba123neo

Interesante gracias por la información ;)
#78
Eso solamente pasa cuando se daña un archivo designer, sobretodo cuando borras un archivo de imagen que esta referido a un control o modificas el designer directamente.
#79
El siguiente parámetro del constructor del Bitmap: Imaging.PixelFormat, para la sobrecarga  de 3 parámetros Int32, permite elegir la estructura del color, Tienes para elegir entre 4, 16, 24 32 y 64 bpp y entre ARGB y RGB.

El método de guardado que utilice para probar fue, obtener el Handle Icon del Bitmap y guardar el Icon en un FileStream y funciono perfectamente.
#80
Coloca el código que esta en Form_Load, nunca digas que no puedes hacer algo, aquí todos comenzamos con Hola Mundo, y como tu puedes ver ya has avanzado ¿o no? ;) No te rindas tan fácilmente se necesita mucha perseverancia para terminar un proyecto precisamente por la paciencia que hay que tener para hallar y solucionar los errores.