IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[Son] Bypass des écouteurs sur un laptop


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 53
    Points
    53
    Par défaut [Son] Bypass des écouteurs sur un laptop
    Bonjour.
    Je désire déclencher une alarme sonore sur un pc laptop qui soit pris en compte par les hauts-parleurs intégrés à la machine et ce malgré le fait que des écouteurs soient branchés. Autrement l'alarme n'aurait aucune utilité. Quelqu'un a une piste ou la façon de faire? Merci.

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Salut,

    Si la prise est comme sur un vieux magnéto à K7 à 3 balles, ie avec un jack à coupure (brancher un truc externe coupe un truc interne) ben t'oublies !
    Par ailleurs, si un pinpin peut brancher des écouteurs, c'est qu'il a accès à la machine, et il peut donc également mettre le volume à zéro, pourquoi pas, même sans écouteurs branchés...
    À repenser,

    Mes 2 cts,
    --
    jp

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Salut,

    Si la prise est comme sur un vieux magnéto à K7 à 3 balles, ie avec un jack à coupure (brancher un truc externe coupe un truc interne) ben t'oublies !
    Par ailleurs, si un pinpin peut brancher des écouteurs, c'est qu'il a accès à la machine, et il peut donc également mettre le volume à zéro, pourquoi pas, même sans écouteurs branchés...
    À repenser,

    Mes 2 cts,
    --
    jp

    Mon application est une alarme qui est déclenchée dès que l'alimentation en courrant est coupée (par exemple le fil est déconnecté). Tout fonctionne bien, le volume poussé automatiquement au max. dès le débranchement. Le seul problème est avec la présence d'écouteurs. S'ils sont branchés l'alarme ne s'entend pas (ou peu). Si comme tu dis la coupure est purement électrique ou mécanique alors c'est perdu d'avance - ??? Mais peut-être que non??? Je cherche encore, et la solution doit être valable pour tous les laptops (donc au niveau de la programmatiion) .

    Merci.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Le plus simple est d'utiliser le "PC Speaker" classique de l'ordinateur.
    aucun écouteur n'est branchable là dessus...aucun volume possible...

    ensuite, tu peux t'amuser à créer ton propre son d'alrme en utilisant
    une série de :

    windows.Beep(Frequence,DurationEnMilisec);

    Reste à s'avoir si ton portable est doté d'un "buzer" interne qui fait
    office de PC Speaker....

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Eric Boisvert Voir le message
    Le plus simple est d'utiliser le "PC Speaker" classique de l'ordinateur.
    aucun écouteur n'est branchable là dessus...aucun volume possible...

    ensuite, tu peux t'amuser à créer ton propre son d'alrme en utilisant
    une série de :

    windows.Beep(Frequence,DurationEnMilisec);

    Reste à s'avoir si ton portable est doté d'un "buzer" interne qui fait
    office de PC Speaker....
    Merci, l'idée est bonne mais pas pratique ou pas applicable à tous les portables. Je vais me contenter de d'afficher un avis disant d'enlever les écouteurs s'ils sont branchés. Maintenant comment le détecte-on? Je cherche.

  6. #6
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Et pourquoi pas une alarme visuelle ???

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par waskol Voir le message
    Et pourquoi pas une alarme visuelle ???
    pas très efficace.

    L'alarme fonctionne bien en autant que les écouteurs ne sont pas branchés. Je suis toujours à le recherche d'un code permettant de contourner ce problème. Je rends mon code disponible la demande. Merci.

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Citation Envoyé par rpoulin Voir le message
    pas très efficace.
    Bah, avec un peu d'électronique sur le port série, tu devrais pouvoir piloter n'importe quoi, style un stroboscope (et ça, ça devrait se voir !) ou, pourquoi pas, une sirène , ou les deux !
    On fait de l'alarme ou on n'en fait pas

    Citation Envoyé par rpoulin Voir le message
    Je suis toujours à le recherche d'un code permettant de contourner ce problème.
    Mission impossible, again, si l'insertion du jack des écouteurs fait une coupure physique du son vers les HP's.
    Donc, à moins d'attaquer le beeper de la carte-mère -- s'il existe ! -- par son driver, je vois pas trop...
    Mes 2 cts,
    --
    jp

  9. #9
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par rpoulin Voir le message
    pas très efficace.

    L'alarme fonctionne bien en autant que les écouteurs ne sont pas branchés. Je suis toujours à le recherche d'un code permettant de contourner ce problème. Je rends mon code disponible la demande. Merci.
    Un truc Hollywoodien à souait qui clignote en rouge sur toute la surface de l'écran ne suffirait pas, hé bien dis donc !!!!

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Yep !
    Citation Envoyé par Jipété Voir le message
    Bah, avec un peu d'électronique sur le port série (...)
    Je persiste et signe en précisant qu'il faut ajouter à cela un système de watchdog, style le port série envoie un top tous les tant, même s'il n'y a pas condition "alarme", afin de réarmer un timer "hard" (NE555 ?) qui, si pas réarmé, va déclencher l'alarme.
    Car à quoi servirait un système d'alarme dans un système planté ?

    Dans ce cas-là, si le soft est en carafe, faut prévenir quelqu'un pour qu'il réinitialise. Et y a qu'une manière : le hard.
    On fait de l'alarme ou on joue ?
    Enfin, tu me diras, tout ça dépend de ce qu'il y a à surveiller, hein
    --
    jp
    PS: t'as pensé à l'onduleur ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Yep !

    Je persiste et signe en précisant qu'il faut ajouter à cela un système de watchdog, style le port série envoie un top tous les tant, même s'il n'y a pas condition "alarme", afin de réarmer un timer "hard" (NE555 ?) qui, si pas réarmé, va déclencher l'alarme.
    Car à quoi servirait un système d'alarme dans un système planté ?

    Dans ce cas-là, si le soft est en carafe, faut prévenir quelqu'un pour qu'il réinitialise. Et y a qu'une manière : le hard.
    On fait de l'alarme ou on joue ?
    Enfin, tu me diras, tout ça dépend de ce qu'il y a à surveiller, hein
    --
    jp
    PS: t'as pensé à l'onduleur ?
    L'alarme est faire juste pour les cas ou on laisse le laptop seul quelques minutes, par exemple à la bibliothèque, le temps d'aller chercher un livre sur un rayon... (de plus en plus rare mais bon!) etc. des trucs du genre. Je me suis fait voler le mien dans ces circonstances et pensé qu'une simple alarme sonore qui se déclenche dès que l'alimentation AC est coupée ferait l'affaire. L'arlarme surprend et on laisse le laptop sur place.

    L'application actuelle est ici:
    http://volvox.zoomshare.com/files/LAPTOPALARM.rar

    Je pensais pouvoir l'améliorer en prévoyant le cas ou l'on oubli d'enlever les écouteurs - car dans ce cas l'alarme n'est pas très dissuasive.

    Il y aurait d'autres améliorations à faire - comme tu le mentionnes. Mais concernant une alarme visuelle ... j'en suis pas convaincu , le son se réveille plis vite que l'écran, par exemple lorsque le pc est en mode lock.

    Finalement le code (pas très long)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    unit MainForm;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      WTSSessionNotification, StdCtrls, MediaPlayer, Buttons, ShellAPI, Settings,
      ExtCtrls;
     
    const
      WM_ICONTRAY = WM_USER + 1;
     
    type
      TSettingsForm = class(TForm)
        OpenDialog: TOpenDialog;
        pnl1: TPanel;
        InfoLabel: TLabel;
        grp1: TGroupBox;
        AlarmSoundLabel: TLabel;
        lbl1: TLabel;
        checkIfLocked: TCheckBox;
        Filename: TEdit;
        Browse: TBitBtn;
        TestSound: TBitBtn;
        btn1: TBitBtn;
        procedure Minimize(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure TestSoundClick(Sender: TObject);
        procedure BrowseClick(Sender: TObject);
        procedure checkIfLockedClick(Sender: TObject);
        procedure OpenHomepage(Sender: TObject);
        procedure btn1Click(Sender: TObject);
      private
        TrayIconData: TNotifyIconData;
        procedure CheckForAC;
      protected
        procedure WndProc(var Message: TMessage); override;
      public
        { Public declarations }
      Function SecuredLockWorkStation : Boolean ;
      end;
     
    var
      SettingsForm: TSettingsForm;
     
    implementation
     
    {$R *.DFM}
    {$R WindowsXP.RES}
     
    var
       MPlayer: TMPlayer;
       mySettings: TSettings;
       isLocked: boolean = false;
     
    // vrai si A/C est connecté, faux autrement
    function ACConnected: boolean;
    var PowerStatus: TSystemPowerStatus;
    begin
     GetSystemPowerStatus(PowerStatus);
     result := (PowerStatus.ACLineStatus = 1);
    end;
     
    // handles application.minimize; pas vraiment réduit
    // mais caché
    procedure TSettingsForm.Minimize(Sender: TObject);
    begin
     Application.Restore;
     self.Hide;
    end;
     
    // processes window messages (notification à propos
    // changement de satut en alimentation, lock station et
    // toute activité sur l'icone)
    procedure TSettingsForm.WndProc(var Message: TMessage);
    begin
      case Message.Msg of
        WM_WTSSESSION_CHANGE:
          begin
            if Message.wParam = WTS_SESSION_LOCK then
             isLocked := true;
            if Message.wParam = WTS_SESSION_UNLOCK then
            begin
             isLocked := false;
             if MPlayer.isPlaying then
              MPlayer.Close;
            end;
          end;
        WM_POWERBROADCAST:
          begin
           if (isLocked) or (checkIfLocked.checked=false) then
            CheckForAC;
          end;
        WM_ICONTRAY:
          begin
             case Message.lParam of
              WM_LBUTTONDOWN:
                begin
                  if SettingsForm.visible then
                   SettingsForm.Hide
                  else
                   SettingsForm.Show;
                end;
              WM_RBUTTONUP:
                begin
                  if SettingsForm.visible then
                   SettingsForm.Hide
                  else
                   SettingsForm.Close;
                end;
             end;
          end;
      end;
      inherited;
    end;
     
    Function TSettingsForm.SecuredLockWorkStation : Boolean ;
    //Demande le verrouillage de la station. Renvoie TRUE si le verrouillage a été
    //déclenché. Renvoie FALSE si l'OS ne supporte pas la fonction, ou si le
    //verrouillage est impossible. Donc sécure pour W98.
    Type
        PLockFunction = Function : Cardinal ; stdcall ;
    Var
       HDLL : THandle       ;
       Lock : PLockFunction ;
    Begin
         Result:=False;
         If Win32Platform=VER_PLATFORM_WIN32_NT Then
            Begin
            HDLL:=LoadLibrary('USER32.DLL');
            If (HDLL<>0) Then
               Begin
               @Lock:=GetProcAddress(HDLL,'LockWorkStation');
               If Assigned(@Lock) Then
                  Result:=(Lock<>0) ;
               FreeLibrary(HDLL);
               End;
            End;
    End ;
     
    procedure TSettingsForm.btn1Click(Sender: TObject);
    begin
     
     if Application.MessageBox('Cette action va verrouiller votre poste de travail. '
       + #13#10 + 'Si votre session est protégée par mot de passe celui-ci' +
       #13#10 + 'vous sera demandé à la réouverture. Vous pouvez' + #13#10 + 
       'appuyer sur CTRL+ALT_SUPPR puis tapez vos ' + #13#10 + 
       'informations d''identification pour déverrouiller le poste.', 
       'Information', MB_OKCANCEL + MB_ICONINFORMATION + MB_TOPMOST) = IDOK then
     begin
      SecuredLockWorkStation;
     end;
     
     end;
     
    procedure TSettingsForm.CheckForAC;
    begin
     if ACConnected=false then
      MPlayer.Play
     else
      if MPlayer.isPlaying then
       MPlayer.Close;
    end;
     
    procedure TSettingsForm.FormCreate(Sender: TObject);
    begin
     
      SettingsForm.Icon := Application.Icon;
      // init media player pour alerte sonore
      MPlayer := TMPlayer.Create(self);
     
      // register pour  notification alimentation
      WTSRegisterSessionNotification(Handle, NOTIFY_FOR_ALL_SESSIONS);
     
      // ajout d'un icone au tray
      with TrayIconData do
      begin
        cbSize := SizeOf(TrayIconData);
        Wnd := Handle;
        uID := 0;
        uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
        uCallbackMessage := WM_ICONTRAY;
        hIcon := Application.Icon.Handle;
        StrPCopy(szTip, 'AC.ALARME - Clic gauche pour les propriétés - clic droit pour fermer.');
      end;
      Shell_NotifyIcon(NIM_ADD, @TrayIconData);
     
      // lire le setting du registre
      mySettings := TSettings.Create;
      mySettings.LoadSettings(ExtractFilePath(ParamStr(0)) + 'AlarmeAC.mp3');
     
      checkIfLocked.checked := mySettings.checkIfLocked;
      if FileExists(mySettings.soundfile) then
      begin
       Filename.text := ExtractFilename(mySettings.Soundfile);
       MPlayer.Filename := mySettings.Soundfile;
      end else
      begin
       MessageDlg('Fichier ' + mySettings.Soundfile + ' non trouvé.'+ #13#10+
                  'SVP Choisir un fichier audio à partir des propriétés.', mtError, [mbOk], 0);
       SettingsForm.Show;
      end;
    end;
     
    // enlève le tray quand le programme ferme
    procedure TSettingsForm.FormDestroy(Sender: TObject);
    begin
     Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
    end;
     
    procedure TSettingsForm.TestSoundClick(Sender: TObject);
    begin
      if MPlayer.isPlaying then
       MPlayer.Close
      else
       MPlayer.Play;
    end;
     
    procedure TSettingsForm.BrowseClick(Sender: TObject);
    begin
     if OpenDialog.Execute then
     begin
      Filename.Text := ExtractFilename(OpenDialog.Filename);
      MPlayer.Filename := OpenDialog.Filename;
      // mplayer.open validé si le fichier peut être joué
      // sinon message
      MPlayer.Open;
      MPlayer.Close;
     end;
    end;
     
    procedure TSettingsForm.checkIfLockedClick(Sender: TObject);
    begin
     mySettings.checkIfLocked := checkIfLocked.checked;
    end;
     
    end.

  12. #12
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Yep !

    Je comprends mieux avec cette explication.
    Bon, dans ton cas c'est simple, tu te lèves pour aller chercher un livre, tu débranches les écouteurs.
    Oki, c'est contraignant, mais je vois pas autre chose.
    --
    jp

Discussions similaires

  1. Console DTMF avec des fonctionnalités sur le son audio
    Par badman_nx dans le forum MATLAB
    Réponses: 32
    Dernier message: 07/06/2007, 18h58
  2. [pub] Mettre des pubs sur son site.
    Par Muesko dans le forum Publicité
    Réponses: 2
    Dernier message: 02/05/2007, 17h02
  3. [Upload] Uploader des vidéos sur son site web
    Par Tavarez59 dans le forum Langage
    Réponses: 4
    Dernier message: 09/04/2007, 16h44
  4. Rechercher des fichiers sur son système
    Par Olivier Regnier dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 17/03/2007, 21h35
  5. Réponses: 10
    Dernier message: 18/05/2006, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo