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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Temas
Páginas: [1] 2
1  Programación / .NET (C#, VB.NET, ASP) / Obtener indice control seleccionado (Matriz 2 dimensiones) VB2013 en: 17 Enero 2019, 13:12 pm
Buenas estoy realizando un programa y me veo atascado en un evento por código, de momento no encuentro nada pero sigo buscando, a ver si alguno me da la solución antes.

Pongo el siguiente ejemplo y es lo mismo que deseo que funcione con las matrices de 2 dimensiones en Visual Basic 2013.

Código
  1. Private Lista(4) As PictureBox
  2.  
  3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.        For A = 0 To 4
  5.            Lista(A) = New PictureBox                       ' Creamos una nueva instancia
  6.            Lista(A).Size = New Size(32, 32)                ' Tamaño PictureBox
  7.            Lista(A).BorderStyle = 1                        ' Dibuja borde
  8.            Lista(A).Location = New Point(A * 32 + A, 50)   ' Posicionamos PictureBox
  9.            Me.Controls.Add(Lista(A))                       ' Añadimos al Formulario
  10.            AddHandler Lista(A).Click, AddressOf Evento1    ' Agregamos evento Click
  11.        Next A      
  12. End Sub
  13.  
  14. Private Sub Evento1(sender As Object, e As EventArgs)
  15.        Dim Index As Integer = Array.IndexOf(Lista, sender) ' Obtenemos el índice seleccionado
  16.        MsgBox("Has pulsado " & Index + 1 & " recuadro.")
  17. End Sub
  18.  

El código de arriba muestra 5 controles de tipo PictureBox como un array, puesto que en NET no se
podía realizar mediante diseño, al hacer click en cualquiera de ellos obtenemos el índice del
que hemos pulsado y así podemos utilizar las propiedades de cada uno de ellos.

Siguiendo con el ejemplo, me gustaría lo mismo para una matriz de 2 dimensiones que la dibujo
perfectamente, pero cuando asigno el evento Click no se que emplear para obtener el índice
puesto que Array.IndexOf es para matrices unidimensionales ¿Como puedo obtener el índice de
una matriz de 2 dimensiones, (0,0) (0,1) (0,2).. (1,0)..etc, al hacer click sobre cada recuadro
PictureBox ? Muchas GRACIAS y saludos

Código
  1. Private Matriz(2, 3) As PictureBox                      ' Matriz de 3x4 elementos
  2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load      
  3.  
  4.        ' Dibujamos matriz bidimensional de 3 filas y 4 columnas
  5.        For F = 0 To 2                                         ' Recorre las Filas
  6.            For C = 0 To 3                                     ' Recorre las Columnas
  7.                Matriz(F, C) = New PictureBox
  8.                Matriz(F, C).Size = New Size(32, 32)
  9.                Matriz(F, C).BorderStyle = 1
  10.                Matriz(F, C).Location = New Point(C * 32 + C, F * 32 + F + 100)
  11.                Me.Controls.Add(Matriz(F, C))
  12.                AddHandler Matriz(F, C).Click, AddressOf Evento2
  13.            Next C
  14.        Next F
  15.    End Sub
  16.  
  17.    Private Sub Evento2(sender As Object, e As EventArgs)
  18.        ' Fallo porque Array.IndexOf  es para matrices de 1 sola dimensión
  19.        Dim Index As Integer = Array.IndexOf(Matriz, sender)
  20.        '...
  21.    End Sub
  22.  
  23.  
2  Programación / .NET (C#, VB.NET, ASP) / Como escribir correctamente siguiente codigo C# en Visual Basic 2013 en: 1 Febrero 2018, 12:38 pm
Buenas, estoy con una parte de código que no consigo traducir a VB.net, en C# funciona sin problemas. He utilizado el conversor http://converter.telerik.com pero se ve que ya no funciona, también otros conversores online pero dan problemas o el código escrito no compara correctamente la colisión, ya que se trata de colisiones entre 2 objetos por pixel.

Si podéis echarme una mano tan solo con este código o bien algún conversor que funcione correctamente de C# a VB.NET

Código
  1. if (((bitsA[(x - texture1Rectangle.X) + (y - texture1Rectangle.Y) * texture1Rectangle.Width] & 0xFF000000) >> 24) > 20 &&
  2.   ((bitsB[(x - texture2Rectangle.X) + (y - texture2Rectangle.Y) * texture2Rectangle.Width] & 0xFF000000) >> 24) > 20)
  3.                    {
  4.                        PorColisionPixel = true;
  5.                        ...
  6.                    }
  7.  

El fallo se presenta en el operador de desplazamiento o número hexadecimal.
Como nota decir que el código lo estoy realizando con XNA 4.0 en Visual Basic 2013, donde ya realicé el programa en XNA 4.0 con C# funcionando correctamente la colisión por pixel y es ahora donde he traducido todo el programa y solo me falta esta parte de código que no consigo que funcione en VB.net.

Muchas gracias y saludos

3  Programación / .NET (C#, VB.NET, ASP) / Codigo C# en XNA como es en VB2013 en XNA en: 8 Junio 2017, 13:15 pm
Buenas, estoy intentando traducir un ejemplo de C# para XNA donde trata una colisión por píxel entre 2 rectángulos. En C# para XNA me funciona correctamente, pero en VB2013 que también permite la librerias de XNA y ya he realizado varios programas sin problemas, tiene las mismas sentencias solo que cambia la sintaxis. Paso el código y en negrita donde muestra el problema, la línea del error es "Player.GetData(texturaPlayer), me imagino que este método lo que hace es copiar todos los colores de la textura. Estoy probando de muchas formas, inicializando  la instancia de todos los array y no doy con ello.

Mensaje de error al ejecutar: "The size of the data passed in is too large or too small for this resource."

Código
  1. Private Player As Texture2D
  2. Private rectPlayer As Rectangle
  3. Private texturaPlayer() As Color
  4.  
  5. Protected Overrides Sub LoadContent()
  6. ' Carga textura Jugador 1 y copia el total número colores
  7. Player = Content.Load(Of Texture2D)("Imagenes\Sprite1")
  8. ReDim texturaPlayer(Player.Width * Player.Height)
  9. Player.GetData(texturaPlayer)
  10. ...
  11.  
  12. End Sub
  13.  

a la función que llamo luego es:
Código
  1. If intersectPixel(rectPlayer, texturaPlayer, rectRoca, texturaRoca) Then
  2. ...
  3.  

El código en C# para XNA donde funciona sin problemas es:
Código
  1. Texture2D Player;                               // Sprite del Jugador1
  2. Rectangle rectPlayer;                          // Rectángulo Jugador1 (colisión)
  3. Color[] texturaPlayer;                         // Colores Jugador1
  4.  
  5. protected override void LoadContent()
  6. {
  7. // Carga textura Jugador 1 y copia el total numero colores
  8. Player = Content.Load<Texture2D>("Imagenes/Sprite1");
  9. texturaPlayer = new Color[Player.Width * Player.Height];
  10. Player.GetData(texturaPlayer);
  11. ...
  12.  
  13. }
  14.  

Muchos pensaréis que porque no lo programo en C# para XNA y aunque lo entiendo, soy de los que le gusta seguir con el mismo lenguaje y el juego que estoy realizando lo quiero hacer en Visual Basic 2013 con XNA.

A ver si hay alguien que me pueda echar una mano y así poder continuar con el juego, suelo empezar por lo que me resulta más difícil e intento resolver mediante pequeños ejemplos todas las posibles dificultades antes de comenzar el proyecto.

Muchas gracias y saludos
4  Programación / .NET (C#, VB.NET, ASP) / Estructuras dentro de Estructuras (Visual Basic 2013) en: 3 Marzo 2017, 21:44 pm
Buenas estoy intentando simplificar este código, en concreto lo que aparece entre comentarios. El código me funciona pero deseo reprentar los datos mediante una lista en una sola línea, o tupla como lo llaman... estoy probando con {} tal y como lo hago con los array o matrices, pero no doy con ello, alguna sugerencia. Gracias y salu2

Código
  1. Private Structure Cord
  2.   Public X, Y as Integer
  3. End Structure
  4.  
  5. Private Structure Obj
  6.   Public PosA as Cord
  7.   Public PosR() as Cord
  8. End Structure
  9.  
  10.  
  11. Private Obj1 As Obj        ' Declaramos un Objeto de la estructura Obj
  12. ReDim Obj1.PosR(2)       ' Definimos la matriz de la estructura a 3 valores
  13.  
  14. ' -------- Esto funciona, deseo simplificar algo estilo
  15. ' Obj1 = { {10, 20}, { {5, 3}, {7, 9}, {1, 4} } }
  16.  
  17. Obj1.PosA.X = 10 : Obj1.PosA.Y = 20
  18. Obj1.PosR(0).X = 5 : Obj1.PosR(0).Y = 3
  19. Obj1.PosR(1).X = 7 : Obj1.PosR(1).Y = 9
  20. Obj1.PosR(2).X = 1 : Obj1.PosR(2).Y = 4
  21.  
  22. ' ----------------------------------------
  23. ' Representar esta parte mediante una línea, tupla o como se haga en
  24. ' Visual Basic 2013
  25.  
  26. Procedimiento(Obj1)      ' Pasar el procedimiento con el Objeto
  27.  
  28.  
5  Programación / .NET (C#, VB.NET, ASP) / Firmar programas (VISUAL BASIC 2013) CONSULTA en: 8 Febrero 2017, 12:03 pm
Buenas esto es a modo de consulta, ya que veo ultimamente que antivirus como Avast tienen una nueva tecnología llamada CyberCapture y claro aquellos programas que publicas que encima son de forma desinteresada y lo haces para compartir pues si ya te ponen impedimentos para que la gente no se los baje porque salte el antivirus, los bloquee, diga que están siendo estudiados por laboratorio...

He tenido que poner comentarios para que desactiven dicha opción, hacer video-tutoriales de canal YouTube para dar más confianza de que los programas que realizas no son maliciosos, en fin que parece que aquellos que tienen esto de la programación como un hobby se tenga que convertir casi como un empresa pero sin facturar...

Quería información si alguien más profesional ha firmado sus proyectos, si ha solicitado un certificado a la casa de la moneda, según tengo entendido tienen que ser con la extensión PFX puesto que lo que quería sería ensamblarlo con el ejecutable y que luego en firmas digitales apareciese el autor y que naturalmente la entidad fuese la casa de la moneda. ¿Esto sería como persona física?, ¿Que pasos exactos habéis seguido si alguien lo ha realizado?, tengo la página

https://www.sede.fnmt.gob.es/certificados

donde me iré informando, pero yo no deseo un certificado para asuntos de trámites de multas, hacienda, etc, sino un certificado para autenticar mis programas con firma digital y saber si eso elimina de los antivirus, por lo menos confian y te permiten elegir si ejecutar, no se, totalmente desconozco esto y lo único que me gusta en programar y compartir, no trabajo en programación, pero parece que cada vez los pequeños programadores se lo ponen difícil para compartir su hobby.

Cree un canal Youtube para dar más confianza con respecto a mis programas. Al final uno va a programar para si mismo y su familia y ya está, así menos quebraderos de cabeza, porque empieza programando y luego tiene que aprender alojar información web, crear canal youtube, diseño de gráficos, sonido, etc

Gracias y saludos
6  Programación / .NET (C#, VB.NET, ASP) / Información procesador, velocidad. Visual Basic 2013 en: 31 Octubre 2016, 10:39 am
Buenas a todos/as, quería saber si hay alguna manera sencilla de saber el tipo de procesador y velocidad de este para asignar la información a una variable (integer) por ejemplo y así poder aumentar la velocidad o disminuir de un juego que estoy programando.
Busco código o información para Windows Forms. El tema de WMI (Windows Management Instrumentation) no lo entiendo y aparecen errores en ejemplos de Microsoft.

Si puede ser como digo algo sencillo del tipo...

Código
  1. MsgBox(My.Computer.Info.OSVersion)
  2. MsgBox(My.Computer.Info.OSPlatform)
  3. ...
  4.  

Naturalmente sin utilizar DirectX. Seguiré buscando por si veo algo que me convenza, si lo encuentro lo pondre aquí el código.

Gracias y saludos
7  Programación / .NET (C#, VB.NET, ASP) / Tema Gráficos. Movimientos Sprite. Visual Basic 2013 (Solucionado) en: 21 Octubre 2016, 14:02 pm
Buenas a todos, estoy intentando mejorar el tema de movimientos de Sprites, puesto que lo utilizado hasta ahora todavia veo reflejo, aún poniendo DoubleBuffered = True en el Formulario y buscando información y probando veo que la mejor forma es utilizando "Protected Overrides Sub OnPaint". Naturalmente con DirectX o OpenGL sería otra cosa, pero no tengo ni idea.
Pongo código y lo explico (programa compilado con .NET Framework 4.0)

Código
  1. Imports System.Threading
  2.  
  3. Public Class Form1
  4.  
  5. ' Tenemos un fondo de pantalla jpg 800x600 y dos imágenes transparentes png 50x50
  6. ' DECLARACIONES de los Objetos
  7.  
  8. Private Grafico As Graphics         ' Declaramos Objeto principal del GDI+
  9. Private BitGrafico As Bitmap        ' Declaramos Bitmap que se copia en Objeto principal
  10. Private Fondo As Bitmap             ' Imagen de fondo que utilizamos
  11. Private Structure DSprite           ' Declaramos el Sprite (imagen y posición)
  12.    Dim Imagen As Bitmap
  13.    Dim Pos As Point
  14. End Structure
  15. Private Bola1, Bola2 As DSprite   ' Objetos de tipo Sprite
  16.  
  17. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  18.    ' Cargamos los Gráficos
  19.    Fondo = My.Resources.Tierra
  20.    Bola1.Imagen = My.Resources.Bola
  21.    Bola1.Pos = New Point(0, 100)
  22.    Bola2.Imagen = My.Resources.Bola2
  23.    Bola2.Pos = New Point(0, 300)
  24.  
  25.    ' Inicializamos los Objetos GDI+
  26.    Grafico = Me.CreateGraphics()
  27.    BitGrafico = New Bitmap(800, 600)
  28.    Grafico = Graphics.FromImage(BitGrafico)
  29. End Sub

Hasta aquí todo bien, ahora es cuando utilizo OnPaint y mi primera pregunta (más bien duda y confirmación). ¿Este evento impide que se ejecuten los demás eventos Paint? (sobre todo del Formulario), que para eso tendríamos que llamarlo con MyBase.OnPaint(e), al colocar evento te lo coloca automáticamente, por eso sino hace falta llamarlo ¿se puede eliminar? ¿Es bueno llamar a los eventos Paint de otros controles desde aquí?.
En el juego que realice no voy a llamar a ningún otro evento Paint y tan solo voy a tener gráficos en el Formulario principal, solo por confirmar.

Código
  1. Protected Overrides Sub OnPaint(e As PaintEventArgs)
  2.    MyBase.OnPaint(e)                                 ' Esto se prodría omitir ??
  3.    Dim de As Graphics = e.Graphics
  4.    MOVER()
  5.    DIBUJAR(de)
  6.    Thread.Sleep(100)                                  ' Retardo
  7. End Sub
  8.  
  9. Private Sub MOVER()
  10.    Bola1.Pos.X = Bola1.Pos.X + 5
  11.    Bola2.Pos.X = Bola2.Pos.X + 10
  12.  
  13.    If Bola1.Pos.X >= 800 Then Bola1.Pos.X = 0
  14.    If Bola2.Pos.X >= 800 Then Bola2.Pos.X = 0
  15.    Invalidate()                                  ' Vuelva a dibujar el control
  16. End Sub
  17.  
  18. Private Sub DIBUJAR(ByVal d As Graphics)
  19.    d.DrawImage(Fondo, 0, 0)                ' Dibujamos el fondo de pantalla
  20.    d.DrawImage(Bola1.Imagen, Bola1.Pos)    ' Dibujamos Sprite1
  21.    d.DrawImage(Bola2.Imagen, Bola2.Pos)    ' Dibujamos Sprite2
  22. End Sub
  23.  
  24. End Class

El programa va bien y se ve fluido (naturalmente el Formulario utilizo Doble buffer puesto que sino se ve el reflejo), pero al iniciar se ejecuta 2 veces OnPaint y aunque puedes variar el tema de coordenadas, parece que de inicio no informa bien si pongo unos label

Código
  1. Label1.Text = "Obj1 PosX = " & Bola1.Pos.X
  2. Label2.Text = "Obj2 PosX = " & Bola2.Pos.X

Estoy con pruebas y con un botón para parar. Veo que esta forma no hay que poner nada en diseño, a no ser por código porque hace cosas extrañas con las coordenadas. En principio estoy probando y mi segunda pregunta es ¿Es la forma correcta para saber el tema de coordenadas de los Sprites que coloque en Formulario? ¿Se puede mejorar algo para saber exactamente el tema de coordeandas x, y de los Sprites?

Colocare una nave y mas objetos y quería saber si me va a dar problemas con las coordenadas, la nave la muevo yo y los objetos como en el ejemplo se mueven automáticamente.
Gracias y saludos

8  Programación / .NET (C#, VB.NET, ASP) / Método File.ReadLines (Visual Basic 2013) (Solucionado) en: 22 Junio 2016, 15:33 pm
Buenas, ya estoy acabando mi proyecto y me encuentro con este problema

"ReadLines no es miembro de System.IO.File"

Se que son las Net.Framework porque el proyecto lo tengo con 3.5, pero no quiero cambiarlo a 4.0 o 4.5 (ya los próximos utilizaré esas versiones), pero en este proyecto deseo poder utilizar el programa en equipos con Windows XP.

Hay alguna otra forma de leer filas en los archivos, si tengo que utilizar otra importación o cualquier otro comando que lea filas y lo guarde en un array de texto. Tal y como aparece en el siguiente código, que repito funciona a partir de la versión Net Framework 4.0, pero yo lo requiero para la Net Framework 3.5 (en Windows Form).

Gracias y saludos


Código
  1. Imports System.IO
  2.  
  3. Dim Valor(4) As String
  4. For A = 0 To 4
  5.     Valor(A) = File.ReadLines(ARCHIVOC)(A)           'Leer una sola línea
  6. Next A
9  Programación / .NET (C#, VB.NET, ASP) / Objeto My.Resources y control Windows Media Player (Visual Basic 2013) en: 26 Mayo 2016, 14:02 pm
Buenas queria realizar 2 preguntas, con Windows Forms.

1º El Objeto My.Resources permite añadir otro tipo de archivos de audio que no sean WAV, esto es para utilizarlo con el control Windows Media Player en Visual Basic 2013.

2º Hay alguna forma de añadir el sonido, aunque sea WAV sino se puede otro formato en el control Windows Media Player desde los recursos (My.Resources). El código que utilizo es este, pero me gustaría compilar todo sin utilizar archivos externos.

Código
  1. AxWindowsMediaPlayer1.URL = "C:\Temp\Sonido1.wav"

Me gustaria utilizar esta forma y he probado de muchas maneras y no lo consigo.

Código
  1. My.Computer.Audio.Play(My.Resources.Sonido1, AudioPlayMode.BackgroundLoop)


Muchas gracias
Saludos
10  Programación / .NET (C#, VB.NET, ASP) / Cambiar contraseña en Visual Basic 2013 de una base Access 2010 (ADO.NET) en: 21 Febrero 2016, 20:08 pm
Buenas quería saber si se puede desde Visual Basic 2013 cambiar una contraseña de una base de datos Access 2010 (por código con ADO.NET), pongo siguiente código a modo de ejemplo. Como sería el código en el botón BtnPassword.

Código:
Public Class Form1
    'Declaración Conexión al origen de datos con proveedor Access
    Public Acceso As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Prueba.accdb;Persist Security Info=True; _
Jet OLEDB:Database Password=sabe1#012345678910lu")
    'Declaración del DataSet
    Public DS As New DataSet
    'Declaración del DataAdapter con la consulta de toda la tabla
    Public DATA As New OleDb.OleDbDataAdapter("SELECT ID, NOMBRE, TELEFONO, CORREO FROM Agenda", Acceso)

Private Sub BtnCargarTabla_Click(sender As Object, e As EventArgs) Handles BtnCargarTabla.Click
        'Conectamos a la BD y cargamos los valores al DataGridView
        Try
            Acceso.Open()
            DS.Tables.Add("Tabla")
            DATA.Fill(DS.Tables("Tabla"))
            DataGridView1.DataSource = DS.Tables("Tabla")

            MsgBox("Se ha conectado a la BD", MsgBoxStyle.Information)
        Catch ex As Exception
            MsgBox("Fallo de conexión" & Chr(13) & ex.ToString, MsgBoxStyle.Critical)
        End Try
        Acceso.Close()
End Sub

Private Sub BtnPassword_Click(sender As Object, e As EventArgs) Handles BtnPassword.Click
'....
'....

End Sub
End Class


Mi segunda pregunta a modo de tema de Seguridad. Las bases de datos con Access 2010 veo que están cifradas y puedes poner una contraseña como el ejemplo que tengo de hasta 20 caracteres. ¿Es posible mediante programas externos aunque sean de pago romper esa seguridad y acceder a la base de datos Access?
Si es así se me ocurre poner la base de Access en un recurso compartido oculto con el $ al final y desde Visual Basic que es el programa que va a los usuarios acceder por programación y así nunca saben donde se esconde la base de Access. Aunque la empresa donde estoy no hay mucho listo que digamos pero siempre es bueno poner la máxima seguridad ante datos personales.

Si alguien sabe como programar por código la primera pregunta se lo agradezco mucho, naturalmente para cambiar una contraseña por Access hay que abrirla en modo exclusivo. En caso contrario lo haría desde Access y luego volviendo a compilar el proyecto, pero ya me gustaría hacerlo todo automático tal y como se hacía en Access97 hace mucho tiempo cuando programaba con VB6 y DAO.

Muchas gracias
Saludos
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines