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

Téléchargez Pascal Discussion :

CapNum


Sujet :

Téléchargez Pascal

  1. #1
    Rédacteur
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 242
    Par défaut CapNum
    Bonjour,

    Je vous propose un nouvel élément à utiliser : CapNum

    CapNum fonctionne sous Windows. C'est un indicateur qui permet de connaître l'état du verrouillage des majuscules et des chiffres.

    Quand on lance l'application, une icône vient se loger dans la zone de notification. Cette icône varie selon l'état de verrouillage :

    • icône (gris-gris) => Aucun verrouillage;
    • icône (bleu-gris) => Majuscules verrouillées;
    • icône (gris-vert) => Chiffres verrouillés;
    • icône (bleu-vert) => Majuscules et chiffres verrouillés.

    Attention : Il faut que l'affichage de l'application dans la zone de notification soit autorisé.

    Si nécessaire, un double clic sur l'icône dans la barre de notification permet d'ouvrir l'application en fenêtre normale.
    Les indications y sont visibes et actives. L'application peut alors être fermée par cette fenêtre.
    L'icône de l'application est visible dans la barre des taches.

    L'application étant notamment conçue pour les PC portables qui n'offrent pas d'indicateur de verrouillage des majuscules et des chiffres, il peut s'avérer judicieux de placer le raccourci de l'application dans le dossier de démarrage de l'utilisateur en ayant préalablement déposé le dossier de l'application sur C: ou dans un de ses autres dossiers. L'application pourra alors être active dès l'ouverture de la session de l'utilisateur.

    Qu'en pensez-vous ?

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 959
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 959
    Par défaut
    Bonjour,

    A quoi sert ce truc ?

    Le clavier dispose de ses propres voyants indicateurs, alors ?

    Si les cons volaient, il ferait nuit à midi. :D

  3. #3
    Rédacteur
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 242
    Par défaut
    Bonjour droggo,

    Le clavier dispose de ses propres voyants indicateurs, alors ?
    Eh bien non, pas tous les claviers.

    Il existe d'ailleurs d'autres applications du même type que CapNum pour pallier ce souci.

    Par exemple : Keyboard Leds de l'éditeur karpolan.com.
    D'ailleurs si tu te rends ici pour le télécharger : https://www.clubic.com/telecharger-f...oard-leds.html, voilà ce qui est dit :
    Certains PC portables ou de bureau n'ont pas d'indicateurs lumineux qui témoignent du statut des touches de verrouillage des majuscules, du verrouillage du pavé numérique ou encore du verrouillage du défilement.
    Keyboard Leds résout se problème en affichant des indicateurs de couleur qui se place dans la zone de notification à côté de l'horloge. Chaque indicateur correspond à l'une des trois touches citées ci-dessus. Vous serez ainsi en mesure de connaitre leur statut en un clin d'œil. Vous pourrez personnaliser l'affichage de l'icône ainsi que les couleurs de chaque indicateur. Cet utilitaire entièrement gratuit sera utile pour les utilisateurs n'ayant pas d'indicateurs lumineux sur leur ordinateur.
    Ou ici : https://keyboard-leds.com/

    Allez un autre, CapsLock Indicator de l'éditeur Jonas Kohl : https://cli.jonaskohl.de/

    Sachant qu'il y en a d'autres, pour le plaisir un petit dernier : TrayStatus de l'éditeur https://www.binaryfortress.com/.

    L'intérêt, c'est peut-être aussi ou plutôt que je donne mon application avec son code source...

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 899
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 899
    Par défaut
    Pense à améliorer tes déclarations ce qui simplifiera grandement le code. C'est dommage de modifier les couleurs jusqu'à trois fois de suite si les deux indicateurs sont activés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const
      CapitalColors :array[boolean] of TColor = [clGray, clBlue];
      NumberColors  :array[boolean] of TColor = [clGray, clGreen];
    begin
      ShCa.Brush.Color := CapitalColors[Capitalocked];
      ShNu.Brush.Color := NumberColors[Numberlocked];
    end;
    Pour l'icône, travaille au niveau du bit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i := (GetKeyState(VK_CAPITAL) and 1) or ((GetKeyState(VK_NUMLOCK) and 1) shl 1);
    ImgList.GetIcon(i, TrIcon.Icon);
    Enfin utiliser un timer est souvent la facilité, j'aurais préféré voir quelque chose de plus dynamique à base de RawInput. Un exemple (Delphi) :
    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
    uses JwaWinUser;
     
    procedure TF_capnum.FormCreate(Sender: TObject);
    var
      RID: TRawInputDevice;
     
    begin
      //Messages clavier
      RID.usUsagePage := $01;
      RID.usUsage     := $06;
      RID.dwFlags     := RIDEV_INPUTSINK;
      RID.hwndTarget  := Handle;
     
      RegisterRawInputDevices(@RID, 1, SizeOf(TRawInputDevice));
    end;
     
    procedure TF_capnum.WndProc(var Message: TMessage);
    var
      Data :PRawInput;
      Size :dword;
     
    begin
      if Message.Msg = WM_INPUT then
      begin
        GetRawInputData(Message.LParam, RID_INPUT, nil, Size, SizeOf(TRawInputHeader));
        GetMem(Data, Size);
     
        try
          if GetRawInputData(Message.LParam, RID_INPUT, Data, Size, SizeOf(TRawInputHeader)) = Size then
          begin
            if Data.keyboard.VKey in [VK_CAPITAL, VK_NUMLOCK] then
              VoirMajNumLockEtat;
     
            Message.Result := 0;
          end;
     
        finally
          FreeMem(Data);
        end;
      end
     
      else inherited;
    end;

  5. #5
    Rédacteur
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 242
    Par défaut
    Bonjour Andnotor,

    Je viens de publier une nouvelle version dans laquelle j'ai fait ce que tu m'as conseillé.
    Par contre, pour supprimer le timer, je suis passé par un hook.

    Merci pour ton aide.

    Chrispi

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 899
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 899
    Par défaut
    C'est une possibilité mais le hook de bas niveau n'est pas la meilleure solution. Il implique une commutation de processus et si le tiens se plante c'est l'ensemble du système qui se bloque.

    Pour prévenir cela depuis Windows 7, s'il prend plus d'un certain temps à s'exécuter (5s sous W7, 1s sous W10 et on parle d'un temps global et non juste celui alloué à ton processus) il est purement et simplement déchargé, ton app n'en saura rien (pas de notification) et tu pourras juste constater que ça ne fonctionne plus.

    RawInput reste la meilleure solution, très simple à mettre en route à l'aide de JEDI.

  7. #7
    Rédacteur
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 242
    Par défaut
    Ok, dès que j'ai un peu de temps, je vais essayer de proposer une nouvelle version qui passe par Rawinput.

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