PDA

View Full Version : [VB6] Funzione PlaySound


ASyd
05-09-2007, 14:40
Sto provando ad usare la funzione PlaySound ma riscontro alcuni problemi.

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ()


Private Sub Command1_Click()
PlaySound "c:\suono.wav"
End Sub



Riusltato alla pressione del tasto: "Errore di runtime '49': Convenzione di chiamata DLL non valida"

Questo mi servirebbe per fare un programmino che, associandolo poi a "keypress", faccia emettere al pc un suono quando si preme un determinato tasto.

andbin
05-09-2007, 14:50
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ()


Private Sub Command1_Click()
PlaySound "c:\suono.wav"
End Sub
Non hai dichiarato i parametri! (e servirebbe dichiarare delle costanti)

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

e ovviamente documentati su MSDN per sapere cosa passare in quei parametri.

cionci
05-09-2007, 15:26
Scaricati ApiGuide e vedrai che non pentirai ;)

http://allapi.mentalis.org/downloads/apiguide/agsetup.exe

ASyd
05-09-2007, 15:30
grazie1000 ;)

come accennavo prima dovrei fare in modo che il suono venga riprodotto quando viene premuto una particolare tasto della tastiera, ciò è molto semplice da riprodurre se si tratta di applicare la cosa ad un sigolo elemento (per esempio ad un textbox usando keyascii).
Quello che vorrei fare io è un qualcosa che lavori in background e intercetti le pressioni dei tasti e quindi riproduca il suono, qualsiasi cosa si stia facendo con windows.

cionci
05-09-2007, 15:37
Servirebbe un hook di sistema (cerca SetWindowsHookEx su API Guide), la cosa funziona facilmente in VB a livello di applicazione, ma se non sbaglio per farla funzionare a livello di sistema bisogna realizzarla in una DLL e poi devi "avviare" la DLL con la tua applicazione.
In generale per fare questo tipo di cose non si usa VB, ma C o C++.

andbin
05-09-2007, 15:38
Quello che vorrei fare io è un qualcosa che lavori in background e intercetti le pressioni dei tasti e quindi riproduca il suono, qualsiasi cosa si stia facendo con windows.Allora è un'altra questione, più delicata.
Perché devi usare un 'hook' globale per intercettare gli eventi relativi alla tastiera (vedi SetWindowsHookEx() ). O eventuale usare un hot-key (vedi RegisterHotKey() ), dipende da cosa devi intercettare.

Ma in ogni caso la strada, sopratutto con VB6, è un po' più complicata.