begin process at 2010 03 22 09:57:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimédia

 > CONTROLE DE VOLUME OSD (WIN32)

CONTROLE DE VOLUME OSD (WIN32)


 Information sur la source

Note :
9,75 / 10 - par 4 personnes
9,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Multimédia Classé sous :volume, audio, osd, mixer Niveau :Débutant Date de création :05/08/2006 Vu / téléchargé :17 295 / 1 335

Auteur : racpp

Ecrire un message privé
Commentaire sur cette source (43)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Il s'agit ici d'un petit programme permettant de controler le volume audio du PC en utilisant le clavier. En maintenant la touche CTRL droite enfoncée, on appuie sur la flèche de direction droite pour augmenter le volume, ou la flèche gauche pour le diminuer. Pour passer au mode MUET on garde CTRL droite enfoncée et on appuie sur SUPPR. L'appui suivant annule le mode MUET. A chaque action, un graphique s'affiche comme sur l'écran d'un téléviseur. Il disparait au bout de 3 secondes d'inactivité. Le menu contextuel de l'icone dans la zone TrayIcon permet de quitter le programme.
Dans ce code source, j'ai utilisé un hook clavier de bas niveau pour l'interception de l'appui sur les touches. Pour l'affichage, j'ai utilisé une fenêtre transparente sur laquelle on écrit et dessine. Pour le controle du volume, j'ai fait appel aux APIs du MIXER de Windows.
Les remarques et les commentaires sont les bienvenus.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture IMPRESSION EN WIN32 API AVEC OPTIONS
Source avec Zip Source avec une capture INFOTIP SHELL EXTENSION (BULLE DE L'EXPLORATEUR WINDOWS) (WI...
Source avec Zip Source avec une capture APPLICATION MULTILINGUE UTILISANT UNICODE (WIN32)
Source avec Zip Source avec une capture CHRONOMÈTRE OSD (WIN32)
Source avec Zip Source avec une capture EXTENSION DU SHELL: MENU CONTEXTUEL EN C (WIN32 API)

 Sources de la même categorie

Source avec Zip Source avec une capture [WIN32] EASY WAVE MIXER par ordiman85
METTRE À JOUR LE TITRE DU MORCEAU EN COURS DANS MSN LIVE par citronz1969
Source avec Zip SUPER MINI MP3 JOUEUR par f_l_a_s_h_b_a_c_k
Source avec Zip MP3 RENAMER par dragonjoker59
Source avec Zip Source avec une capture LECTEUR DE MUSIQUE AVEC SDL ET FMOD par Lemng

 Sources en rapport avec celle ci

Source avec Zip CONVERTIR FLV 2 MP3 par nipepsinicolas
Source avec Zip Source avec une capture CHRONOMÈTRE OSD (WIN32) par racpp
Source avec Zip Source avec une capture CONTROLEUR DE VOLUME SONORE EN C [ API WINDOWS ] par ordiman85
Source avec Zip Source avec une capture MOTEUR AUDIO TEMPS REEL AVEC GESTION DU VOLUME par gabuzomeuh
Source avec Zip LINUX MODIFICATION DU VOLUME D'UN MIXER AUDIO par Twinuts

Commentaires et avis

Commentaire de racpp le 05/08/2006 19:16:30 administrateur CS

J'ai oublié de préciser que le zip contient le projet pour Visual C/C++ 2005 et Dev-CPP 4.9.9.2.
Pour tester l'exécutable, il suffit de le renommer en volume.exe

Commentaire de maladedede le 06/08/2006 02:19:17

Ma remarque n'est pas constructive, mais elle te félicite.
Trés bon programme et bonne idée d'avoir pensé a faire ca.
Je vais analysé le code je commence la prog avec le fenetrage win32 je vais en apprendre bcp.
:)

Commentaire de Stormy le 06/08/2006 19:43:04

Bon programme mais ne crois-tu pas que l'usage des touches CTRL+droite risque d'interférer avec d'autres programmes.
Je pense particulièrement à quelques jeux ou ces touches peuvent servir aux déplacements et positions du joueur. Le hook bas niveau risque de provoquer un conflit ennuyeux.

Commentaire de wxccxw le 06/08/2006 23:48:37

tres jolie comme toujours Racpp, je chercher, et j'ai trouver merci.

Commentaire de wxccxw le 06/08/2006 23:51:17

10/10

Commentaire de wxccxw le 06/08/2006 23:59:33

un dernier truc, l'horloge marche tres bien mais pas le son :(

Commentaire de racpp le 07/08/2006 00:10:26 administrateur CS

Salut,
Merci chers amis.
Stormy >> Effectivement, j'ai oublié de le signaler dans la présentation du code. L'utilisation de CTRL doite n'est qu'un exemple. J'ai choisi cette touche pour sa proximité des touches de direction. Ainsi, avec 2 doigts de la main droite, on peut agir sur le volume. Vous pouvez remplacer cette touche par n'importe quelle autre touche. Vous pouvez même faire une combinaison de plusieurs touches. Pour cela, il suffit de modifier légérement le code de la procédure de hook. J'avais l'intention de rendre le programme configurable en permettant le choix des touches à utiliser. Mais je voulais en même temps ne pas trop compliquer le code. C'est une option que vous pouvez ajouter en utilisant la base de registre(par exemple) pour sauvegarder les paramètres.

Commentaire de racpp le 07/08/2006 00:19:24 administrateur CS

wxccxw >> Normalement, ça devrait marcher avec la carte son par défaut. J'ai essayé ce programme sur plusieurs ordinateurs sans remarquer de problème. Ca marche même sur un PC ayant deux cartes son. Il agit sur la carte son actuellemnt sélectionnée dans Windows. Essaie de déboguer le programme afin de pouvoir trouver la cause du problème. Il est possible que ce programme ne tienne pas compte de certains cas particuliers. J'aimerais bien connaitre ces cas pour l'améliorer.

Commentaire de thunderx le 21/09/2006 11:21:02

Salut Racpp. Nickel, c'est exactement ce que je cherchais.
Par contre, si je suis sous un jeu (par exemple CS en plein ecran), ca marche encore ?
J'ai deja testé des progs de ce genre, mais dès que je suis sous un jeu, je n'ai plus rien a l'ecran.

Ps : là je n'ai pas encore testé - mais peut etre quelqu'un l'a deja fait

Commentaire de racpp le 22/09/2006 14:50:05 administrateur CS

Salut,
Je n'ai pas faits de tests. Je pense que c'est comme les autres programmes. L'affichage se fait grâce à une fenêtre transparente. Si un jeu s'accapare de tout l'affichage, il est normal que rien ne s'affiche.

Commentaire de Mickey069 le 26/10/2006 15:51:30

C'est genial, c'est exactement ce que je cherchais depuis ce matin... Merci et bon travail

Commentaire de hazote le 06/02/2007 19:28:50

super code !  c'est exactement ce que je cherchais, merci beaucoup
quelqu'uns aurait il la gentillesse de me transformer cela de maniere a ce que l'on regle le son avec "CTRL+PAV_Num+" et "CTRL+PAV_Num-"  et aussi un affichage de 1 seconde et non 3.
je ne connais pa grand chose en programation, et ma sa seul approche est sous linux :s

Commentaire de racpp le 18/02/2007 11:52:32 administrateur CS

Salut,
HAZOTE >> Dans le code, tu remplaces les deux VK_LEFT par VK_SUBTRACT et les deux VK_RIGHT par VK_ADD. Pour avoir une durée d'affichage d'une seconde il suffit de mettre 1000 pour le 3ème paramètre de SetTimer():
SetTimer(hWnd,1,1000,0);

Commentaire de nullite le 12/04/2008 04:38:26

bravo 10/10 Merci !

Commentaire de EstevanTH le 12/07/2008 12:34:07

Excellent logiciel ! Très utile et bien conçu. Merci.
Outre la personnalisation des raccourcis clavier, on peut également penser à intégrer différents thèmes, notamment un thème compact car un grand volume en plein milieu de l'écran n'est pas toujours appréciable. ^^
Voilà pour mes idées d'amélioration.

Commentaire de EstevanTH le 12/07/2008 12:42:24

En y réfléchissant, le réglage du temps d'attente avant disparition serait également appréciable. Autre possibilité : tant que la touche Ctrl droite est enfoncée (si la combinaison devient personnalisable, utiliser la combinaison correspondante), ne pas masquer le contrôle du volume : ça laisserait un temps de réflexion aux personnes lentes. ^^

Commentaire de ImmortalPC le 18/08/2008 21:53:43

Salut !

Très belle source !
Je me permet d' y ajouter quelques améliorations :D
- Gestion des touches Mute, SOUND+, SOUND-
- Diminution de l' utilisation des ram lors du repos du prog

http://immortal-pc.info/CodeS-SourceS/volume.cpp

@+

Commentaire de MisteryX le 16/10/2008 21:13:51

Bonsoir,

Je ne suis pas programmeur, mais disons que tout cela m'intéresse.
En fait, je voudrais modifier le temps d'affichage et les touches raccourci, mais je ne sais pas comment on compile(si c'est ça qu'il faut faire)...
Il à été question aussi de base de registre...

Est-ce que quelqu'un pourrait m'expliquer la marche à suivre ?

Merci d'avance !

Commentaire de MisteryX le 16/10/2008 23:08:03

ouh ouh y a quelqu'un ?

Commentaire de racpp le 18/10/2008 21:47:43 administrateur CS

MisteryX >> Justement, après avoir modifié le code, il faudra recompiler. La démarche à suivre dépend de ton compilateur. Ce code a été fait pour Visual C/C++ 2005 et Dev C++. Normalement ça devrait aller avec tout autre compilateur.

Commentaire de MisteryX le 18/10/2008 22:32:47

Bonsoir racpp et merci pr ta réponse,

Effectivement j'ai compris en cherchant ce qu'il falait faire...
Mais parcontre, à part le fait que j'ai envie de le décortiquer pr apprendre,
je n'ai pas réussi à obtenir, par ex: "ctrl+alt+A" ou tout autre lettre du clavier.
Je n'ai pas trouvé nonplus comment on obtient "< ou >"...

Pourrais-tu m'aider stp ?

Merci!

Commentaire de MisteryX le 18/10/2008 22:33:50

"< ou >" je voulais dire: ex: "ctrl+alt+<"

Commentaire de racpp le 18/10/2008 23:57:00 administrateur CS

< = VK_LEFT
> = VK_RIGHT
ctrl = VK_CONTROL (gauche et droite)
ctrl gauche =VK_LCONTROL
ctrl droite = VK_RCONTROL
alt = VK_MENU
alt gauche = VK_LMENU
alt droite = VK_RMENU
A = 0x41 en hexadécimal ou 65 en décimal
B = 0x42 en hexadécimal ou 66 en décimal
etc
Voici le lien MSDN pour la liste complète:
http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx

Commentaire de MisteryX le 20/10/2008 05:55:39

Bonjour,

Merci pour les explications !

Mais en ce qui concerne "< ou >" je parlais des signes qui se trouvent sur la touche à gauche du "w"...
Ensuite, je n'ai pas réussi à obtenir, ex: "ctrl+alt+a", ni à faire fonctionner "alt"...
Sais-tu pourquoi ?
Ce que je ne comprends pas non-plus, c'est qu'il faille mettre par ex: "0x41" au lieu de "VK_A" ?

En tous cas, j'espère vite apprendre tout ça...

PS: Pr info, j'ai installé devcpp (sur xp).

Encore merci pour ton aide !

Commentaire de MisteryX le 21/10/2008 00:20:41

J'oubliais, existe-t-il un tuto qui me permettrait de comprendre ton logiciel ?
Et si ça t'embête pas, je voudrais savoir comment rendre la fenêtre opaque ?
Désolé pour mon bombardement de questions. ;-)
Merci !

Commentaire de racpp le 26/10/2008 20:19:27 administrateur CS

Pour les symboles "<" et ">" tu peux utiliser le membre scanCode de la structure KBDLLHOOKSTRUCT. Le scancode correspondant à la touche "<" est 0x56. Dans les hooks clavier, il s'agit des codes des touches et non pas des caractères.
Pour faire ctrl+alt+a il suffit de faire dans la procédure du hook:
if(touche==0x41)
{
   if((GetKeyState(VK_CONTROL) & 0x8000)
   && (GetKeyState(VK_MENU) & 0x8000))
   {
      SendMessage(hWnd,SETVOLUME,0,(LPARAM)touche);
      return 1;
   }
}
Ne pas oublier de mettre if(lParam==0x41) dans le traitement du message SETVOLUME.
La constante VK_A n'est pas définie par défaut. Pareil pour toutes les touches alphabétiques. Tu peux d'ailleurs remplacer 0x41 par 'A'.
Pour rendre la fenêtre opaque tu peux jouer sur le 3ème paramètre de la fonction SetLayeredWindowAttributes(). La valeur 255 correspond à l'opacité totale.
Pour, les tutos, j'en caonnais pas mais tu devrais en trouver sur le net.

Commentaire de MisteryX le 07/11/2008 02:50:50

Bonjour à tous,

Je suis comme je l'ai déjà dit, plutôt débutant...
Donc, est-ce que quelqu'un pourrait svp m'expliquer le point suivant(venant du message ci-dessus):
"utiliser le membre scanCode de la structure KBDLLHOOKSTRUCT. Le scancode correspondant à la touche "<" est 0x56"

Merci d'avance !

Commentaire de MisteryX le 07/11/2008 02:52:32

Petite correction: quand je dis "expliquer", je veux bien entendu dire "comment le placer ds le prog"

Commentaire de MisteryX le 13/11/2008 03:01:52

SVP Pas tous à la fois !

Commentaire de ImmortalPC le 13/11/2008 10:03:35

Salut !

C'est fort simple. ( Les instruiction qui suivent, font référances aux fichier Volume.cpp http://files.codes-sources.com/fichier.aspx?id=38949&f=volume%5cvolume.cpp ).

Ligne 28 : if(touche==VK_LEFT || touche==VK_RIGHT)
Ce if représente une des conditions pour ajuster le son.
c'est à remplacer par
if((((touche == VK_OEM_102 && (GetKeyState(VK_SHIFT) & 0x8000)) || (touche == VK_OEM_102)) && (GetKeyState(VK_MENU) & 0x8000) && (GetKeyState(VK_CONTROL) & 0x8000)) || ((touche==VK_LEFT || touche==VK_RIGHT) && (GetKeyState(VK_RCONTROL) & 0x8000)))
Les lignes 31, 32 et 37 sont à supprimer

Ligne 238 : if(lParam==VK_LEFT)
est à remplacer par :
if(lParam==VK_LEFT || (lParam == VK_OEM_102 && !(GetKeyState(VK_SHIFT) & 0x8000)))

Ligne 244 : if(lParam==VK_RIGHT)
est à remplacer par :
if(lParam==VK_RIGHT || (lParam == VK_OEM_102 && (GetKeyState(VK_SHIFT) & 0x8000)))

Avec ces modifications, voici les nouvelles commande:
Augmenter le son : Ctrl+Alt+> ( Qui est en fait  Ctrl+Alt+Maj(ou Shift )+< ) OU CTRL+"flèche de droite"
Baisser le son : Ctrl+Alt+< OU CTRL+"flèche de gauche"
Mute: CTRL+Suppr

Cordialement



Commentaire de MisteryX le 13/11/2008 11:54:29

Bonjour,

Merci beaucoup pour ton aide, mais j'ai un soucis avec "VK_OEM_102", ça ne marche pas,
j'avais même déjà essayé.Devcpp me donne un message d'erreur en bas.
Par ailleurs, si ça ne t'embête pas, je voudrais aussi savoir(par curiosité) comment obtenir ce que me disait racpp, càd, que "0x56" ne corresponde pas à la lettre "v" mais au numéro de la touche "<" ?

Encore merci !

Commentaire de ImmortalPC le 13/11/2008 12:36:57

Salut !

Devcpp est mort, utilise plutôt Code::Blocks il est nikel ;)
Sinon, voilà la page de code :
http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx
VK_OEM_102 = 0xE2
Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard
En gros, VK_OEM_102 représente la touche <>.

VK_LEFT  = 0x25
VK_RIGHT = 0x27
VK_SHIFT = 0x10
VK_MENU  = 0x12
VK_RCONTROL = 0xA3

@+

Commentaire de MisteryX le 13/11/2008 13:16:06

Je ne sais pas pourquoi mais ça ne marche toujours pas...

Commentaire de ImmortalPC le 13/11/2008 20:56:27

Salut !

on va faire simple: www.immortalpc.free.fr/Volume.zip
Le binaire est dedans.
Les racourcis sont :
Augmenter le son : Ctrl+Alt+> ( Qui est en fait Ctrl+Alt+Maj(ou Shift )+< ) OU CTRL+"flèche de droite" OU  "La touche spécial sur le clavier pour monter le son".
Baisser le son : Ctrl+Alt+< OU CTRL+"flèche de gauche" OU  "La touche spécial sur le clavier pour baisser le son".
Mute: CTRL+Suppr OU  "La touche spécial sur le clavier pour mute le son".

@+

Commentaire de MisteryX le 14/11/2008 05:16:40

Merci beaucoup !

Voilà ce qui n'allait pas:
il faut remplacer "char touche=(char)hookstruct->vkCode;"
par               "int touche=(int)hookstruct->vkCode;"
Parcontre, je suis encore ignorant et donc je n'ai pas encore compris pourquoi...
Si ça t'embête pas, pourrais-tu stp m'expliquer en 2 mots ?
Ou m'indiquer un tutoriel qui l'explique bien ?

A+

PS: comment apprends-tu toi ce language toi, livres, tuto... ?

Commentaire de MisteryX le 14/11/2008 05:20:04

J'ai peut-être mis un peu trop de "toi" ds le "Ps:"  lol

Commentaire de ImmortalPC le 14/11/2008 10:34:49

Salut !

Zarb ton histoire de char et int, à la base c' est un DWORD que l' on converti en char.
La seule explication que je vois, c'est que ton char n' arrive pas à contenir les touches demandées.
Pour apprendre le C/C++ je suis passé par Le Site du Zéro ( http://www.siteduzero.com/ )

@+

Commentaire de MisteryX le 14/11/2008 16:21:13

Ok merci !
Mais je suppose que le problème avec "char" doit être le même partout, sinon racpp ne m'aurait pas conseillé de modifier le prog. Mais bon, maintenant avec "int", ça marche... Ça m'étonne qu'on ne me l'ai pas dit avant. ;-)
Un autre petit soucis que j'ai, et je suppose les autres aussi... c'est que je n'arrive pas à modifier l'opacité "SetLayeredWindowAttributes()", j'ai beau modifier la valeur et la couleur, j'obtiens toujours un fond totalement opaque et blanc.
Chez toi aussi ?

Commentaire de MisteryX le 19/11/2008 01:58:30

Bonjour,

Est-ce que quelqu'un saurait svp me dire quelle est la modification que je dois faire en plus de celles dans "SetLayeredWindowAttributes()" pour modifier la couleur de fond et l'opacité de la fenêtre ?
Si je vous demande ça, c'est que quoique je mette ds "SetLayeredWindowAttributes()", j'obtiens tjrs un fond blanc et d'une opacité totale...

Merci d'avance !

Commentaire de MisteryX le 20/11/2008 15:49:24

Y avraiment personne qui sait quel autre partie du code il faut modifier pr corriger ce prob. ?
Merci !

Commentaire de ImmortalPC le 14/12/2008 16:30:30

Salut !

Petit problème de compactibilité avec vista.
Le hook marche sans problème mais les fonctions de gestion du son ne marche pas du tout.
Donc le niveau sonore ne monte pas, ne baisse pas, et ne peut pas être mute.
Une idée ?

@+

Commentaire de MisteryX le 15/12/2008 22:39:17

Le problème c'est surtout vista, si tu vois ce que je veux dire...!  lol

Commentaire de leomat le 18/07/2009 22:59:55

C'est exactement le genre de programme que je cherchais.
Au début, je voulais le créer moi-même, mais que je vois le genre de code à développer, j'suis content d'avoir trouvé le tien :D

Sous Vista SP1, il ne fonctionne pas. La fenêtre transparent s'affiche avec les barres de volume, mais le son reste au même niveau^^
J'ai modifié le header de Windows utilisé. Tu utilisais "#define _WIN32_WINNT  0x0500"
j'ai essayé de le remplacer par "#define NTDDI_VISTASP1 0x0500", mais malheureusement, j'obtiens ces erreurs :

volume.cpp: In function `int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)':
volume.cpp:374: error: `LWA_COLORKEY' undeclared (first use this function)
volume.cpp:374: error: (Each undeclared identifier is reported only once for each function it appears in.)
volume.cpp:374: error: `SetLayeredWindowAttributes' undeclared (first use this function)

j'approfondis mon analyse de ton code, et j'essaie de trouver une solution pour Vista (oui oui j'ai de l'espoir :D )

Très bonne initiative en tous cas d'avoir développé cette application.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

controle du volume audio général [ par roxanic ] BonjourJe cherche a controler les bouton de volume.Pour le bouton Wave c'est OK. Mais je ne trouve pas le solution pour le curseur du volume général.M Sélectionner la source audio... [ par MisteryX ] Bonjour à tous,Si j'ai choisi un thème pour poster ma question c'est vraiment parce qu'il le fallait, donc je ne sais pas si j'ai fait le bon choix ?? Capture audio multiple avec directsound [ par CreugenatCoco ] Bonjour à tous et à toutes, je suis assez nouveau en programmation C++, et je dois réaliser une application qui:- detecte les cartes sons installées e Menu OSD [ par dams13120 ] Bonjour, J'ai un programme, en C qui tourne sur mon PC (version linux) et qui affiche une vidéo sur un écran en output. Je voulais savoir quelle solut OSD par dessus un jeu [ par Booster ] Bonsoir à tous, Je voudrais réaliser un OSD qui serait en premier plan (Même dans les jeux). Les OSDs présent sur ce site utilise de simple fenêtre Changer le volume d'un WAV par logarithme [ par carat ] Salut à tous, Je suis en train de développer un lecteur bas-niveau afin de pouvoir intégrer des effets sonores. Je supporte actuellement les pcm, le converteur audio (wav) en binaire [ par polobou ] [b]Bonjour[/b][^^happy10] j'ai besoin d'un logiciel qui peut m'aider a converter un "fichier.wav" au code binaire dans un autre "fichier.bin". [b]Merc Séparer les 2 pistes audio d'un fichier mp3 [ par Rogue2575 ] Bonjour, Quelqu'un saurait il séparer les deux pistes mono d'un fichier mp3 stéréo. Je ne peux pas utiliser audacity car il faudrait que cette séparat visualisatin d'une courbe d'egalisation audio [ par roindesbois ] je cherche désespérément a creer une courbe graphique représentant les valeurs des réglages de l'egalisation d une table de mixage numérique (comme d Recherche de blancs dans piste audio [ par nivalys2 ] Bonjour je recherche un code pour repérer des blancs sur une piste audio. merci de votre aide syl20


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales