|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Pb avec SendKeys [ Divers / General ] (akim77)
Informations & options pour cette discussion
jeudi 1 mars 2007 à 22:35:27 |
Pb avec SendKeys

akim77
|
Salut a tous,
Quand je créé un exe avec ce qui suit, si la led "Caps Lock" est allumée j'obtiens ççççç et pas 99999 Qui peut me dire pourquoi ? Vous l'aurez compris, je ne veux avoir que des chiffres, dans tous les cas . Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long Const VK_CAPITAL = &H14 ' CapsLock Private Sub Timer1_Timer() If (GetKeyState(VK_CAPITAL) > 0) Then SendKeys "9", False Else SendKeys "+9", False End If End Sub
Merci de votre aide!
|
|
|
jeudi 1 mars 2007 à 22:57:46 |
Re : Pb avec SendKeys

jmfmarques
|
Bonsoir,
"Quand je créé un exe avec ce qui suit, si la led "Caps Lock" est allumée j'obtiens ççççç et pas 99999"
1) Euh... je pense que tu as voulu dire le contraire !...
2) ce sera ainsi non seulement pour VB mais pour tout !
3) Si j'ai bien compris, tu souhaites faire un programme qui, lancé et tournant constamment en arrière plan, transformerait systématiquement la frappe des touches alphanimériques/numériques en frappe de touches numériques.
Quid alors de la nécessité d'utiliser réellement la partie "inférieure" de ces touches ? Il te faudrait alors créer un bouton pour "basculer" d'un état à l'autre ? Mais... c'est exactement le rôle des touches Caps et Capslock ! (alors : un geste ou l'autre, ce sera toujours un geste, non ?)
|
|
|
vendredi 2 mars 2007 à 07:17:09 |
Re : Pb avec SendKeys

akim77
|
Bonjour,
Merci de t'interesser à ce petit casse-tête.
1) Non je n'ai pas voulu dire le contraire , c'est ce que je constate.
2) Tu as raison, dans la vraie vie, si caps lock est éteinte si tu presse shift + 9 tu obtiens 9, mais dans mon exe soit SendKeys "+9" envoi la même chose que SendKeys "9", (en debogage j'obtiens toujours 9) soit la détection de la touche CapsLock ne fonctionne pas.
3) En fait, j'ai un peu simplifié le code , je reçois d'un lecteur de badge une série de chiffres que je renvoi à la fenêtre active. çà fonctionne bien mais uniquement si CapsLock est déactivée.
|
|
|
vendredi 2 mars 2007 à 07:43:47 |
Re : Pb avec SendKeys

jmfmarques
|
en majuscules et un çBonjour,
Je ne comprends toujours pas où tu veux en arriver ...
Je vais donc uniquement te répmondre sur ce que je vois !
Sendkeys "+9" envoie 9 en majuscules et non l'appui de la touche capslol puis cette de 9
pour simuler l'appui de Capslock, il faut écrire : SendKeys "{CAPSLOCK}"
je ne sais pas de quel clavier tu disposes Je pense que tu parles de l'emploi de la touche qui envoie un ç en minuscules
dans ce cas :
SendKeys "{CAPSLOCK}" SendKeys "ç"
ce qui peut donc également s'écrire : SendKeys "{CAPSLOCK}" & "ç"
enverra un 9 et non un ç
Si c'est ce que tu cherchais, tu aurais pu dire simplement :
"Comment simuler l'emploi de la touche CapsLock ?"
|
|
|
vendredi 2 mars 2007 à 08:11:22 |
Re : Pb avec SendKeys

jmfmarques
|
Je te fais remarquer, toutefois, que le prochain emploi de : SendKeys "{CAPSLOCK}" repassera (exactement comme ce serait le cas avec ton doigt) en situalition "normale"
Il te faudra donc gérer en ayant d'abord "regarder" quel est l'état actuel de cette touche de ton clavier et n'envoyer CapsLock que si cette touche n'est pas déjà dans l '"état enfoncé" .... (ce qui est possible, mais... tu te lances là dans la construction d'une usine à gaz assez surprenante...)
|
|
|
vendredi 2 mars 2007 à 08:28:02 |
Re : Pb avec SendKeys

jmfmarques
|
Réponse acceptée !
Re 1) l'utilisation de la fonction GetKeyboardState de la librairie user32 de l'Api de windows te permet de connaître l'état en cours de ton clavier
2) tu pourrais de surcroît te servir, plutôt que de Sendkeys, de la fonction SetKeyboardState de la même librairie pour modifier l'état de ton clavier
|
|
|
vendredi 2 mars 2007 à 08:36:10 |
Re : Pb avec SendKeys

akim77
|
Je ne veux surtout pas changer l'etat de CapsLock, mais que quelque soit l'état de CapsLock obtenir uniquement 9 et jamais ç
Après avoir lu ta réponse j'ai tenté de remplacer "9" par "ç" et cà fonctionne If (GetKeyState(VK_CAPITAL) > 0) Then SendKeys "ç", False Else SendKeys "+ç", False 'envoi de Shift ç End If
Evidemment je dois le faire pour tout les chiffres et j'aimerai que çà fonctionne pour les types de claviers. Une usine à gaz disais-tu ? c'est bien possible, mais je vais tenter de faire plus simple.
Merci en tout cas .
|
|
|
vendredi 2 mars 2007 à 09:09:24 |
Re : Pb avec SendKeys

jmfmarques
|
Je crois que tu devrais plutôt exposer ton problème directement et simplement, sans même parler de Capslock ni de sendkeys.
En exposant très simplement la situation, telle qu'elle se présente, car je ne la vois pas !
Si tu dois envoyer des chiffres par sendkeys, tu peux le faire sans utiliser nécessairement le Capslock ! Si c'est l'utilisateur qui frappe au clavier (donc pas de sendkeys), dis-nous dans quel contrôe et dans quelles circonstances... Il se peut enfin que, pour la frappe dans un contrôle de saisie, tu souhaites faciliter la vie de l'utilisateur (d'un portable sans pavé numérique par exemple)...
Enfin bref : si tu nous exposes clairement le problème que tu veux résoudre, nous t'indiquerons la solution la meilleure (il y en a quasiment toujours une).
A toi d'expliquer de sorte à nous mettre en situation de parfaite connaissance de cause.
|
|
|
vendredi 2 mars 2007 à 09:50:21 |
Re : Pb avec SendKeys

Renfield
|
Réponse acceptée !
Une autre solution, c'est de simuler la saisie du code Ascii des touches... Comme ca, si NumLock est allumé ou pas, tu sortira toujours le même caractère (et non plus touche) SendKeys fonctionne par touche, lui... Option Explicit Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private Const KEYEVENTF_KEYUP As Long = &H2 Private Const VK_LMENU As Long = &HA4 Private Const VK_NUMPAD0 = &H60
Private Sub SendChars(ByRef vsChars As String) Dim i As Long Dim sAsc As String Dim iAsc As Long Dim nKey As Long For i = 1 To Len(vsChars) keybd_event VK_LMENU, 0, 0, 0 sAsc = "0" & Asc(Mid$(vsChars, i, 1)) For iAsc = 1 To Len(sAsc) nKey = VK_NUMPAD0 + Mid$(sAsc, iAsc, 1) keybd_event nKey, MapVirtualKey(nKey, 0), 0, 0 keybd_event nKey, MapVirtualKey(nKey, 0), KEYEVENTF_KEYUP, 0 Next iAsc
keybd_event VK_LMENU, 0, KEYEVENTF_KEYUP, 0 Next i End Sub
Private Sub Form_Click() SendChars "92148" End Sub | | By Renfield | Renfield Admin CodeS-SourceS - MVP Visual Basic
|
|
|
vendredi 2 mars 2007 à 09:55:48 |
Re : Pb avec SendKeys
|
Cette discussion est classé dans : pb, long, private, sendkeys, getkeystate
Répondre à ce message
Sujets en rapport avec ce message
!! Avis aux boss des Api !!!!!!! [ par schouly ]
Comment capter le click de la souris sur un bouton dans un popupmenu créé par : CreatePopupMenu, TrackPopupMenu, AppendMenuMerci Schoulyex : (allapi.n
pb recuperation de l'adresse mac sous winNT [ par andrea ]
Bonjour, J'ai un probleme lorsque j'essaie de recuperer l'adresse mac d'un ordinateur qui est sous NT cela me renvoie toujours la valeur suivant 0.0.0
Mac adresse et NT [ par Andrea ]
Bonjour ,Le code qui suit me permet d'afficher la mac address d'une carte reseau installee sur un PC .Ce code fonctionne parfaitement sur Windows 95/9
extraire icone [ par Flyer ]
Salut tout le monde. J'arrive effectivement a extraire les icones d'une association windows avec le code ci-dessous.Private Declare Function ExtractAs
Convertir un WMF en EMF [ par daveCrocket ]
Bonjour à tous,j'ai récupérer ce source pour transformer un wmf en emf, mais je ne sais pas comment je dois l'utiliser. Pouvez-vous m'aider ?*********
WMI (2em) avec le Code du prog [ par AsselusBorealiss ]
pourriez vous m'aider et me dire pourquoi chez moi, le prog marche pas(juste une form et pas de module )Une Form1,1 Bouton, et une Listeview1Msg Erreu
api pour showintaskbar [ par Stephane ]
salut a tousj'ai un probleme, il me faudrai savoir comment enlever un rectangle(dont je connai le hwnd) dans la barre des taches a partir d'un hwnd, e
Service NT [ par ricopetitdejeuner ]
Bonjour a tous!J'ai une pitite question sur les service NT. J'arrive bien a creer mon service, mais lorsque je veux le lancer, il n'y arrive pas (aucu
pb: pour changer l'image du bureau [ par didine ]
ca ne marche pas comme caPrivate Sub Command1_Click()SystemParametersInfo SPI_SETDESKWALLPAPER, 0, file1.list, 1End SubPrivate Sub Dir1_Change()File1.
Fonction de sauvegarde inconnu !!! [ par zebest3000 ]
Je souhaite enregistrer une image en JPG, mais la fonction devient vite bizarre !Quand je tappe ceci, cela enregistre en JPG une capture d'une de mes
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

HTC G1
Entre 449€ et 449€
|