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 : sendkeys [ Archives Visual Basic / Divers ] (dOsSpr0uTosS)

mardi 20 septembre 2005 à 22:05:47 | sendkeys

dOsSpr0uTosS

salut à tous,
j'ai cherché dans le forum sendkeys j'ai trouvé beaucoup de réponses mais je n'arrive pas a trouver la synthaxe exact...
je ne connais pas du tout cette fonction et je ne sais donc pas si il y a quelque chose a declaré avant de l'utilisé
j'ai essayé :
Sub essai()
        Dim v1 As SendKeys
      v1=("%{a}", True)
    End Sub
et
sub essai()
sendkeys("%{a}", True)
'fon bon plein de truc dans le genre mais bon j'ai pas toruvé donc je voudrais svp la synthaxe exact  avec toute les choses a declaré etc etc
merci d'avance
PS: j'utilise visual basic 2005 express edition beta


mardi 20 septembre 2005 à 22:17:43 | Re : sendkeys

jeanmarc

Bonsoir,

Ci-dessous la doc + un exemple concet en vbs
 
Voir aussi Windows Script Host  

SendKeys, méthode

Envoie une ou plusieurs séquences de frappes à la fenêtre active (comme si elles avaient été tapées au clavier).

object.SendKeys(string)

Arguments

object
Objet WshShell.
string
Valeur de chaîne indiquant la ou les séquences de frappes que vous voulez envoyer.

Notes

Utilisez la méthode SendKeys pour envoyer des séquences de frappes aux applications qui ne disposent pas d'une interface automatique. La plupart des caractères du clavier sont représentés par une seule séquence de frappe. Certains de ces caractères sont constitués d'une combinaison de frappes (CTRL+MAJ+ORIGINE, par exemple). Pour envoyer un seul caractère de clavier, envoyez le caractère lui-même comme argument chaîne. Par exemple, pour envoyer la lettre x, envoyez l'argument chaîne "x".

Remarque   Pour envoyer un espace, envoyez la chaîne " ".

Vous pouvez utiliser SendKeys pour envoyer plusieurs frappes en même temps. Pour cela, créez un argument de chaîne composé qui représente une séquence de frappes, en ajoutant chaque frappe de la séquence à celle qui la précède. Par exemple, pour envoyer les frappes a, b et c, envoyez l'argument chaîne "abc". La méthode SendKeys se sert de certains caractères comme modificateurs de caractères (au lieu d'utiliser leurs valeurs-police). Ce jeu de caractères spéciaux comprend des parenthèses, des crochets, des accolades et le :

  • signe plus       "+" 
  • signe caret             "^"
  • signe pourcentage "%"
  • signe tilde       "~"

Envoyez ces caractères en les mettant entre accolades "{}". Par exemple, pour envoyer le signe plus, envoyez l'argument chaîne "{+}". Les crochets "[ ]" n'ont pas de signification particulière lorsqu'ils sont utilisés avec SendKeys, mais vous devez les mettre entre accolades pour les applications qui leur donnent un sens particulier (pour DDE, par exemple).

  • Pour envoyer des crochets, envoyez l'argument chaîne "{[}" pour le crochet gauche et l'argument "{]}" pour le droit.
  • Pour envoyer des accolades, envoyez l'argument "{{}" pour l'accolade gauche et "{}}" pour la droite.

Certaines séquences de frappe ne génèrent pas de caractères (comme ENTRÉE et TAB). Certaines séquences de frappes représentent des actions (comme RET. ARR. et PAUSE). Pour envoyer des séquences de frappes de ce genre, envoyez les arguments indiqués dans le tableau suivant :

Touche Argument
RET. ARR. {BACKSPACE}, {BS}, or {BKSP}
PAUSE {BREAK}
VERROUILLAGE MAJUSCULE {CAPSLOCK}
SUPPR {DELETE} or {DEL}
FLÈCHE VERS LE BAS {DOWN}
FIN {END}
ENTRÉE {ENTER} or ~
ÉCHAP {ESC}
AIDE {HELP}
ORIGINE {HOME}
INSÈR {INSERT} ou {INS}
FLÈCHE GAUCHE {LEFT}
VERR NUM {NUMLOCK}
PAGE BAS {PGDN}
PAGE HAUT {PGUP}
IMPR ÉCRAN {PRTSC}
FLÈCHE DROITE {RIGHT}
ARRÊT DÉFIL {SCROLLLOCK}
TAB {TAB}
FLÈCHE HAUT {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}

Pour envoyer des caractères du clavier comprenant une séquence de frappes classique combinée avec MAJ, CTRL ou ALT, créez un argument de chaîne composé représentant la combinaison de frappes. Pour cela, faites précéder la séquence classique par un ou plusieurs des caractères spéciaux suivants :

Touche Caractère spécial
MAJ +
CTRL ^
ALT %
Remarque : Lorsqu'ils sont utilisés de cette façon, ces caractères spéciaux ne sont pas compris entre accolades.

Pour spécifier qu'une combinaison de MAJ, CTRL et ALT doit être enfoncée pendant que l'on appuie sur d'autres touches, créez un argument chaîne composé avec les frappes modifiées entre parenthèses. Par exemple, pour envoyer la combinaison de frappes indiquant que la touche MAJ est enfoncée tout en appuyant sur :

  • e et c, envoyez l'argument chaîne "+(ec)".
  • e, suivi d'un seul c (sans MAJ), envoyez l'argument chaîne "+ec".

Vous pouvez utiliser la méthode SendKeys pour envoyer un schéma de frappes comprenant une seule frappe répétée plusieurs fois sur une ligne. Pour cela, créez un argument chaîne composé qui spécifie la frappe àrépéter, suivi du nombre de fois que vous voulez la répéter. Pour cela, utilisez un argument chaîne composé de la forme {frappe nombre}. Par exemple, pour envoyer la lettre "x" dix fois, envoyez l'argument chaîne "{x 10}". Assurez-vous d'inclure un espace entre la frappe et le nombre.

Remarque : Le seul modèle de frappe qu'il est possible d'envoyer est le type comprenant une frappe unique répétée plusieurs fois. Par exemple, vous pouvez envoyer "x" dix fois, mais vous ne pouvez pas en faire autant pour "Ctrl+x".
Remarque : Vous ne pouvez pas envoyer la clé IMPR ÉCRAN {PRTSC} vers une application.

Exemple

L'exemple suivant montre l'utilisation d'un fichier .wsf unique pour deux tâches dans plusieurs langages de script (VBScript et JScript). Chaque tâche exécute la calculatrice de Windows et envoie une séquence de frappes pour exécuter un calcul simple.

<package>    <job id="vbs">       <script language="VBScript">          set WshShell = WScript.CreateObject("WScript.Shell")          WshShell.Run "calc"          WScript.Sleep 100          WshShell.AppActivate "Calculatrice"          WScript.Sleep 100          WshShell.SendKeys "1{+}"          WScript.Sleep 500          WshShell.SendKeys "2"          WScript.Sleep 500          WshShell.SendKeys "~"          WScript.Sleep 500          WshShell.SendKeys "*3"          WScript.Sleep 500          WshShell.SendKeys "~"          WScript.Sleep 2500


Script pour éditer certains fichiers.
Dim Fso, path, fichier, fichiers, WshShell
path = "E:\Affaires\EUROFACTOR - AP02N008\4.3 Formulaires\Formulaires spécifiques\"
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set dossier = fso.GetFolder(path)
Set fichiers = Dossier.Files
For Each fichier in fichiers
'MsgBox "shortPath=" & fichier.ShortPath & vbCrLf & "Path=" & fichier.Path
'MsgBox "shortName=" & fichier.ShortName & vbCrLf & "Name=" & fichier.Name
   If Left(fichier.name,19) = "Main courante Ifdex" Then
      WshShell.Run fichier.ShortPath
      WScript.Sleep(3000)
      WshShell.SendKeys "^p"
      WScript.Sleep(2000)
      WshShell.SendKeys "{ENTER}"  'imprimer => ok
      WScript.Sleep(3000)
      WshShell.SendKeys "%(fq)"   'fermeture du document
      WScript.Sleep(3000)
   End If
If Left(fichier.name,6) = "SLIFAC" Then
   WshShell.Run fichier.ShortPath
   WScript.Sleep(2000)
    If Left(fichier.name,22) = "SLIFAC 32 - 61 Espagne" Then
        WshShell.SendKeys "^p"
        WScript.Sleep(2000)
        WshShell.SendKeys "{ENTER}" 'imprimer => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "{ENTER}" 'poursuivre l'impression => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "%(fq)"   'fermeture du document
        WScript.Sleep(3000)
     ElseIf Left(fichier.name,23) = "SLIFAC 32 - 63 Belgique" Then
        WshShell.SendKeys "^p"
        WScript.Sleep(2000)
        WshShell.SendKeys "{ENTER}"  'imprimer => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "{ENTER}" 'poursuivre l'impression => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "%(fq)"   'fermeture du document
        WScript.Sleep(3000)
     ElseIf Left(fichier.name,23) = "SLIFAC 32 - 64 Allemagn" Then
        WshShell.SendKeys "^p"
        WScript.Sleep(2000)
        WshShell.SendKeys "{ENTER}"  'imprimer => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "{ENTER}" 'poursuivre l'impression => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "%(fq)"   'fermeture du document
        WScript.Sleep(3000)
     ElseIf Left(fichier.name,23) = "SLIFAC 32 - 65 Angleter" Then
        WshShell.SendKeys "^p"
        WScript.Sleep(2000)
        WshShell.SendKeys "{ENTER}"  'imprimer => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "{ENTER}" 'poursuivre l'impression => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "%(fq)"   'fermeture du document
        WScript.Sleep(3000)
     ElseIf Left(fichier.name,21) = "SLIFAC 32 - 66 Wisser" Then
        WshShell.SendKeys "^p"
        WScript.Sleep(2000)
        WshShell.SendKeys "{ENTER}"  'imprimer => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "{ENTER}" 'poursuivre l'impression => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "%(fq)"   'fermeture du document
        WScript.Sleep(3000)
     Else 'section pour éditer <54 EUROFACTOR> , <62 PORTUGAL>
          '                    <67 HOLLANDE>   , <68 READING>
        WshShell.SendKeys "^p"
        WScript.Sleep(2000)
        WshShell.SendKeys "{ENTER}"  'imprimer => ok
        WScript.Sleep(3000)
        WshShell.SendKeys "%(fq)"   'fermeture du document
        WScript.Sleep(3000)
     End If
   End If
   If Left(fichier.name,23) = "Traitement soir Jupiter" Then
      WshShell.Run fichier.ShortPath
      WScript.Sleep(3000)
      WshShell.SendKeys "^p"
      WScript.Sleep(2000)
      WshShell.SendKeys "{ENTER}"  'imprimer => ok
      WScript.Sleep(3000)
      WshShell.SendKeys "{ENTER}" 'poursuivre l'impression => ok
      WScript.Sleep(3000)
      WshShell.SendKeys "%(fq)"   'fermeture du document
      WScript.Sleep(3000)
   End If
   If Left(fichier.name,20) = "Traitement soir Vega" Then
      WshShell.Run fichier.ShortPath
      WScript.Sleep(3000)
      WshShell.SendKeys "^p"
      WScript.Sleep(2000)
      WshShell.SendKeys "{ENTER}"  'imprimer => ok
      WScript.Sleep(3000)
      WshShell.SendKeys "{ENTER}" 'poursuivre l'impression => ok
      WScript.Sleep(3000)
      WshShell.SendKeys "%(fq)"   'fermeture du document
      WScript.Sleep(3000)
   End If
   If Left(fichier.name,21) = "Traitement soir Orion" Then
      WshShell.Run fichier.ShortPath
      WScript.Sleep(3000)
      WshShell.SendKeys "^p"
      WScript.Sleep(2000)
      WshShell.SendKeys "{ENTER}"  'imprimer => ok
      WScript.Sleep(3000)
      WshShell.SendKeys "%(fq)"   'fermeture du document
      WScript.Sleep(3000)
   End If
   If Left(fichier.name,22) = "Main courante Eurofact" Then
      WshShell.Run fichier.ShortPath
      WScript.Sleep(3000)
      WshShell.SendKeys "^p"
      WScript.Sleep(2000)
      WshShell.SendKeys "{ENTER}"  'imprimer => ok
      WScript.Sleep(3000)
      WshShell.SendKeys "%(fq)"   'fermeture du document
      WScript.Sleep(3000)
   End If
   If Left(fichier.name,23) = "Main courante Transfact" Then
      WshShell.Run fichier.ShortPath
      WScript.Sleep(3000)
      WshShell.SendKeys "^p"
      WScript.Sleep(2000)
      WshShell.SendKeys "{ENTER}"  'imprimer => ok
      WScript.Sleep(3000)
      WshShell.SendKeys "%(fq)"   'fermeture du document 
      WScript.Sleep(3000)
   End If
   If Left(fichier.name,21) = "Main courante Elysées" Then
      WshShell.Run fichier.ShortPath
      WScript.Sleep(3000)
      WshShell.SendKeys "^p"
      WScript.Sleep(2000)
      WshShell.SendKeys "{ENTER}"  'imprimer => ok
      WScript.Sleep(3000)
      WshShell.SendKeys "%(fq)"   'fermeture du document 
      WScript.Sleep(3000)
   End If
      Dim jour, jour1, jour2
      jour   = DatePart("w", Date)
      jour1 = Array("Samedi","Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi")
      jour2 = jour1(jour)
   If Right(fichier.name,23) = "WEEK-END EUROFACTOR.xls" Then
      If jour2 = "Vendredi" Then
         WshShell.Run fichier.ShortPath
         WScript.Sleep(3000)
         WshShell.SendKeys "^p"
         WScript.Sleep(2000)
         WshShell.SendKeys "{ENTER}"  'imprimer => ok
         WScript.Sleep(3000)
         WshShell.SendKeys "%(fq)"   'fermeture du document
         WScript.Sleep(3000)
      End If
   End If
   If Left(fichier.name,19) = "TRAITEMENTS de NUIT" Then
      If jour2 = "Lundi" Then
         WshShell.Run fichier.ShortPath
         WScript.Sleep(3000)
         WshShell.SendKeys "^p"
         WScript.Sleep(2000)
         WshShell.SendKeys "{ENTER}"  'imprimer => ok
         WScript.Sleep(3000)
         WshShell.SendKeys "%(fq)"   'fermeture du document
      End If
   End If
Next

mardi 20 septembre 2005 à 22:32:06 | Re : sendkeys

cboulas

Membre Club

Whaaa quel copier coller de la MSDN

je ne savais même pas si le sendkeys éxistait encore sous le DotNet, comme quoi on en apprend tout les jours.

Chris...
Web : Firstruner - eMail : Support&


mardi 20 septembre 2005 à 22:32:16 | Re : sendkeys

dOsSpr0uTosS

merci pour cette réponse très précise mais t'as pas genre un exemple simple
j'ai essayé :

Sub essai()

Dim v1

v1.sendkeys("a")

End Sub
il ne m'affiche pas d'erreur mais lorsque j'execute pour tester il me dis que je n'ai pas assigner de valeur a v1
donc concrètement ca donne quoi pour demander de simuler la touche a?


mercredi 21 septembre 2005 à 02:12:02 | Re : sendkeys

pcpt

Administrateur CodeS-SourceS
Réponse acceptée !
salut,
en VB6 en tout cas, rien à déclarer



Private Sub Command1_Click() 
    Text1.SetFocus 
    Text1.Text = "" 
    SendKeys ("bonjour") 
End Sub 
 


Coloration syntaxique automatique [AFCK]
       
PCPT




Cette discussion est classé dans : essai, sendkeys, synthaxe, declaré, exact


Répondre à ce message

Sujets en rapport avec ce message

Sendkeys [ par Niaphron ] C koi la commande pour la barre d'espacement ?c {SPACE} ???? filtrer une requete à partir de vba [ par agnes ] salut à tousvoici mon pbdepuis a peu pres un mois je complete une base de données qui a tété crée par qq1 d'autresdonc je dois faire un filtre dans un c facile aider moi svp! sendkeys [ par Quiske ] voila j'utilise la fonction sendkeys pour silmuler une pression de touche par exemple pour la touche alt le code sera:Sendkeys "%" mais cela ne me pe c facile aider moi svp!! sendeys [ par Quiske ] voila j'utilise la fonction sendkeys pour silmuler une pression de touche par exemple pour la touche alt le code sera:Sendkeys "%" mais cela ne me pe focus et SendKeys avec NetMeeting URGENT [ par Chris ] bonjour, je precise tout d'abord que VB c'est tout nouveau pour moi, et que ca me parait assez obscure... :-( mon pb: je doit lancer des fonctions spe focus, SendKeys et Netmeeting URGENT [ par Chris ] bonjour, je precise tout d'abord que VB c'est tout nouveau pour moi, et que ca me parait assez obscure... :-( mon pb: je doit lancer des fonctions spe tentative d'essai [ par bpl ] Je cherche à découvrir le vba par le biais d'un programme de gestion de personnelsa titre informel y a t il quelqu'un pour me guider depuis la basemer SendKeys vers une fenetre [ par milobac ] Il y a un moyen d'envoyer un SendKeys directemnt vers une fenetre Windows qui n'est pas activée?Ex: On surfe avec Internet Explorer et pendant ce temp


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.