Meilleur auteur de réponses
Comment activer et régler le son automatiquement ?

Question
Réponses
-
Salut EhJoe,
Cela fait bien longtemps ;)
Si je comprends bien, tu veux activer le son de Windows si celui-ci est 'Muté' et mettre le volume à 30% ?
Chez moi, je viens de tester ceci :Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) Private Sub Button1Click(sender As Object, e As EventArgs) Handles Button1.Click ' On descend le volume à zéro For i = 1 To 100 keybd_event(Windows.Forms.Keys.VolumeDown, 255, 0, 0) keybd_event(Windows.Forms.Keys.VolumeDown, 0, 0, 0) Next ' Si le son est muté on unmute keybd_event(Windows.Forms.Keys.VolumeMute, 0, 0, 0) ' On augmente le volume suivant le nombre de boucles For i = 1 To 12 ' 12 est égal à ~50% keybd_event(Windows.Forms.Keys.VolumeUp, 1, 0, 0) keybd_event(Windows.Forms.Keys.VolumeUp, 0, 0, 0) Next End Sub
Je ne dois surement pas t'avoir compris. Cela m'a l'air trop simple !
Bien à toi.
- Marqué comme réponse EhJoe vendredi 28 septembre 2012 08:29
Toutes les réponses
-
Bonjour Joseph,
Voici un lien qui devrait normalement vous aider :
http://support.microsoft.com/kb/178456
Si vous avez besoin d'aide, je serais disponible ce soir pour faire un exemple.
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
-
-
Bonsoir Lyamine,
Merci,
Voici le projet en vb6 zipé, ici :
http://mesromans.free.fr/son.zip
Mais il ne fonctionne pas, en plus c'est du VB6...
Au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
Bonsoir,
Je n'ai pas VB6, mais je vais regarder pour le faire en .Net. Est-ce que ça vous irait ?
(Ajout)
Autant pour moi, c'était un lien avec du vb6
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
- Modifié Lyamine lundi 24 septembre 2012 21:07
-
-
Ok pas de soucis.
Sinon j'ai trouvé ceci, http://winmm.codeplex.com/
Est-ce qu'il vous convient ?
(je fini de mon coté le code si besoin et par envie, j'étais rentré tard)
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
- Modifié Lyamine mardi 25 septembre 2012 00:02
-
Bonjour Lyamine,
Merci, mais la page à laquelle tu me renvoies est écrite en "anglais" (I do not undestand)...
Oui, je veux bien ton code alors, juste le code minimum en "PROCEDURE" pour activer et le volume et le caler à une valeur x, juste ça :o)
Pour l'envoi, vois s'il te plaît en dessous de ce message ma signature, tu trouveras de quoi me contacter par mail.
En te remerciant encore et au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
Bonjour Lyamine,
Merci, mais la page à laquelle tu me renvoies est écrite en "anglais" (I do not undestand)...
Oui, je veux bien ton code alors, juste le code minimum en "PROCEDURE" pour activer et le volume et le caler à une valeur x, juste ça :o)
Pour l'envoi, vois s'il te plaît en dessous de ce message ma signature, tu trouveras de quoi me contacter par mail.
En te remerciant encore et au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
Bonjour Joseph,
Et bien de mon coté la récupération d'information sur le Volume à fonctionné. Dès que j'ai du temps dans la journée, je termine le code pour l'affection du volume sinon se sera ce soir. Ok, je te contacterais par mail et je mettrais le code pour les autres.
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
-
Bonsoir,
Voici ce que j'ai fait pour le moment :
Imports System.Runtime.InteropServices Public Class Form1 Private phMx As IntPtr Private ptr As IntPtr Private isOpened As MMRESULT Private isClosed As MMRESULT Private volumCtrl As MIXERCONTROL Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If isOpened = MMRESULT.MMSYSERR_NOERROR Then isClosed = mixerClose(Me.phMx) End If End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load ptr = Marshal.AllocHGlobal(4) 'allouer un secteur pour récupérer le handle de mixer isOpened = mixerOpen(ptr, 0, IntPtr.Zero, IntPtr.Zero, False) 'ouverture du mixer If isOpened = MMRESULT.MMSYSERR_NOERROR Then phMx = Marshal.ReadIntPtr(ptr) 'lecture du pointer dans le pointer ;) Marshal.FreeHGlobal(ptr) 'libérer ce pointer car nous avons lu la valeur de handle de mixer volumCtrl = GetVolumeControl() Else MessageBox.Show(String.Format("Erreur d'ouverture du contrôleur son : " _ + vbCrLf + "{0}", isOpened), _ "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub Private Function GetVolumeControl() As MIXERCONTROL Dim mxlResult As MMRESULT Dim mxl As MIXERLINE = New MIXERLINE() mxl._Target = New Target() mxl.cbStruct = Marshal.SizeOf(mxl) mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS mxl.dwDestination = MIXERCONTROL_CONTROLTYPE_VOLUME Dim mxlPtr As IntPtr = Marshal.AllocHGlobal(mxl.cbStruct) Marshal.StructureToPtr(mxl, mxlPtr, True) mxlResult = mixerGetLineInfo(phMx, mxlPtr, MIXER_GETLINEINFOF_COMPONENTTYPE) If mxlResult = MMRESULT.MMSYSERR_NOERROR Then 'récupération d'info mxl = DirectCast(Marshal.PtrToStructure(mxlPtr, mxl.GetType()), MIXERLINE) Marshal.FreeHGlobal(mxlPtr) 'afficher le nom du périphérique audio dans listbox _ListInfo.Items.Clear() _ListInfo.Items.Add(String.Concat(mxl.szName)) _ListInfo.Items.Add(String.Concat(mxl.szShortName)) Dim mxlc As MIXERLINECONTROLS = New MIXERLINECONTROLS() mxlc.union = New MIXERLINECONTROLS_union() Dim volCtrl As MIXERCONTROL = New MIXERCONTROL() 'utilisé pour avoir la taille de la structure :/ mxlc.cbStruct = Marshal.SizeOf(mxlc) mxlc.dwLineID = mxl.dwLineID mxlc.union.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME mxlc.cControls = 1 mxlc.cbmxctrl = Marshal.SizeOf(volCtrl.GetType()) mxlc.pamxctrl = Marshal.AllocHGlobal(4) Dim mxlcPtr As IntPtr = Marshal.AllocHGlobal(mxlc.cbmxctrl) Marshal.StructureToPtr(mxlc, mxlcPtr, True) Dim mxlcResult As MMRESULT mxlcResult = mixerGetLineControls(phMx, mxlcPtr, MIXER_GETLINECONTROLSF_ONEBYTYPE) If mxlResult = MMRESULT.MMSYSERR_NOERROR Then 'récupération d'info mxlc = DirectCast(Marshal.PtrToStructure(mxlcPtr, mxlc.GetType()), MIXERLINECONTROLS) Dim mxc As MIXERCONTROL = New MIXERCONTROL() mxc = DirectCast(Marshal.PtrToStructure(mxlc.pamxctrl, mxc.GetType()), MIXERCONTROL) 'Marshal.FreeHGlobal(mxlPtr) Return mxc Else Marshal.FreeHGlobal(mxlPtr) MessageBox.Show(String.Format("Erreur d'ouverture du contrôleur son : " _ + vbCrLf + "{0}", isOpened), _ "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error) Return Nothing End If Else Marshal.FreeHGlobal(mxlPtr) MessageBox.Show(String.Format("Erreur d'ouverture du contrôleur son : " _ + vbCrLf + "{0}", isOpened), _ "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error) Return Nothing End If End Function Private Sub setVolume(volume As Integer) Dim mxcd As MIXERCONTROLDETAILS = New MIXERCONTROLDETAILS() mxcd.union = New MIXERCONTROLDETAILS_union() Dim vol As MIXERCONTROLDETAILS_UNSIGNED = New MIXERCONTROLDETAILS_UNSIGNED() Dim volPtr As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(vol)) Dim mxcdPtr As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(mxcd)) Dim result As MMRESULT vol.dwValue = volume Marshal.StructureToPtr(vol, volPtr, True) mxcd.dwControlID = volumCtrl.dwControlID mxcd.union.hwndOwner = IntPtr.Zero mxcd.union.cMultipleItems = 0 mxcd.cbStruct = Marshal.SizeOf(mxcd) mxcd.cbDetails = Marshal.SizeOf(vol) mxcd.cChannels = 1 mxcd.paDetails = volPtr Marshal.StructureToPtr(mxcd, mxcdPtr, True) result = mixerSetControlDetails(phMx, mxcdPtr, 0) 'MIXER_SETCONTROLDETAILSF_VALUE = 0 ---> googled it ! MessageBox.Show(result.ToString()) Marshal.FreeHGlobal(mxcdPtr) Marshal.FreeHGlobal(volPtr) End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click setVolume(60000) 'de 0 à 65535 End Sub End Class
Module :
Imports System.Runtime.InteropServices Module Winmm Public Const MAXPNAMELEN As Integer = 32 Public Const MIXER_LONG_NAME_CHARS As Integer = 64 Public Const MIXER_SHORT_NAME_CHARS = 16 Public Const MIXER_GETLINEINFOF_COMPONENTTYPE As Integer = &H3& Public Const MIXER_GETCONTROLDETAILSF_VALUE As Integer = &H0& Public Const MIXER_GETLINECONTROLSF_ONEBYTYPE As Integer = &H2& Public Const MIXERLINE_COMPONENTTYPE_DST_FIRST As Integer = &H0& Public Const MIXERLINE_COMPONENTTYPE_SRC_FIRST As Integer = &H1000& Public Const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS As Integer = _ (MIXERLINE_COMPONENTTYPE_DST_FIRST + 4) Public Const MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE As Integer = _ (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3) Public Const MIXERLINE_COMPONENTTYPE_SRC_LINE As Integer = _ (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2) Public Const MIXERCONTROL_CT_CLASS_FADER As Integer = &H50000000 Public Const MIXERCONTROL_CT_UNITS_UNSIGNED = &H30000 Public Const MIXERCONTROL_CONTROLTYPE_FADER As Integer = _ (MIXERCONTROL_CT_CLASS_FADER Or _ MIXERCONTROL_CT_UNITS_UNSIGNED) Public Const MIXERCONTROL_CONTROLTYPE_VOLUME As Integer = _ (MIXERCONTROL_CONTROLTYPE_FADER + 1) Public Enum MMRESULT MMSYSERR_NOERROR = 0 MMSYSERR_ERROR = 1 MMSYSERR_BADDEVICEID = 2 MMSYSERR_NOTENABLED = 3 MMSYSERR_ALLOCATED = 4 MMSYSERR_INVALHANDLE = 5 MMSYSERR_NODRIVER = 6 MMSYSERR_NOMEM = 7 MMSYSERR_NOTSUPPORTED = 8 MMSYSERR_BADERRNUM = 9 MMSYSERR_INVALFLAG = 10 MMSYSERR_INVALPARAM = 11 MMSYSERR_HANDLEBUSY = 12 MMSYSERR_INVALIDALIAS = 13 MMSYSERR_BADDB = 14 MMSYSERR_KEYNOTFOUND = 15 MMSYSERR_READERROR = 16 MMSYSERR_WRITEERROR = 17 MMSYSERR_DELETEERROR = 18 MMSYSERR_VALNOTFOUND = 19 MMSYSERR_NODRIVERCB = 20 WAVERR_BADFORMAT = 32 WAVERR_STILLPLAYING = 33 WAVERR_UNPREPARED = 34 End Enum Public Structure MIXERLINE Public cbStruct As Integer Public dwDestination As Integer Public dwSource As Integer Public dwLineID As Integer Public fdwLine As Integer Public dwUser As IntPtr Public dwComponentType As Integer Public cChannels As Integer Public cConnections As Integer Public cControls As Integer <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MIXER_SHORT_NAME_CHARS)> _ Public szShortName As Char() <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MIXER_LONG_NAME_CHARS)> _ Public szName As Char() Public _Target As Target End Structure Public Structure Target Public dwType As Integer Public dwDeviceID As Integer Public wMid As Integer Public wPid As Integer Public vDriverVersion As Integer <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MAXPNAMELEN)> _ Public szPname As Char() End Structure Public Structure MIXERCONTROLDETAILS Public cbStruct As Integer Public dwControlID As Integer Public cChannels As Integer Public union As MIXERCONTROLDETAILS_union Public cbDetails As Integer Public paDetails As IntPtr End Structure Structure MIXERCONTROLDETAILS_UNSIGNED Public dwValue As UInteger End Structure Public Structure MIXERCONTROLDETAILS_union Public hwndOwner As IntPtr Public cMultipleItems As Integer End Structure Public Structure MIXERLINECONTROLS Public cbStruct As Integer Public dwLineID As Integer Public union As MIXERLINECONTROLS_union Public cControls As Integer Public cbmxctrl As Integer Public pamxctrl As IntPtr End Structure Public Structure MIXERLINECONTROLS_union Public dwControlType As Integer End Structure Structure MIXERCONTROL Public cbStruct As Integer Public dwControlID As Integer Public dwControlType As Integer Public fdwControl As Integer Public cMultipleItems As Integer <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MIXER_SHORT_NAME_CHARS)> _ Public szShortName As Char() <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MIXER_LONG_NAME_CHARS)> _ Public szName As Char() Public Bounds As MIXERCONTROL_Bounds Public Metrics As MIXERCONTROL_Metrics End Structure Structure MIXERCONTROL_Bounds Public lMinimum As Long Public lMaximum As Long Public cSteps As Integer Public cbCustomData As Integer <MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> _ Public dwReserved As Integer() End Structure Structure MIXERCONTROL_Metrics Public cSteps As Integer Public cbCustomData As Integer <MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> _ Public dwReserved As Integer() End Structure <DllImport("Winmm.dll")> _ Function mixerOpen(phmx As IntPtr, uMxId As UInt32, dwCallback As IntPtr, dwInstance As IntPtr, fdwOpen As Integer) As MMRESULT End Function <DllImport("Winmm.dll")> _ Function mixerClose(phmx As IntPtr) As MMRESULT End Function <DllImport("Winmm.dll")> _ Function mixerGetLineInfo(phmx As IntPtr, pmxl As IntPtr, fdwInfo As Integer) As MMRESULT End Function <DllImport("Winmm.dll")> _ Function mixerSetControlDetails(phmx As IntPtr, pmxcd As IntPtr, fdwDetails As Integer) As MMRESULT End Function <DllImport("Winmm.dll")> _ Function mixerGetLineControls(phmx As IntPtr, pmxlc As IntPtr, fdwControls As Integer) As MMRESULT End Function End Module
Comme je suis super occupé cette semaine, je finirais dès que possible. Il ne me reste plus que l'affectation du volume. J'ai une erreur de type INVALID_PARAM (en gros).
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
-
Bonjour, suite
Ben j'attendrais, pas de problème, mais... tu es certain qu'il faut tout ce code pour (activer le volume et le mettre à 20) par exemple ?
Et tant qu'à faire, mettre tout dans une form, comme ça on met une nouvelle form et on y fait appel avec des variables public, au lieu d'avoir une form et un module...
Car ma question c'est : activer le volume du haut-parleur d'autorité et le mettre à une valeur x, c'est tout, pas davantage.
Si tu veux faire un traitement complet sans doute faut-il le mettre ailleurs dans les exemples, et juste mettre le code ici concernant ma question...
Au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
- Modifié EhJoe mercredi 26 septembre 2012 06:35
-
Bonjour, suite
Ben j'attendrais, pas de problème, mais... tu es certain qu'il faut tout ce code pour (activer le volume et le mettre à 20) par exemple ?
Car ma question c'est : activer le volume du haut-parleur d'autorité et le mettre à une valeur x, c'est tout, pas davantage.
Si tu veux faire un traitement complet sans doute faut-il le mettre ailleurs dans les exemples, et juste mettre le code ici concernant ma question...
Au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
Bonjour,
Oui il faut déjà récupérer les informations du périphérique concerné avant de faire l'affectation de volume. Ce que je vais faire à la rigueur c'est d'utiliser le framework winmm du lien que je t'ai fourni. Ça ira plus vite. Sa ne pose pas de problème si il y a une dll en plus ?
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
-
suite...
Non, un DLL en plus ne pose pas de problème à partir du moment où on peut la posséder facilement, et donc la mettre dans les ressources pour simplement la coller dans le répertoire de l'exe au premier lancement , chat marche :o)
Cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
suite...
Non, un DLL en plus ne pose pas de problème à partir du moment où on peut la posséder facilement, et donc la mettre dans les ressources pour simplement la coller dans le répertoire de l'exe au premier lancement , chat marche :o)
Cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
OK et bien dès ce soir, je prend leur projet et je code pour faire le test. A la rigueur je vais reprendre le source et l'intégrer directement au projet.
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
-
Lyamine,
J'ai intégré le code en vb6 (j'ai vb6.pro), mais ça ne marchait pas, je n'en suis même pas étonné d'ailleurs, avec autant de code pour une si petite fonction, c'est rare que ça tourne du premier coup. Ce que je t'ai zipé est du vb6 d'origine, mais je doute que l'éditeur de vbNet sâche le retaper en vbNet, hum...
Je n'y connais rien en la matière, étant très mal à l'aise avec les fonctions et encore davantage avec l'utilisation des DLL (faute d'avoir appris à en faire), toutefois je reste étonné que vbNet, framWork ne gère pas ça un peu mlieux qu'en vb6, du genre :
dim r as integer = call fonctionVolume(boolean, byte)
Dommage... j'ai juste besoin de ça moi. Enfin, pouvu que chat marche c'est le principal...
Au plaisir, et encore merci, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
Lyamine,
J'ai intégré le code en vb6 (j'ai vb6.pro), mais ça ne marchait pas, je n'en suis même pas étonné d'ailleurs, avec autant de code pour une si petite fonction, c'est rare que ça tourne du premier coup. Ce que je t'ai zipé est du vb6 d'origine, mais je doute que l'éditeur de vbNet sâche le retaper en vbNet, hum...
Je n'y connais rien en la matière, étant très mal à l'aise avec les fonctions et encore davantage avec l'utilisation des DLL (faute d'avoir appris à en faire), toutefois je reste étonné que vbNet, framWork ne gère pas ça un peu mlieux qu'en vb6, du genre :
dim r as integer = call fonctionVolume(boolean, byte)
Dommage... j'ai juste besoin de ça moi. Enfin, pouvu que chat marche c'est le principal...
Au plaisir, et encore merci, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
Oui c'est du VB6, moi parle du code http://winmm.codeplex.com qui est en C#. je reprends la référence et code un exemple. En espérant qu'il soit complet et simple d'utilisation et non une usine à gaz.
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
-
Bonjour EhJoe,
Peut-être voir ce fil de juillet dernier : Son et W7 en VB.Net ou différentes solutions avaient été évoquées. Ce qu'il faut savoir c'est qu'il y a un changement notable dans le fonctionnement à partir de Vista, et que la plupart des codes VB6 utilisant WinMM et fonctionnant sous W2K/XP ne fonctionne plus sous Vista et supérieur.
Dans mon dernier message de ce fil je fais référence à la dll : CoreAudioApi qui permet de connaitre l'état du son (coupé ou pas, etc.), et de régler le volume "général" et non pas celui de l'application.
Après avoir ajouté une référence à cette dll, le code se résume à :
Imports CoreAudioApi Public Class Form1 Private AudioDevice As MMDevice Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim DevEnum As MMDeviceEnumerator If System.Environment.OSVersion.Version.Major >= 6 Then DevEnum = New MMDeviceEnumerator AudioDevice = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia) Else MessageBox.Show("Vista minimum requis") End If End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click With AudioDevice.AudioEndpointVolume .Mute = False ' Réactive le son si nécessaire .MasterVolumeLevelScalar = 30 / 100 ' Son à 30% End With End Sub End Class
La dll est en C#. J'ai vu une dll en vb6 qui gère les deux systèmes : avant/après Vista -> fonctionne sous VB6 pas sous VB.Net (utilisation de VarPtr, assembleur...)
Cordialement, Jacques
- Proposé comme réponse Lyamine mercredi 26 septembre 2012 19:01
- Non proposé comme réponse Lyamine mercredi 26 septembre 2012 19:31
- Proposé comme réponse Lyamine mercredi 26 septembre 2012 20:13
- Marqué comme réponse EhJoe vendredi 28 septembre 2012 07:53
- Non marqué comme réponse EhJoe vendredi 28 septembre 2012 07:53
-
Bonsoir Jacques,
Je te remercie de ta réponse mais... ça a l'air de coincer un petit rien... voici :
Faut-il pour le mettre dans le répertoire de l'exe ("Bin" pour le moment), que je récupère le fichier :
CoreAudiApi.dll
Si c'est le cas, je ne trouve guère, très peu de réponses Gogole et surtout en english, connais-tu un endroit sûr où la télécharger ?
Sinon, pour le reste, est-ce dû uniquement à l'absence de la DLL, car je croyais que l'interface n'allait quand même pas chercher les fichiers déclarés avant de lancer le code, y doit y avoir quelque chose qui ne lui convient pas ?
Ben... au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
Bonsoir Joseph
Quel est le message lorsque tu passes la souris sur l'import surligné en vert ?
Je pense qu'il faut ajouter la référence au projet par le menu projet --> ajouter une référence puis aller dans l'onglet parcourir et choisir la DLL CoreAudiApi.dll.
Est-ce que tu l'as fait ?
Cordialement
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
- Modifié Lyamine mercredi 26 septembre 2012 17:34
-
Bonsoir Lyamine,
Ben justement le truc en vert me dit qu'il n'y a rien à dire si on peut dire en parlant de dire...
Oui, enregistrer le composant, je sais mais, sans savoir qu'il fallait ici le faire (j'y pense seulement pour le pack de distribution).
Le problème est que je ne trouve pas CoreAudioApi.dll, mais seulement (Core.dll + PresentationCore.dll) que j'ai mis dans la liste du haut en tant que "référence"...
Ah ?
Tu peux recopier le code de Jacques pour voir...
Au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
- Modifié EhJoe mercredi 26 septembre 2012 18:02
-
Bonsoir Lyamine,
Ben justement le truc en vert me dit qu'il n'y a rien à dire si on peut dire en parlant de dire...
Oui, enregistrer le composant, je sais mais, sans savoir qu'il fallait ici le faire (j'y pense seulement pour le pack de distribution).
Le problème est que je ne trouve pas CoreAudioApi.dll, mais seulement (Core.dll + PresentationCore.dll) que j'ai mis dans la liste du haut en tant que "référence"...
Ah ?
Tu peux recopier le code de Jacques pour voir...
Au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
En fait tu as des onglets :
Clique droit sur Références (afficher tout les fichiers - 2ème icône en dessous de "Explorateur de solutions")
puis aller dans parcourir
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
- Modifié Lyamine mercredi 26 septembre 2012 18:54
-
-
Lyamine,
J'en ai bavé, je l'ai trouvé mais elle n'appartient pas à MS mais à ATI (gestion vidéo et autres je crois).
Je l'ai mis dans le s32, et l'éditeur ne la trouvait pas alors qu'elle y était, je l'ai donc mis dans le s64 et là l'éditeur en voulait, ouf !
Un malheur n'arrive jamais seul, maitenant c'est ça que j'ai de souligné en BLEU :
Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click AudioDevice.AudioEndpointVolume.Mute = False ' Réactive le son si nécessaire AudioDevice.AudioEndpointVolume.MasterVolumeLevelScalar = 30 / 100 ' Son à 30% End Sub
AudioDevice.AudioEndpointVolume
Il me dit :
Erreur 1 'AudioEndpointVolume' n'est pas un membre de 'CoreAudioApi.MMDevice'. C:\Users\joe\Documents\Visual Studio 2010\Projects\_Exemples\fichier lecture\Form1.vb 17 5 fichier lecture
*
Sinon : "oui" j'aurais au moins besoin de XP qui est toujours répandu...
Aors je ne sais pas ce qui lui manque cette fois (audioEnpointVolume) serait-il une nouvelle dll ?
Au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
CoreAudioApi n'a pas l'air de marcher sous XP :/
Donc je pense qu'on revient au début.
Peux-tu tester mon projet : http://dl.free.fr/mmy1sk9y2
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
-
Lyamine,
C'est exactement ce que je voulais, sauf qu'il faut qu'il fasse XP aussi, merci mille fois.
Et merci à Jacques aussi...
' foce volum Vista et > Imports CoreAudioApi Public Class Form1 Private AudioDevice As MMDevice Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim DevEnum As MMDeviceEnumerator If System.Environment.OSVersion.Version.Major >= 6 Then DevEnum = New MMDeviceEnumerator AudioDevice = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia) Else MessageBox.Show("Vista minimum requis") End If End Sub Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click AudioDevice.AudioEndpointVolume.Mute = False ' Réactive le son si nécessaire AudioDevice.AudioEndpointVolume.MasterVolumeLevelScalar = 30 / 100 ' Son à 30% End Sub End Class
Alors à bientôt pour le traitement d'XP ?
Cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
Lyamine,
C'est exactement ce que je voulais, sauf qu'il faut qu'il fasse XP aussi, merci mille fois.
Et merci à Jacques aussi...
' foce volum Vista et > Imports CoreAudioApi Public Class Form1 Private AudioDevice As MMDevice Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim DevEnum As MMDeviceEnumerator If System.Environment.OSVersion.Version.Major >= 6 Then DevEnum = New MMDeviceEnumerator AudioDevice = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia) Else MessageBox.Show("Vista minimum requis") End If End Sub Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click AudioDevice.AudioEndpointVolume.Mute = False ' Réactive le son si nécessaire AudioDevice.AudioEndpointVolume.MasterVolumeLevelScalar = 30 / 100 ' Son à 30% End Sub End Class
Alors à bientôt pour le traitement d'XP ?
Cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
Test sur XP, et tiens nous au courant ;)
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
- Modifié Lyamine mercredi 26 septembre 2012 20:31
- Marqué comme réponse Aurel Bera vendredi 28 septembre 2012 06:50
- Non marqué comme réponse EhJoe vendredi 28 septembre 2012 07:52
-
-
Lyamine
Test sur XP, et tiens nous au courant ;)
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
Pourquoi, tu ne fais plus le code ?
Cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
Si mais pas ce soir ^^ je suis over cette semaine, j'ai fini hyper tard le travail. Juste dit moi si le code fonctionne sous XP. de mon coté je vais essayer de finir ce weekend grand max.Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
-
-
Le 26/09/2012 19:20, EhJoe a écrit :> Bonsoir Jacques,>> Je te remercie de ta réponse mais... ça a l'air de coincer un petit> rien... voici :>> Faut-il pour le mettre dans le répertoire de l'exe ("Bin" pour le> moment), que je récupère le fichier :>> CoreAudiApi.dll>> Si c'est le cas, je ne trouve guère, très peu de réponses Gogole et> surtout en english, connais-tu un endroit sûr où la télécharger ?>Lien direct de téléchargement :une fois dézippé, tu as un fichier 'CoreAudioAPI.dll' dans un sousrépertoire 'CoreAudio2_bin'.La dll, tu la places ensuite où tu veux, l'important est d'y ajouter uneréférence dans ton projet, comme te l'as indiqué Lyamine.--Cordialement,Jacques.
Cordialement, Jacques -
Bonjour Jacques,
Ça y est c'est fait, comme indiqué dans les différentes réponses, car j'avais un problème avec sys32 et sys64 (ou ce qui en fait office), j'avais mis dans sys32 la dll mais l'éditeur m'envoyait dans sys64 et n'en démordait pas, car dans sys32 il me masquait la dll ?
C'est réglé, merci encore, je n'ai plus qu'à voir avec Lyamine pour le cas de XP encore trop répandu pour être exclut.
Cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
Salut EhJoe,
Cela fait bien longtemps ;)
Si je comprends bien, tu veux activer le son de Windows si celui-ci est 'Muté' et mettre le volume à 30% ?
Chez moi, je viens de tester ceci :Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) Private Sub Button1Click(sender As Object, e As EventArgs) Handles Button1.Click ' On descend le volume à zéro For i = 1 To 100 keybd_event(Windows.Forms.Keys.VolumeDown, 255, 0, 0) keybd_event(Windows.Forms.Keys.VolumeDown, 0, 0, 0) Next ' Si le son est muté on unmute keybd_event(Windows.Forms.Keys.VolumeMute, 0, 0, 0) ' On augmente le volume suivant le nombre de boucles For i = 1 To 12 ' 12 est égal à ~50% keybd_event(Windows.Forms.Keys.VolumeUp, 1, 0, 0) keybd_event(Windows.Forms.Keys.VolumeUp, 0, 0, 0) Next End Sub
Je ne dois surement pas t'avoir compris. Cela m'a l'air trop simple !
Bien à toi.
- Marqué comme réponse EhJoe vendredi 28 septembre 2012 08:29
-
Bonjour,
Pouvons-nous considérer que vous avez résolu votre problème avec les scénarios proposés ? Dans l'affirmative, pourriez-vous partager avec nous la solution, afin que d'autres personnes avec le même problème puissent profiter de cette solution ?
Désormais, nous marquons les solutions proposées. N'hésitez pas à revenir et supprimer la réponse marquée si la solution n’est pas correcte. Merci !
Cordialement,
Aurel
-
Cher Pascal,
Ah mais... lentement le vb6 vient au vbNet dans le forum, c'est bien, sauf qu'en 2000 y avait 10 questions par jour, et là ça descend à 1 question par jour (partout : développez, vbFrance, y a que le "site du 0" qui monte à 2, 3 par jour)... baisse générale...
Oh tu sais, souvent le code est plus simple que les exemples qu'on trouve. La preuve, la première réponse ici me donnait cent lignes de codes, la secondes de Jacques (de vb6) me donnait bien plus court mais il fallait déclarer une référence, et toi tu descends à quelques lignes sans référence (dll) à enregistrer...
Alor ton code marche à la perfection et c'est ce que je voulais :
Option Explicit On Public Class Form1 Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim i As Integer = 0 For i = 1 To 100 ' Son DESCEND à 0 keybd_event(Windows.Forms.Keys.VolumeDown, 255, 0, 0) keybd_event(Windows.Forms.Keys.VolumeDown, 0, 0, 0) Next keybd_event(Windows.Forms.Keys.VolumeMute, 0, 0, 0) ' SON = ok forcé For i = 1 To 7 ' Son MONTE (réglage) : 24 = 100%, 12=50%, 0=0% keybd_event(Windows.Forms.Keys.VolumeUp, 1, 0, 0) keybd_event(Windows.Forms.Keys.VolumeUp, 0, 0, 0) Next End End Sub End Class
Juste une question, moi, sur Seven ça marche, as-tu la possibilité de m'indiquer si sur Vista et surtout XP ça fonctionne aussi ?
Au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
Bonjour Aurel,
Ah, attends je te prie, car je ne sais pas encore si ça tourne sur les différents OS et sinon, et sinon seulement, il y avait Lyamine qui devait me faire du code, ce qui ne serait plus la peine si ça tourne comme voulu avec ce dernier exemple...
Pas de problème, je résoudrai la question moi même dès que j'aurais les réponses attendues, pas d'inquiétude j'ai l'habitude, "moi" je suis mes questions (quand on y répond).
Par contre si tu peux mettre "un point" à Pascal Hubert il le mérite, moi je ne peux plus lui en mettre j'ai épuisé ma dotation unique...
Merci encore, au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
-
- Modifié EhJoe vendredi 28 septembre 2012 07:56
-
EhJoe,
Je ne connaissais que :
Windows.Forms.Keys.VolumeMute
Je suis parti de là.
Personnellement, je suis sous Windows 7 64 bit. Mais c'était déjà référencé sous VS 2005. Donc, pas de Windows Vista et encore moins de Seven à l'époque !
Bien à toi.
-
Pascal,
Ah zut ! J'ai fait une demande de test, bon je vais l'annuler.
AUTRE CHOSE, j'ai vu que tu faisais dans la TV sur un de tes sites, à ce titre j'ai un petit problème depuis bien longtemps dont tu connais peut être la solution, voir en vbNet, ici ça n'a jamais été résolu en fait, on a essayé seulement hélas. Est-ce qu'il est possible de t'écrire depuis ton lien zGuideTV.Net ou autre ?
Au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire -
Bonjour Lyamine,
J'en déduis que tu n'as pas XP mais est-ce que tu as Vista pour l'essayer ?
Machine virtuel = encore un machin d'enfer genre Apache pour le PHP :o)
Je vais poser une question en demandant le test XP.
Au plaisir, cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
J'ai Windows XP mais non installé et mon PC est sur Windows 7 Home premium (personnel). Si tu as Windows 7 Pro, tu peux installer Virtual XP avec XP Mode. En ce moment j'ai pas trop le temps de faire le test :/ Sur un autre post (Boucle infinie mais finie), j'ai répondu à 2H du matin lol
Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !
-
Pas de problème EhJoe.
Mon adresse email se trouve dans 'À propos' sur : http://www.nxtvepg-kastortv.org/
Pascal.
ZGuideTV.NET - administrator/developer
- Modifié Pascal Hubert vendredi 28 septembre 2012 08:20
-
-
Bonjour EhJoe,
Juste une petite remarque : si tu avais regardé le fil Son et W7 en VB.Net que je t'ai indiqué dans mon premier message, tu aurais peut être vu mon message du mardi 17 juillet 2012 13:58 qui propose une solution tout à fait similaire à celle proposée ici par Pascal Hubert, que je salue, par ailleurs.
Et je peux te confirmer que cela fonctionne sous W7 et XP, à une différence prêt : l'incrémentation/décrémentation des touches VolumeUp et VolumeDown est de 2% sous W7 et 4% sous XP, en tout cas sur mon matériel sous W7 intégrale avec XP Pro en machine virtuelle grâce à XPMode, dont je trouve qu'il est un peu dommage de se passer : une licence gratuite de la part de MS, ce n'est pas tous les jours.
Cette différence de pourcentage semble codé en dur (pas certain). A savoir aussi que la touche Mute est une touche bascule, ce qui n'a pas d'importance dans l'utilisation que tu fais, mais son effet dépend de l'état qui précède son action.
NB : je ne demande pas de points supplémentaires ;-)
Cordialement, Jacques