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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5
31  Programación / .NET (C#, VB.NET, ASP) / Re: Objeto My.Resources y control Windows Media Player (Visual Basic 2013) en: 28 Mayo 2016, 12:22 pm
Buenos días, en primer lugar muchas gracias Elektro, eres todo un genio. Si funciona el formato URI en el control WMP. La verdad estoy un poco perdido en tema de ficheros, pero veo que es la solución a los formatos de audio que no son WAV.

Visual Basic 2013 al añadir cualquier formato que no sea WAV toma como fichero como bien dices en My.Resources, pero ya veo una forma de poder utilizarlos y asi compilar un único archivo. Comentarte que lo que estoy realizando no es un Reproductor, sino un juego de naves y globos con dosis educativa (operaciones matemáticas para niños), donde tenía una música de fondo con WMP y utilizaba sonidos WAV con My.Computer.Audio.Play, que solo me dejaba reproducir uno a la vez. De esta forma podía combinar más sonidos puesto que el WMP puedes añadir más (realmente con el sonido de fondo y 2 sonidos más a la vez, disparo de nave y explosión me basta para no saturar, no empleo nada de DirectX y tampoco sé).

Respecto a tu código he añadido una línea para cambiar la extensión, puesto que el archivo temporal que te crea al reproducir te salta un mensaje que es una extensión .TMP y tienes que contestar y naturalmente eso no quiero que salga en el programa cada vez que reproduce el sonido o aunque sea 1 sola vez marcando el Checkbox.

Código
  1. Dim filepath As String = Path.GetTempFileName()
  2. filepath = Path.ChangeExtension(filepath, ".mid")
  3. Dim fileUri As New Uri(String.Format("file:///{0}", filepath))
  4. ExtractResourceToDisk(My.Resources.Sonido, filepath, overwrite:=True)
  5.  
  6. AxWindowsMediaPlayer1.URL = fileUri.AbsoluteUri

He probado con archivo MID (son los que utilizaré puesto que apenas ocupan), MP3 y archivos WAV (hay que quitarles extensión al añadir a My.Resources para que te lo añada como archivo) y funcionan todos perfectamente.

Implementaré esto en el código de mi juego y tan solo sera ver si no demora con el funcionamiento, puesto que antes solo utilizaba estas instrucciones para llamar a los sonidos

Código
  1. My.Computer.Audio.Play(My.Resources.Sonido1, AudioPlayMode.Background)
  2. AxWindowsMediaPlayer1.URL = "Sonido.mid"

En el código además de la nave, muevo unos cuantos objetos, Globos, disparos, fondo con un pequeño Scroll horizontal y comprobare que no se pare, aunque hoy día los ordenadores son muy rápidos, pero estoy utilizando Net.Framework 3.5 para que otros ordenadores más lentos y con XP también sea compatible.

Gracias por tu librería y muy currada. Yo soy un simple aficionado que más bien programo por hobby. Los programas y juegos que realizó intento que sean en un único archivo (utilizando las NET que ya tiene los ordeandores instalado). En este proyecto me será imposible porque Windows Media Player trae consigo dos librerías (AxInterop.WMPLib.dll e Interop.WMPLib.dll) aunque apenas ocupan, pero ya por lo menos todos los sonidos los tendré compilados con el ejecutable.

Sino es mucha molestia, pero a modo consulta no hace falta que me pongas código, con Windows Presentation Foundation (WPF) puesto que dicen que es más visual, que incluye animaciones, video, sonidos, 3D; se podría añadir recursos de audio que no sean WAV, en My.Resources o bien lo que tenga. Desconozco completamente WPF y cuando instale VB.net ya adapté el entorno a la programación con Windows Forms, puesto que yo venía de VB6.

Muchas gracias
Saludos

32  Programación / .NET (C#, VB.NET, ASP) / Re: Visual Basic en: 27 Mayo 2016, 08:11 am
Buenas me imagino que lo que te están pidiendo es un formulario de entrada a la aplicación con un login y password y que pueda tener algunos perfiles de acceso (usuario, usuario avanzado, administrador...)

Para ello debe agregar un nuevo formulario o bien un modulo que incorpore un procedimiento o función público (lo puedas usar en toda la aplicación), desde el menu Proyecto, Agregar nuevo elemento... (Módulo o Windows Form)

Dependiento del nivel de acceso del usuario podrá realizar o tendrá activadas una serie de caracteristicas o no de tu aplicación. Normalmente la utilidad que yo empleo a esto es en las Bases de Datos.

Saludos
33  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
34  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
35  Programación / .NET (C#, VB.NET, ASP) / Re: Crear matriz de controles MenuStrip partiendo en modo diseño (Visual Basic 2013) en: 14 Octubre 2015, 11:55 am
Muy bueno tu código Lekin, he probado lo del separador, no se me había ocurrido puesto que como te comente el control MenuStrip lo cree en modo diseño y sólo la parte que me hacía falta por código, por eso "MnuRepasoSuma" procede de un nombre del MenuStrip (diseño). Si tuviera que programarlo por código todo sería muy extenso porque cambio propiedades de name, font, checked, pongo imágenes de iconos... y creo que eso sería mejor hacerlo en una clase o un módulo que no se muy bien para hacer una array de controles que se utilice para cuando necesitemos llamarlo como antes se hacía con VB6.

Como mencioné solo faltaría aplicar el método Dispose, he leido algo pero veo que no me hace falta aplicarlo porque los objetos los empleo en el Formulario principal y estos se liberan en el archivo "Form1.Designer.vb" al finalizar el Form. Aunque no se si al salir debería llamar al Objeto.Dispose() para liberar por si acaso el GC (Garbage Collector) no los libera bien los recursos.

Si empleara alguna clase o módulo donde genere los objetos veo que si hay que implementar el método Dispose, que la verdad sería otro tema a tratar y extenso, donde las explicaciones de Microsoft las veo muy complicadas de entender y tendría que ponerme a ello, cosa que de momento para mi programa no necsito.

Excelente tus aportaciones y con el menú contextual. Este Visual Basic se parece cada vez más a Visual C, no tengo nada en contra pero para mi pienso que todo lo que se pueda realizar por diseño te ahorras trabajo y si hay que emplear mucho código es mejor crearte tus clases o módulos para no ser repetitivo por tanto no debería haber desaparecido la forma antigua de llamar a los array de controles y eso debería haberse implementado en Visual Basic 2013.

Muchas gracias por todo y mis nuevas preguntas iran al foro net
36  Programación / .NET (C#, VB.NET, ASP) / Re: Crear matriz de controles MenuStrip partiendo en modo diseño (Visual Basic 2013) en: 7 Octubre 2015, 15:30 pm
Pongo el código que ya he probado y funciona el evento Click, he cambiado algunas cosas puesto que primero el control MenuStrip lo creo en tiempo de diseño, tengo muchos menús ya creados y submenús y ponerlo todo en código es más lioso.

Solo pongo en código los 3 submenus que tienen varias opciones y que desembocan todos en un mismo click donde solo cambio una variable RE.

Código
  1. Private Prueba(2) As ToolStripMenuItem             'Declaro Array de elementos
  2.  
  3. 'Pongo los elementos en el submenú correspondiente y los agrego, además del evento Click
  4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  5.     Prueba(0) = New ToolStripMenuItem("Numero1")
  6.     Prueba(1) = New ToolStripMenuItem("Numero2")
  7.     Prueba(2) = New ToolStripMenuItem("Numero3")
  8.     For I = 0 To 2
  9.          MnuRepasoSuma.DropDownItems.Add(Prueba(I))
  10.          AddHandler Prueba(I).Click, AddressOf EventoMenu
  11.     Next I
  12. End Sub
  13.  
  14. Private Sub EventoMenu(ByVal sender As System.Object, ByVal e As System.EventArgs)
  15.     Dim Index As Integer = Array.IndexOf(Prueba, sender) 'Obtiene índice control seleccionado
  16.     Form2.Close()
  17.     TAB = "SUMAR" : RE = Index + 1
  18.     Form2.Show()
  19. End Sub
  20.  

Naturalmente tendre que utilizar for..next para añadir propiedades restantes, como dije seguramente genere una Clase con el procedimiento de declarar array y añadir propiedades y controles.

Una última pregunta, aunque funciona bien hay que utilizar el método Dispose, he leido algo que es como el Unload Me, pero no se muy bien como codificarlo y si al emplear algún Procedimiento hay que liberar objeto y en el código que tengo donde habría que colocarlo o bien al ser un código simple no hace falta y ya se libera todo cuando se cierra el programa?

Gracias y salu2
37  Programación / .NET (C#, VB.NET, ASP) / Re: Crear matriz de controles MenuStrip partiendo en modo diseño (Visual Basic 2013) en: 7 Octubre 2015, 12:48 pm
Gracias Lekim, lo primero desconocía que hubiera un subforo para .net en Programación general, a partir de ahora expongo mis preguntas ahí.

De momento solo programo con Windows Form, lo adapté todo para trabajar con Windows Form, incluso la apariencia porque ya de por sí es difícil pasar de VB6 a Visual Basic 2013, como para ponerse a programar con WPF, más bonito con web, gráficos... pero prefiero lo que ya sabía y adaptarlo, además en los programas utilizo la versión .Net Framework 3.5 para que tenga compatibilidad con XP porque tengo compañeros que utilizan todavía ese SO.

Estoy probando tu código del Label, cambiándolo por un botón y desconocía como agregar eventos a una matriz de controles.

Código
  1. AddHandler LabelArray(I).Click, AddressOf LabelArray_Click

y el cómo llamar a ese evento Click o naturalmente el que pongas añadiendo  a AddHandler y comparándolo con una variable como antes se hacía con Index.

Código
  1. Private Sub LabelArray_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  2.   'Obtiene el índice del control seleccionado
  3.   Dim Index As Integer = Array.IndexOf(LabelArray, sender)
  4.    If Index.Equals(0) Then LabelArray(0).Text = "HOLA"
  5. End Sub
  6.  

A todo esto se me ocurre añadir una clase o módulo, de forma que las matrices de controles no tengan definido el número de array "Dim LabelArray() As Label" y luego dimensionarlas desde el programa principal "LabelArray = New Label (NumTotal  - 1) {}" donde pongamos en la variable "NumTotal" el número de elementos que vayamos a utilizar. Veo que hay que ir haciendo procedimientos para ahorrarnos código que antes con dos pulsaciones podíamos hacer.

Voy a probar para mi programa añadiendo los elementos ToolStripMenuItem por código, seguramente genere un procedimento dentro del Formulario principal y más adelante ya crearé un módulo para ir acoplando distintos Controles de arrays y así intentar en mis programas que la utilización sea parecida como antes con VB6 e index.

MUCHAS GRACIAS, si me surge algún problema contestaré por aqui; pero lo dicho las nuevas preguntas lo haré por el foro NET.
38  Programación / .NET (C#, VB.NET, ASP) / Matriz de controles MenuStrip partiendo modo diseño (VBasic 2013) (Solucionado) en: 6 Octubre 2015, 09:09 am
Buenos días, veo que en VB6 teníamos la propiedad Index y cuando creabamos una matriz de controles te preguntaba si ponías el mismo nombre VB "Desea crear una matriz de controles...?", asi cuando empleabas el mismo evento Click solo hacía referencia al pulsado por la propiedad Index.

Eso es lo que preciso en mi programa, tengo un menú bastante extenso y ya cambiado muchas cosas y solo tengo 2 submenus que hacen referencia según lo que pulsas a un mismo código, repito por tanto un total de 20, este código.

Código
  1. Private Sub MnuRepasoSuma1_Click(sender As Object, e As EventArgs) Handles MnuRepasoSuma1.Click
  2.        Form2.Close()
  3.        TAB = "SUMAR" : RE = 1
  4.        Form2.Show()
  5. End Sub
  6.  
  7. Private Sub MnuRepasoSuma2_Click(sender As Object, e As EventArgs) Handles MnuRepasoSuma2.Click
  8.        Form2.Close()
  9.        TAB = "SUMAR" : RE = 2
  10.        Form2.Show()
  11. End Sub
  12.  
  13. Private Sub MnuRepasoSuma3_Click(sender As Object, e As EventArgs) Handles MnuRepasoSuma3.Click
  14.        Form2.Close()
  15.        TAB = "SUMAR" : RE = 3
  16.        Form2.Show()
  17. End Sub
  18. ...
  19. ...
  20.  

Y así 20 veces, requiero por tanto algo parecido a la matriz, pero claro no voy a crear todo el MenuStrip por código porque es muy extenso, con muchas propiedades, colores, checked, font... y tardo mucho más y quería saber si se puede agrupar un mismo evento de pulsaciones de Click, como antes se hacía con Index para aprovechar un mismo codigo y que sólo cambio una variable que es RE que según lo pulsado antes se podía jugar con esa variable Index en VB6.

Requiero hacer lo mismo pero en VB2013, haber si hay alguna forma sin la de crear todo el menú con los submenus porque sino lo dejo asi (copiar y pegar) aunque no lo veo bien. Por eso me imagino que debe existir alguna forma de agrupar eventos y que se sepa cuando pulsas el 1, el 2, el 3 y que todo vaya a un mismo evento Click.

Muchas gracias y como siempre seguiré mirando a ver si veo alguna solución.

39  Programación / .NET (C#, VB.NET, ASP) / Re: Introducir texto en un Formulario (Visual Basic 2013) en: 5 Octubre 2015, 10:37 am
Al final utilizaré este código y con el evento Paint, es lo que más se asemeja al print de antes. No utilizo etiquetas, ni label puesto que voy a utilizar Formularios MDI y tendría que estar realizando más código y no por diseño, además de que solo van a ser listas al igual que si imprimes. Si fuera un solo Formulario si lo haría.

Código
  1. [code=vbnet]
  2.  
  3. Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
  4.        Dim Suma As Integer = 15
  5.        Dim A As Integer
  6.        For A = 0 To 9
  7.            e.Graphics.DrawString("La suma es = " & Suma + A, New Font("Tahoma", 12, _
  8.           FontStyle.Bold), Brushes.Black, New Point(50, 10 + (A * 20)))
  9.        Next A
  10. End Sub
[/code]

Esta es la SOLUCIÓN que veo. Gracias a todos y al foro.
40  Programación / .NET (C#, VB.NET, ASP) / Re: Introducir texto en un Formulario (Visual Basic 2013) en: 2 Octubre 2015, 12:05 pm
De momento he encontrado una solución y lo tengo resuelto mediante el método Drawing, aunque si alguien conoce alguna otra forma parecida a Print del VB6, porque antes con 2 líneas hacias lo mismo que este código.

Private Sub Contorno_Click(sender As Object, e As EventArgs) Handles Contorno.Click
        Dim Suma As Integer = 10
        Dim A As Integer
        Dim MiGrafico As Graphics = Me.CreateGraphics
        Dim MiFuente As Font
        Dim MiPincel As Brush

        MiPincel = New Drawing.SolidBrush(Color.Blue)
        MiFuente = New System.Drawing.Font("Tahoma", 12, FontStyle.Underline)
        For A = 0 To 9
            MiGrafico.DrawString("Operación " & Suma + A, MiFuente,  MiPincel, 200, 10 + (A * 20))
        Next
End Sub
Páginas: 1 2 3 [4] 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines