1

yop,

Je fais un truc tout bête, un programme qui fait un bip tous les X secondes. Qt propose une méthode beep(), qui marche très bien, mais qui est dépendante de la configuration des sons de Windows. Ca émet le "son par défaut", écoutable dans le panneau de config, rubrique Son.
Inconvénient, si les sons de Windows sont désactivés (comme chez moi), ma fonction beep n'émet plus aucun son.
Alors je me demandais comment émettre un son, le plus simplement possible, sans utiliser un framework de dingue. Un La 440 façon buzzer de carte-mère de 500 ms, m'irait très bien, mais n'ayant jamais produit le moindre son sur un PC avant aujourd'hui, je ne sais absolument pas dans quelle direction chercher. Le framework multimédia de Qt me semble overkill pour un biiiip toukon, quant à utiliser une lib externe, si je pouvais éviter ça serait pas mal.

Merci d'avance pour vos conseils. smile

2

S'il y a une carte son avec des HP, cette fonction + un fichier WAV avec ton bip est probablement la solution la plus simple (voir la partie "Examples") :
https://msdn.microsoft.com/en-us/library/windows/desktop/dd743680%28v=vs.85%29.aspx

Si tu veux faire marcher le buzzer de la carte mère, attention : un certain nombre de PCs n'ont plus de buzzer, et apparemment ce n'est plus supporté par Windows 7 64-bit : http://blogs.msdn.com/b/larryosterman/archive/2010/01/04/what-s-up-with-the-beep-driver-in-windows-7.aspx
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3

Ok, merci beaucoup. Je n'ai pas besoin du buzzer, et je veux surtout pas me compliquer la vie (sisi ! grin), je voulais dire par là qu'un son très simple me suffirait.
Merci bien, je vais voir ça. smile

4

https://msdn.microsoft.com/en-us/library/windows/desktop/ms679277%28v=vs.85%29.aspx ?
Eventually because of the lack of hardware to communicate with, support for Beep was dropped in Windows Vista and Windows XP 64-Bit Edition.
In Windows 7, Beep was rewritten to pass the beep to the default sound device for the session. This is normally the sound card, except when run under Terminal Services, in which case the beep is rendered on the client.

5

Oui, mais je n'en ai pas parlé à cause des problèmes potentiels mentionnés dans le post ./2 smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

6

J'ai édité et cité la doc. Au contraire, c'est implémenté dans 7 (et je l'ai utilisé dans 8 récemment)

7

Sinon il y a printf("%c", '\a') cheeky

8

Mais justement, ça ne règle pas le problème de Folco : ça déclenche le bip standard, qui peut être désactivé.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

9

\a ? Oué nan mais c'était une blague de toute façon.
Il faut utiliser Beep comme indiqué dans ./4. (et tant pis pour les gens sous vista)

10

Yep, j'ai vu ça aussi. Bon, je reste avec ça : http://doc.qt.io/qt-5/qapplication.html#beep
Ca fait son boulot, et c'est multiplateforme.

J'aurais volontiers utilisé l'API native Windows si un éditeur de contrôles (? les widgets, quoi) graphique était disponible dans la version gratuire de MSVS.

11

(c'est le cas avec VS2013 community, non ?)

12

Ah ? Pas essayé, mais si c'est le cas, je fonce.

13

Bah il me semble que c'est une version pro complète et gratuite.

https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
Tiens, c'est même la version 2015 !

Windows 10 étant gratuit, c'est normal que ce soit aussi le cas de Visual Studio !

14

Bon et sinon, c'est quoi cette application-qui-fait-pwic que tu nous codes, Folco ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

15

Un métronome on ne peut plus con triso
L'intégralité du source ici : http://www.mirari.fr/pPRV tripo
On règle un délai avec un slider, on clique sur start, et ça fait un bip tout les X secondes. C'est parce que des mecs veulent prendre certaines mécaniques à SC2 (en l'occurence, regarder la minimap tous les 10 secondes pour voir les ennemis qui passent). trigic

Et merci Pen^2 ! tongue

16

cheeky
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

17

Sur les PCs où il est présent, le buzzer interne peut aussi être contrôlé à travers l'accès direct aux ports, par exemple à travers le pilote rwports.sys de TiLP (libticables2) ou CalcForgeLP (libcalccables).

void beeperOn(unsigned frequency)
{
  io_wr(0x43, 0xB6);
  frequency = 1193180u / frequency;
  io_wr(0x42, frequency & 0xFFu);
  io_wr(0x42, frequency >> 8);
  io_wr(0x61, io_rd(0x61) | 3);
}

void beeperOff(void)
{
  io_wr(0x61, io_rd(0x61) & ~3);
}
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

18

Ah, j'avais zoublié le détail de l'apprentissage du framework Windows #triange#
Bon, pour Qt, j'ai ça : http://doc.qt.io/qt-5/classes.html
Ya un lien équivalent pour MS ?
J'ai créé un projet vide, ya déjà une quantité de code pas possible, et des trucs chelou comme des TRUE et des FALSE en majuscules grin
Il m'a suffit de 20 lignes de Qt pour faire un bipper, j'espère que ça va pas devenir l'enfer chez MS ^^

19

Franchement, l'API W32 est un bordel infame, bonne chance avec ça!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

20

Merci beaucoup !

Bon par contre, j'ai beau chercher, je vois pas le moins du monde où l'on commence à pondre une interface. J'aimerais mettre deux trois contrôles, cliquer sur "ajuster la taille", puis ensuite sur "éditer le code de on_click", et terminer ma premièe application Win32 en 5 minutes, quoi. C'est quasiment du C++ pur que j'ai à faire. C'est possible à votre avis ?

21

tiens, je croyais que Win32 était remplacée hum
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

22

Je ne suis peut-être pas à jour, mais à ma connaissance, il y a ça seulement dans l'édition pro de Visual C++ (pas dans l'édition Express gratuite en tout cas), et ça génère du MFC (un wrapper C++ autour de W32), pas du W32 direct (API C).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

23

Ah, donc il ne faut pas créer une application Win 32 ? grin

24

Si tu veux du W32 pur, tu vas probablement devoir créer ton interface à la main avec les appels type C. Les logiciels de conception passent normalement par un wrapper objet. En libre, tu as wxWidgets qui wrappe les contrôles natifs, donc aussi W32, et ça a l'avantage d'être portable. Et sinon, bah, Qt (que tu connais déjà) ou GTK+ (du même type, mais moins bien).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

25

Call : GoldenCrystal appelé(e) sur ce topic...
Il doit pouvoir t'aiguiller là-dessus.

Et pour le buzzer, j'ai pas osé proposer la solution du driver vu que Folco voulait un truc léger grin

En plus, ça demande au minimum à l'utilisateur de valider un popup d'avertissement à l'installation de l'appli, et pour Windows 64 bits il faut en plus que le driver soit signé (ou désactiver la signature des drivers, mais c'est encore moins user-friendly).

Et je ne sais pas si le driver dont parle Kevin vérifie que l'application appelante a des droits d'administrateur, parce que sinon ça crée un méchant trou de sécurité...
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

26

Concernant les bips, voilà le code d'un truc que j'ai codé il y a facilement 10 ans: http://www.mirari.fr/oURU
Si tu vous le compilez, vous verrez qu'aussi étonnant que ça puisse paraître, ça fonctionne cheeky (J'ai pas inclus le fichier vcproj car dans mes souvenirs j'avais tout bidouillé pour que l'exécutable tienne dans ses 2Ko, j'ai pas essayé de le recompiler avec VS2015, d'ailleurs j'ai pas installé les composants C++ tongue)

Folco > Concernant Win32, ce que tu veux probablement, c'est créer un fichier de ressources (.rc) et l'éditer avec l'éditeur de VS, pour y ajouter une ou plusieurs ressources de type DIALOG.
Après il te faudra un WindowProc (ou presque: DialogProc) comme d'hab qui gère WM_COMMAND (principalement), et tu afficheras ton dialogue avec CreateDialog ou DialogBox selon ton besoin précis. (modal vs. modeless)

Avec DialogBox, la fonction bloquera jusqu'à fermeture de la boîte de dialogue (= modale), ce qui veut dire qu'elle fera tourner sa propre boucle d'évènements et tu n'auras à priori pas à t'en préoccuper. Avec CreateDialog, tu gèreras globalement le tout comme n'importe quelle application Windows, avec ta propre boucle d'évènements. (C'est sans doute ce que tu veux si tu veux avoir ton application qui tourne dans le fond avec un icône dans la barre des tâches pour faire apparaîte l'UI, ou même pour directement contrôller ton métronome ^^)


Si j'étais le diable, je te suggèrerais même de faire ça en C# pour encore moins d'efforts cheeky


Et, oui, aujourd'hui, c'était la sortie de VS2015 donc tu peux télécharger la Community Edition qui est vraiment une version complète avec très peu de limitations. (C'est de l'ordre moral plutôt que physique ^^)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

27

Tu veux dire que je dois taper du code pour créer une fenêtre ? Je peux pas juste faire du glisser/déposer pour fabriquer un dialogue ?

Merci beaucoup pour le reste, ça me fait des pistes pour commencer à lire. smile

28

Sisi, tu peux créer graphiquement ta fenêtre avec un éditeur de ressources, celui-ci par exemple :
http://www.resedit.net/

Il faudra un peu de code pour la gérer, mais ça reste simple. De mémoire, Code::Blocks a un template déjà fait pour ça, pour CodeLite je sais pas.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

29

./27 > Hé ouais, Win32 c'est plutôt bas niveau, donc il faut écrire du code grin
./28 > Visual Studio fait +/- la même chose, à moins qu'ils aient supprimé la fonctionnalité tongue

Folco > T'es sûr que tu ne préfèrerais pas un…
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApplication1" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Button Content="Beep !" Margin="9" Width="75" Height="23" Click="OnBeepButtonClick" /> </Grid> </Window> using System; using System.Runtime.InteropServices; using System.Windows; namespace WpfApplication1 { public partial class MainWindow : Window { [DllImport("kernel32")] private static extern bool Beep(uint dwFreq, uint dwDuration); public MainWindow() { InitializeComponent(); } private void OnBeepButtonClick(object sender, RoutedEventArgs e) { Beep(440, 1000); } } }

? trivil
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

30

./17 > pitié
Kevin Kofler (./22) :
Je ne suis peut-être pas à jour
Eh non.
Zerosquare (./25) :
ça demande au minimum à l'utilisateur de valider un popup d'avertissement à l'installation de l'appli, et pour Windows 64 bits il faut en plus que le driver soit signé (ou désactiver la signature des drivers, mais c'est encore moins user-friendly).
Pitié². Sérieusement : Beep(), sauf si _vraiment_ Folco est sous Vista.
Zerosquare (./28) :
Sisi
Oui mais si on installe Visual c'est quand même pas pour installer un autre éditeur avant même d'avoir essayé l'officiel.
Enfin je ne sais pas, le tiens est peut-être mieux ?

./29> Oué grin
(Folco > sachant que bien sûr le xml est généré par l'éditeur (et je soupçonne que le reste aussi à part l'appel à Beep().)