[Résolu] Rendre le pavé numérique toujours actif

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

[Résolu] Rendre le pavé numérique toujours actif

Message par brossden »

Bonjour à tous
Je viens vers vous une fois de plus car je cherche la library PureLib.pb et pour le moment je ne la trouve nul part.
Si vous avez un lien grand merci à vous !

Cordialement

Brossden
Dernière modification par brossden le jeu. 20/juil./2023 13:51, modifié 5 fois.
Denis

Bonne Jounée à tous
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: PureLib.pb

Message par Ollivier »

Tu parles d'un fichier créé par ArS ?
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: PureLib.pb

Message par brossden »

Bonjour ollivier et merci de te pencher sur mon problème

Je ne sais pas, j'ai trouvé ce code et je cherche à le tester :

I
includeFile "PureLib/PureLib.pb"

Procedure CheckNumLockState()
If ReadRegKeyString(HKEY_CURRENT_USER, "Control Panel\Keyboard", "InitialKeyboardIndicators") = "2"
MessageRequester("État du pavé numérique", "Le pavé numérique est verrouillé.")
Else
MessageRequester("État du pavé numérique", "Le pavé numérique n'est pas verrouillé.")
EndIf
EndProcedure

Je cherche une solution pour toujours avoir le clavier numérique en mode "numlock"
Denis

Bonne Jounée à tous
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: PureLib.pb

Message par boddhi »

Salut Denis,

Sous Windows, avec un EventTimer()

Code : Tout sélectionner

keybd_event_(#VK_NUMLOCK,0,#KEYEVENTF_EXTENDEDKEY|0,#true) ; #True = NumLock verrouillé et donc #False = NumLock déverrouillé  :) 
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: PureLib.pb

Message par brossden »

Désolé boddhi mais que le pavé soit verrouillé ou pas la réponse est la même True ! Mais merci quand même pour ton aide !
Denis

Bonne Jounée à tous
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: PureLib.pb

Message par boddhi »

brossden a écrit : Désolé boddhi mais que le pavé soit verrouillé ou pas la réponse est la même True ! Mais merci quand même pour ton aide !
:oops: C'est vrai, j'ai extrait ça d'un très vieux code sans vérifier complètement le fonctionnement correct.
De plus, Keybd_Event() semble avoir été déprécié par MS depuis un certain temps...

Essaye plutôt ça :

Code : Tout sélectionner

Procedure Pc_BloquerToucheNUMLOCK()
  Protected.INPUT Saisie
  If GetKeyState_(#VK_NUMLOCK)<>#True
    With Saisie
      \type=#INPUT_KEYBOARD
      \ki\wVk=#VK_NUMLOCK
      \ki\dwFlags=0
      SendInput_(1,@Saisie,SizeOf(INPUT))
      \ki\dwFlags=#KEYEVENTF_KEYUP
      SendInput_(1,@Saisie,SizeOf(INPUT))
    EndWith
 EndIf   
EndProcedure

OpenWindow(0,100,100,200,200,"Test",#PB_Window_SystemMenu)
AddWindowTimer(0,0,100)
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Timer
      If EventTimer()=0
        Pc_BloquerToucheNUMLOCK()
      EndIf
    Case #PB_Event_CloseWindow:End
  EndSelect
ForEver
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: PureLib.pb

Message par brossden »

Désolé boddhi mais ce n'est pas mieux... Merci tout de même d'essayer!
Denis

Bonne Jounée à tous
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: PureLib.pb

Message par boddhi »

8O Ca marche parfaitement pour moi pourtant !

Quand tu parles de clavier numérique, tu fais bien référence au pavé numérique à droite d'un clavier simple et non des chiffres situés au dessus des caractères alphabétiques ?

Si c'est bien le cas, je t'assure que le code fonctionne correctement (Sous W10 x64 / PB 6.02 x64).Je l'ai testé 4 ou 5 fois...
Image
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: PureLib.pb

Message par brossden »

Non tu testes uniquement l'appuis sur la touche mais pas l'état "numlock on" ou "numlock off"
De plus test le code que tu as mis ici rien ne se passe dans la fenêtre.
Denis

Bonne Jounée à tous
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: PureLib.pb

Message par Marc56 »

Ceci: (Windows API)

Code : Tout sélectionner

Debug GetKeyState_(#VK_NUMLOCK) & 1
1 = Numlock On
0 = Numlock Off

Source et exemple
https://www.rsbasic.de/winapi-library/
WinAPI Library
> Souris et clavier
> Trouver le verrouillage numérique, le verrouillage des majuscules, le verrouillage du défilement

Code : Tout sélectionner

;Autor: Josef Sniatecki

EnableExplicit

Define EventID

Procedure.s CheckCapsLock()
  If GetKeyState_(#VK_CAPITAL) & 1
    ProcedureReturn "Caps Lock: On"
  Else
    ProcedureReturn "Caps Lock: Off"
  EndIf
EndProcedure

Procedure.s CheckNumLock()
  If GetKeyState_(#VK_NUMLOCK) & 1
    ProcedureReturn "Num Lock: On"
  Else
    ProcedureReturn "Num Lock: Off"
  EndIf
EndProcedure

Procedure.s CheckScrollLock()
  If GetKeyState_(#VK_SCROLL) & 1
    ProcedureReturn "Scroll Lock: On"
  Else
    ProcedureReturn "Scroll Lock: Off"
  EndIf
EndProcedure

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  TextGadget(1,10,10,100,20,"",0)
  TextGadget(2,10,30,100,20,"",0)
  TextGadget(3,10,50,100,20,"",0)
  
  SetGadgetText(1,CheckCapsLock())
  SetGadgetText(2,CheckScrollLock())
  SetGadgetText(3,CheckNumLock())
  
Repeat
EventID=WaitWindowEvent()
If EventID=#WM_KEYUP
  SetGadgetText(1,CheckCapsLock())
  SetGadgetText(2,CheckScrollLock())
  SetGadgetText(3,CheckNumLock())
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
; IDE Options = PureBasic 5.30 (Windows - x64)
; CursorPosition = 2
; Folding = -
; EnableXP
; EnableUser
; EnableCompileCount = 1
; EnableBuildCount = 0
(Testé)
:wink:
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: PureLib.pb

Message par brossden »

Bravo Marc56

ça marche impeccablement et hyper concis

as tu un code pour forcer le pavé numérique en mode actif ?
Denis

Bonne Jounée à tous
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: PureLib.pb

Message par Marc56 »

Dans la même section du site Rsbasic
Source et exemple
https://www.rsbasic.de/winapi-library/
WinAPI Library
> Souris et clavier
(je n'ai pas testé les autres fonctions)

PS. Prendre parfois la section en anglais du site, car les traductions français ne sont pas toutes exactes.
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: PureLib.pb

Message par brossden »

Merci à tous et particulièrement à Marc56 qui m'a révélé la solution.

Je suis heureux de constater qu'il y a toujours quelqu'un pour aider ceux qui sont dans la panade alors un grand MERCI à tout le monde !

Pour être sûr de toujours avoir le pavé numérique actif voici le code :

Code : Tout sélectionner

If OpenWindow(0,0,0,300,20,"Pavé numerique Activé",#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
   Repeat
      If  GetKeyState_(#VK_NUMLOCK) & 1 = 0
         keybd_event_(#VK_NUMLOCK,0,#KEYEVENTF_EXTENDEDKEY|0,0)
         keybd_event_(#VK_NUMLOCK,0,#KEYEVENTF_EXTENDEDKEY|#KEYEVENTF_KEYUP,0)
     EndIf
     Event = WindowEvent()
  WaitWindowEvent(200)
 Until Event = #PB_Event_CloseWindow
EndIf
Denis

Bonne Jounée à tous
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: PureLib.pb Résolu mais sans cette library

Message par brossden »

Les touches sous le pavé numérique restent accessibles en appuyant sur Shift (tabulateur haut)
Denis

Bonne Jounée à tous
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: [Résolu] Rendre le pavé numérique toujours actif

Message par boddhi »

Salut Brossden,

Ton code est indéniablement plus concis et rapide que le mien ! :wink:

Toutefois, une petite remarque :
brossden a écrit : sam. 15/juil./2023 9:06 Non tu testes uniquement l'appuis sur la touche mais pas l'état "numlock on" ou "numlock off"
De plus test le code que tu as mis ici rien ne se passe dans la fenêtre.
brossden a écrit : ven. 14/juil./2023 12:36 Je cherche une solution pour toujours avoir le clavier numérique en mode "numlock"
Mon code répondait bien à ta demande initiale, à savoir, avoir toujours le numlock activé.
Et quant à une interaction avec la fenêtre, ce n'était pas précisé dans ta requête. :wink:

Cdlt.
Verrouillé