Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - suonare un file mp3 da clipboard
Forum - C# / VB.NET - suonare un file mp3 da clipboard

Avatar
luciano_soldin (Normal User)
Newbie


Messaggi: 1
Iscritto: 24/02/2016

Segnala al moderatore
Postato alle 17:37
Mercoledì, 24/02/2016
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:

Codice sorgente - presumibilmente VB.NET

  1. Imports System.Security.Cryptography
  2. Imports System.IO
  3. Imports System.Text
  4.  
  5. Public Class Form1
  6.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  7.         Dim rij As New RijndaelManaged()
  8.         rij.KeySize = 256
  9.         rij.BlockSize = 256
  10.         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}
  11.         Dim pwd As Byte() = New Byte(31) {}
  12.         UTF8Encoding.UTF8.GetBytes("123abc").CopyTo(pwd, 0)
  13.         Dim cs As New CryptoStream(File.OpenRead("C:\Users\User\Desktop\aa.mp3"),
  14.       rij.CreateEncryptor(pwd, rij.IV), CryptoStreamMode.Read)
  15.         Dim s As Stream = File.OpenWrite("C:\Users\User\Desktop\bb.mp3")
  16.         cs.CopyTo(s)
  17.         s.Flush()
  18.         s.Close()
  19.         cs.Close()
  20.         Label1.Text = "Criptato!"
  21.     End Sub
  22.  
  23.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  24.         Dim rij As New RijndaelManaged()
  25.         rij.KeySize = 256
  26.         rij.BlockSize = 256
  27.         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}
  28.         Dim pwd As Byte() = New Byte(31) {}
  29.         UTF8Encoding.UTF8.GetBytes("123abc").CopyTo(pwd, 0)
  30.         Dim mp3Bytes() As Byte
  31.         Using cs As New CryptoStream(File.OpenRead("C:\Users\User\Desktop\bb.mp3"), rij.CreateDecryptor(pwd, rij.IV), CryptoStreamMode.Read)
  32.             Using ms As New MemoryStream
  33.                 cs.CopyTo(ms)
  34.                 mp3Bytes = ms.GetBuffer
  35.             End Using
  36.         End Using
  37.         Label1.Text = "Decriptato!"
  38.  
  39.         Clipboard.Clear()            
  40.         Clipboard.SetAudio(mp3Bytes)
  41.         If Clipboard.ContainsAudio Then
  42.             Dim btsFromClipboard() As Byte = {}
  43.             Using cbstrm As Stream = Clipboard.GetAudioStream
  44.                 ReDim btsFromClipboard(CInt(cbstrm.Length) - 1)
  45.                 cbstrm.Read(btsFromClipboard, 0, CInt(cbstrm.Length))
  46.             End Using
  47.  
  48.             'Ora vorrei farlo suonare direttamente dalla clipboard
  49.  
  50.             AxWindowsMediaPlayer1.Ctlcontrols.play() ' ???? Come si potrebbe risolvere?
  51.  
  52.         End If
  53.  
  54.     End Sub
  55.  
  56.     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  57.         End
  58.     End Sub
  59. End Class


PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 19:05
Mercoledì, 24/02/2016
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 il 24/02/2016 alle 19:09
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 11:33
Domenica, 28/02/2016
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.


PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 12:41
Domenica, 28/02/2016
http://stackoverflow.com/questions/6340967/play-wav-mp3-fr ...

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....

PM Quote