Sendkeys, facteur lunatique

Résolu
oulipan Messages postés 46 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 19 février 2024 - 20 août 2012 à 15:09
oulipan Messages postés 46 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 19 février 2024 - 20 août 2012 à 17:01
Bonjour, j'ai un problème sur VB6 avec sendkeys:
Si quelqu'un pouvait m'éclairer sur sendkeys, qui, dans mon petit outil suivant,
fait son travail comme ça lui chante!
Merci d'avance.

'*************************************************************************************
'* BUT: Ouvrir un fichier-txt, qui servira de fichier de données,
'* et lui transmettre les éléments de texte sélectionnés dans une richtextbox,
'* encadrés de leur position et de leur longueur.
'*************************************************************************************
' ...mais "sendkeys" est un facteur un peu lunatique qui ne transmet pas toujours le courrier!

'(contrôles: la form; la richtextbox ; un bouton de commande[Cmdchargrtf] qui lance une [CommonDialog box])
'(plus un text1 et un label1 -pas nécessaires)

'avec XP, fonctionne presqu'à tous les coups,
'mais avec W7, impossibilité "permission refusée" ,sauf si je lance l'exe, auquel cas, fonctionnement aléatoire

Dim notepad
Dim mess
Dim fois
Private Sub Cmdchargrtf_Click()
' ######### Choix du .rtf à traiter (CHARGER RTF) #########
Cmdchargrtf.visible = false
CommonDialog1.Filter = "Fichiers au format RTF (*.rtf)|*.rtf|"
CommonDialog1.FilterIndex = 1

CommonDialog1.ShowOpen
RichTextBox1.LoadFile CommonDialog1.FileName, rtfRTF
RichTextBox1.Locked = True 'rendre impossible une modif du doc.rtf
End Sub

Private Sub Form_Load()
Form1.Height 9000: Form1.Width 11000 ' pour laisser la place, à côté, au "notepad.txt" qui s'ouvrira
fois = 0
notepad = Shell("notepad.exe", 1)
End Sub

Private Sub RichTextBox1_Click()
posd = RichTextBox1.SelStart: 'position départ
lgs = RichTextBox1.SelLength: 'longueur sélection
repe = Mid(RichTextBox1.Text, posd + 1, lgs)
mess = Trim(Str(posd)) & "," & Chr(34) & repe & Chr(34) & "," & Trim(Str(lgs)) & ",": 'message à écrire sur notepad
AppActivate notepad, False
SendKeys Str(fois) & " - " & mess & "{ENTER}", True
'For i 0 To 10000: i i + 1 - 1: Next i '(essayé sur W7 ...J'ai l'impression que sendkeys fait un peu mieux son travail si je le retiens à bavarder)
Label1 = Str(fois) 'pour compter les saisies qui passent ou non
fois = fois + 1
Form1.SetFocus
Text1.SetFocus 'plutôt 2 fois qu'une!!
End Sub


(Bien entendu, je me rabats sur une ouverture manuelle d'un fichier.txt, une mise de la sélection dans le presse-papiers, puis un clic sur le fichier.txt ouvert à côté et un [control-V], mais "sendkeys" me paraissait plus facile.)
Encore merci d'éclairer ma lanterne.


oulipan

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 août 2012 à 15:14
Bonjour,
Quel bidouillage ! On ne "pilote" pas notepad par des sendkeys.
Un dichier texte n'est qu'un fichier texte. On utilise l'instruction Open pour y lire (For Input) et y écrire (For Output).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 août 2012 à 16:30
Rien ne t'empêche alors de l'afficher parallèlement (mais uniquement accessoirement) dans une textbox, si tu y tiens. Mais ne le modifie pas autrement que par l'instruction Open !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
oulipan Messages postés 46 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 19 février 2024
20 août 2012 à 16:09
Bonjour, Ucfoutu,
D'abord merci pour ta réponse ultra-rapide.
J'ai effectivement utilisé auparavant "open, etc...", mais je préfèrerais avoir mon fichier.txt visible à côté pour y ajouter diverses infos selon les données pointées.
Comme fichier de données, (à mon niveau), le fichier-txt fonctionne bien.


oulipan
0
oulipan Messages postés 46 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 19 février 2024
20 août 2012 à 17:01
Donc, tu me conseilles de continuer à faire comme je faisais avant, et de laisser tomber sendkeys.
Et encore merci pour ta réponse immédiate.
A bientôt.


oulipan
0
Rejoignez-nous