attaque
Messages postés26Date d'inscriptionvendredi 23 septembre 2005StatutMembreDernière intervention 4 novembre 2009
-
3 août 2008 à 16:47
attaque
Messages postés26Date d'inscriptionvendredi 23 septembre 2005StatutMembreDernière intervention 4 novembre 2009
-
4 août 2008 à 21:33
Bonjour a tous,
Voila enfaite j'aimerai faire un petit programme, mais je suis bloqué a un endroit
Le probleme cest que j'aimerai que le clavier appui tout seul sur un touche du clavier
Par exemple: il press la touche "F" toute les 3 secondes.
J'ai chercher partout sur le site VbFrance les seuls sources que je trouve ne fonctionne pas ou alors ce sont des exemple de valeur de touche...
Dans l'attente d'une réponse je reste a votre disposition pour de plus ample informations.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 3 août 2008 à 17:23
Salut,
"J'ai chercher partout sur le site VbFrance les seuls sources que je trouve ne fonctionne pas" : c'est que tu n'as pas dû bien chercher... renseigne toi sur l'API mouse_event par exemple...
______________________________________
DarK Sidious
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 3 août 2008 à 19:11
salut,
nouveau projet, pose un timer sur une form
Option Explicit
Private Const VK_F As Long = 70&
Private Const KEYEVENTF_KEYUP As Long = &H2
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 Sub Form_Load()
Me.KeyPreview = True
Me.AutoRedraw = True
Timer1.Interval = 3000
End Sub
Private Sub Timer1_Timer()
keybd_event VK_F, 0&, 0&, 0&
keybd_event VK_F, 0&, KEYEVENTF_KEYUP, 0&
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
Me.Print Time & "
: La touche '" & Chr$(KeyAscii) & "' a été pressée"
End Sub
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 4 août 2008 à 00:22
Salut PCPT,
Impeccable !
Je patoje deuis un certain temps avec la combinaison
Shift+Alt pour agir sur la barre de langue.
D' après l' exemple, je suppose que VK_F correspond à
la touche T.Tu ne connaitrais pas quelqu' un qui connait
quelqu' un qui connait ...ce que à quoi correspond Shift+Alt ?
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 4 août 2008 à 00:59
salut LIBRE_MAX,
shift :
vbKeyShift, 16, Touche MAJ
Alt :
vbKeyMenu, 18, Touche MENU
VK_F est bien la touche F oui, déclarée en haut :
Private Const VK_F As Long = 70&
70 étant sa valeur ASCII
donc même principe :
Private Sub Timer1_Timer()
keybd_event vbKeyShift, 0&, 0&, 0&
keybd_event vbKeyMenu, 0&, 0&, 0&
keybd_event VK_F, 0&, 0&, 0&
keybd_event VK_F, 0&, KEYEVENTF_KEYUP, 0&
keybd_event vbKeyMenu, 0&, KEYEVENTF_KEYUP, 0&
keybd_event vbKeyShift, 0&, KEYEVENTF_KEYUP, 0&
End Sub
par contre là il faut jouer sur le KeyDown ou Up et non plus le Press
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = VK_F And Shift = 5 Then MsgBox "Shift+Alt+'F'"
End Sub
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 4 août 2008 à 01:18
Tu m' a sauvé d' une déprime imminente
Private Const KEYEVENTF_KEYUP As Long = &H2
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 Sub Timer1_Timer()
keybd_event vbKeyShift, 0&, 0&, 0&
keybd_event vbKeyMenu, 0&, 0&, 0&
keybd_event vbKeyMenu, 0&, KEYEVENTF_KEYUP, 0&
keybd_event vbKeyShift, 0&, KEYEVENTF_KEYUP, 0&
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode vbKeyMenu And Shift 5 Then MsgBox "Shift+Alt"
End Sub
Et c' est ce que je voulais.
La barre de langue bascule de la langue d' entrée vers la seconde langue.
Reviens à la langue d' entrée.
Reviens à la secnde..
Ainsi de suite.
Pour ce qui m' interresse, il suffit donc de lancer
keybd_event vbKeyShift, 0&, 0&, 0&
keybd_event vbKeyMenu, 0&, 0&, 0&
keybd_event vbKeyMenu, 0&, KEYEVENTF_KEYUP, 0&
keybd_event vbKeyShift, 0&, KEYEVENTF_KEYUP, 0&
pour basculer vers la seconde langue .
Et la même chose si je veux revenir à la langue d' entrée.
Merci infiniment et bonne soirée.
Tu peux dormir tranquille.Tu as fait ta BA du jour
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 4 août 2008 à 11:53
Bonjour Renfield,
Je ne sais pas à qui est adressée la question.
A moi ou à attaque ?!!
En ce qui me concene, j' ai une application qui pilote Excel depuis VB6.Je voudrais donc que lorsqu' Excel est lancé, basculer automatiquement vers la seconde langue pour pouvoir saisir directement en arabe.
Et faire de même avec un formulaire(vb6) dans lequel j' ai des champs en français et d' autres en arabe.
L' idée serait de basculer vers l' un ou l' autre selon que l' utilisateur tente de faire une entrée dans un champ en français ou en arabe.
voilà tout.
PS:Je me souviens que tu me l' a déjà fait remarqué.
Mais quelque fois on ne peut (ou on choisit de ne pas) faire autrement ;)
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 4 août 2008 à 12:39
Voilà qui répond à mes attentes.
En effet j' étais confronté à un problème:
Comment savoir quelle langue est active ?
Sans parler qu' avec Excel, la methode PCPT ne semble
pas avoir d' effet.Mais on verra ça plus tard.Pour l' instant
je travaille sur le formuliare.
Je viens de voir le lien, mais j' y trouve pas d' exemple d' appel.
j' essaierai de me débrouiller avec ce qu' il y a comme indication.
Si t' as un exemple, c' est pas de refus.
Mais tu peux toujours me laisser mijoter un peu avant
Travailler ça me fera du bien
Merci du tuyau.
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 4 août 2008 à 12:52
Presque
Pour l' instant j' ai trouvé ça:
'parameters for api's
ConstKL_NAMELENGTHAsLong=9'length of the keyboardbuffer
ConstKLF_ACTIVATEAsLong=&H1'activate the layout
'the language constants
ConstLANG_NL_STDAsString="00000413"
ConstLANG_EN_USAsString="00000409"
ConstLANG_DU_STDAsString="00000407"
ConstLANG_FR_STDAsString="0000040C"
'api's to adjust the keyboardlayout
PrivateDeclareFunctionGetKeyboardLayoutNameLib"user32"Alias"GetKeyboardLayoutNameA" (ByValpwszKLIDAsString) AsLong
PrivateDeclareFunctionLoadKeyboardLayoutLib"user32"Alias"LoadKeyboardLayoutA" (ByValpwszKLIDAsString, ByValflagsAsLong) AsLong
PublicFunctionSetKbLayout(strLocaleIdAsString) AsBoolean
'Changes the KeyboardLayout
'Returns TRUE when the KeyboardLayout was adjusted properly, FALSE otherwise
'If the KeyboardLayout isn't installed, this function will install it for you
OnErrorResumeNext
DimstrLocIdAsString'used to retrieve current KeyboardLayout
DimstrMsgAsString'used as buffer
DimlngErrNrAsLong'receives the API-error number
'create a buffer
strLocId=String(KL_NAMELENGTH, 0)
'retrieve the current KeyboardLayout
GetKeyboardLayoutNamestrLocId
'Check whether the current KeyboardLayout and the
'new one are the same
IfstrLocId= (strLocaleId&Chr(0)) Then
'If they're the same, we return immediately
SetKbLayout=True
Else
'create buffer
strLocId=String(KL_NAMELENGTH, 0)
'load and activate the layout for the current thread
strLocId=LoadKeyboardLayout((strLocaleId&Chr(0)), KLF_ACTIVATE)
IfIsNull(strLocId) Then'returns NULL when it fails
SetKbLayout=False
Else'check again
'create buffer
strLocId=String(KL_NAMELENGTH, 0)
'retrieve the current layout
GetKeyboardLayoutNamestrLocId
IfstrLocId= (strLocaleId&Chr(0)) Then
SetKbLayout=True
Else
SetKbLayout=False
EndIf
EndIf
EndIf
EndFunction
PrivateSubForm_Load()
'change the current keybour layout to 'English - US'
SetKbLayoutLANG_EN_US
EndSub
je teste à l' instant.
. <hr />... Y'en a même qui disent qu'ils l'ont vu voler.
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 4 août 2008 à 14:56
Problème résolu.
Mais j' ai du chercher lontemps..
Surtout que j' ai eu deux gros pépins.
1° Il manquait l' arabe pour la const LANG.
En cherchant une je suis tombé sur une douzaine.
Une pour chaque nationnalité ou presque.
2° LoadKeyboardLayout avec KLF_ACTIVATE m' ajoute
l' anglais en troisième langue et l' active à la place de la deuxième langue.
Initialement je n' ai que le français et l' arabe.
Au final j' ai opté pour ça:
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Public Sub ActiverAr()
Dim XLoadLangue As Long
Dim XActivLangue As Long
Dim KLF_REORDER As Long
Dim KLF_ACTIVATE As Long
'XLoadLangue = LoadKeyboardLayout("00000401", KLF_REORDER) 'désactiver pour ne pas l' ajouter
XActivLangue = ActivateKeyboardLayout(XLoadLangue, KLF_ACTIVATE)
End Sub
Public Sub ActiverFr()
Dim XLoadLangue As Long
Dim XActivLangue As Long
Dim KLF_REORDER As Long
Dim KLF_ACTIVATE As Long
'XLoadLangue = LoadKeyboardLayout("0000040c", KLF_REORDER) 'désactiver pour ne pas l' ajouter
XActivLangue = ActivateKeyboardLayout(XLoadLangue, KLF_ACTIVATE)
End Sub
exemple d' appel:
Private Sub Text1_GotFocus()
Text1.Alignment = 1 'RightToLeft
ActiverAr
End Sub