Page 1 sur 2
[Résolu] Rendre le pavé numérique toujours actif
Publié : ven. 14/juil./2023 11:00
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
Re: PureLib.pb
Publié : ven. 14/juil./2023 11:51
par Ollivier
Tu parles d'un fichier créé par ArS ?
Re: PureLib.pb
Publié : ven. 14/juil./2023 12:36
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"
Re: PureLib.pb
Publié : ven. 14/juil./2023 17:39
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é :)
Re: PureLib.pb
Publié : ven. 14/juil./2023 17:58
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 !
Re: PureLib.pb
Publié : ven. 14/juil./2023 23:26
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 !

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
Re: PureLib.pb
Publié : sam. 15/juil./2023 6:56
par brossden
Désolé boddhi mais ce n'est pas mieux... Merci tout de même d'essayer!
Re: PureLib.pb
Publié : sam. 15/juil./2023 8:43
par boddhi

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...

Re: PureLib.pb
Publié : sam. 15/juil./2023 9:06
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.
Re: PureLib.pb
Publié : sam. 15/juil./2023 9:19
par Marc56
Ceci: (Windows API)
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é)

Re: PureLib.pb
Publié : sam. 15/juil./2023 9:49
par brossden
Bravo Marc56
ça marche impeccablement et hyper concis
as tu un code pour forcer le pavé numérique en mode actif ?
Re: PureLib.pb
Publié : sam. 15/juil./2023 9:56
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.
Re: PureLib.pb
Publié : sam. 15/juil./2023 10:44
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
Re: PureLib.pb Résolu mais sans cette library
Publié : jeu. 20/juil./2023 13:47
par brossden
Les touches sous le pavé numérique restent accessibles en appuyant sur Shift (tabulateur haut)
Re: [Résolu] Rendre le pavé numérique toujours actif
Publié : jeu. 20/juil./2023 17:28
par boddhi
Salut Brossden,
Ton code est indéniablement plus concis et rapide que le mien !
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.
Cdlt.