Console, copier/coller et Beep_()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
warang580
Messages : 2
Inscription : mar. 02/sept./2008 13:06

Console, copier/coller et Beep_()

Message par warang580 »

Bonjour à tous,
Alors que je m'amusais avec PureBasic sous la console, j'ai fais ceci :

Code : Tout sélectionner

OpenConsole() : ConsoleCursor(10) : ConsoleTitle("Console - Beep !")

Repeat

C$ = "" : C$ = Inkey() : 
If C$  
  If C$ = Chr(13) : PrintN("") : Beep_(700, 80) 
  Else : Print(C$) : Beep_(1000, 20) : EndIf
Else
  Delay(1)
EndIf

ForEver
Bien sûr, ça ne sert pas à grand chose :D (pour le moment)
Sauf que lorsqu'on fais un copier/coller avec le clic droit sur le nom de la console > Modifier > Coller, le bruit est vite insupportable. :?
(Je n'ai pas activé le CTRL+V)
J'aimerais savoir s'il était possible soit de désactiver le copier/coller par ce biais, soit de savoir si l'utilisateur fais un copier/coller pour désactiver le Beep_() à ce moment. (si possible sans utiliser la fonction Input())

Merci d'avance :)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Tu peux remplacer ton appel direct « Beep_() » par un appel de procédure contenant une tempo... (Ici « CoolBeep() » )

Code : Tout sélectionner

Procedure CoolBeep(A.L, B.L)
   Static Lap0.L
   Static Lap1.L
   Static Delta.L
   If A = 0
      Delta = B
   Else
      Lap0 = Lap1
      Lap1 = ElapsedMilliseconds()
      If (Lap1 - Lap0) > Delta
         Beep_(A, B)
      EndIf
   EndIf
EndProcedure
(Code non testé)

Cette procédure devrait sonner le Bip uniquement si la durée entre ce Bip et le Bip précédent est supérieur à la durée Delta.

La durée Delta (en milliseconde) se règle au préalable. Exemple :

Code : Tout sélectionner

CoolBeep(0, 1000)
>> Règle la durée Delta à 1 seconde (1000 ms).

Woilà... Bonne bourre
Répondre