Oppure

Loading
24/02/16 16:37
luciano_soldin
Ciao, ho bisogno del vostro aiuto. Ho questo codice che nelle mie intenzioni vorrebbe utilizzare AxWindowsMediaPlayer1 per suonare un file mp3 appena decrittato (senza quindi riscrivere il file su disco). Ho cercato in internet ma non ho trovato nulla... Spero che qualcuno mi dia una mano!
La Form necessita di 3 Buttons, 1 Label, 1 Windows Media Player... e naturalmente occorre cambiare l'indirizzo del file mp3 di vostra scelta.
Questo e' il codice:

Imports System.Security.Cryptography
Imports System.IO
Imports System.Text

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim rij As New RijndaelManaged()
        rij.KeySize = 256
        rij.BlockSize = 256
        rij.IV = New [Byte]() {24, 23, 35, 83, 77, 35, 28, 34, 94, 25, 45, 2, 73, 26, 27, 78, 12, 23, 35, 83, 57, 35, 28, 34, 94, 25, 45, 22, 73, 26, 27, 78}
        Dim pwd As Byte() = New Byte(31) {}
        UTF8Encoding.UTF8.GetBytes("123abc").CopyTo(pwd, 0)
        Dim cs As New CryptoStream(File.OpenRead("C:\Users\User\Desktop\aa.mp3"),
      rij.CreateEncryptor(pwd, rij.IV), CryptoStreamMode.Read)
        Dim s As Stream = File.OpenWrite("C:\Users\User\Desktop\bb.mp3")
        cs.CopyTo(s)
        s.Flush()
        s.Close()
        cs.Close()
        Label1.Text = "Criptato!"
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim rij As New RijndaelManaged()
        rij.KeySize = 256
        rij.BlockSize = 256
        rij.IV = New [Byte]() {24, 23, 35, 83, 77, 35, 28, 34, 94, 25, 45, 2, 73, 26, 27, 78, 12, 23, 35, 83, 57, 35, 28, 34, 94, 25, 45, 22, 73, 26, 27, 78}
        Dim pwd As Byte() = New Byte(31) {}
        UTF8Encoding.UTF8.GetBytes("123abc").CopyTo(pwd, 0)
        Dim mp3Bytes() As Byte
        Using cs As New CryptoStream(File.OpenRead("C:\Users\User\Desktop\bb.mp3"), rij.CreateDecryptor(pwd, rij.IV), CryptoStreamMode.Read)
            Using ms As New MemoryStream
                cs.CopyTo(ms)
                mp3Bytes = ms.GetBuffer
            End Using
        End Using
        Label1.Text = "Decriptato!"

        Clipboard.Clear()            
        Clipboard.SetAudio(mp3Bytes) 
        If Clipboard.ContainsAudio Then
            Dim btsFromClipboard() As Byte = {}
            Using cbstrm As Stream = Clipboard.GetAudioStream
                ReDim btsFromClipboard(CInt(cbstrm.Length) - 1)
                cbstrm.Read(btsFromClipboard, 0, CInt(cbstrm.Length))
            End Using

            'Ora vorrei farlo suonare direttamente dalla clipboard

            AxWindowsMediaPlayer1.Ctlcontrols.play() ' ???? Come si potrebbe risolvere?

        End If

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        End
    End Sub
End Class
aaa
24/02/16 18:05
TheDarkJuster
Ora non posso cercare nella msdn, ma vedi se la classe che usi per riprodurre un file accetta uno stream... Magari memorystream o qualcosa del genere , perchè a quel punto sarebbe estremamente semplice raggiungere il tuo obiettivo.


Edit: rimossa richiesta su utilizzo della clipboard.
Ultima modifica effettuata da TheDarkJuster 24/02/16 18:09
aaa
28/02/16 10:33
Thejuster
Puoi evitare di usare altri componenti.
Ed utilizzare le api mci sendstring

puoi eseguire i file mp3 direttamente con le api senza ricorrere ad un controllo.
poi ovviamente ti gestisci la lunghezza del file ecc. ecc.
mire.forumfree.it/ - Mire Engine
C# UI Designer
28/02/16 11:41
TheDarkJuster
stackoverflow.com/questions/6340967/…

La soluzione era semplicissima, però non puoi usare il componente AxWindowsMediaPlayer, che da quel che vedo è qualcosa di nativo, che non nasce esplicitamente per il .net framework....
aaa