VB SendKeys - problème

Signaler
Messages postés
16
Date d'inscription
mercredi 25 avril 2018
Statut
Membre
Dernière intervention
18 mai 2018
-
Messages postés
7377
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
12 mai 2021
-
Bonjour à tous!

Je viens de finir une petite application pour aider des utilisateurs mais je rencontre un "bug" aléatoire.
Je m'explique, j'ouvre un fichier PDF et j'affiche son contenu dans un AxAcroPDF, tout se passe super bien.

Je souhaite pouvoir le visualiser, puis copier le texte et le "retravailler" dans un textbox, tout fonctionne très bien. Par contre de façon aléatoire le "ctrl a", pour sélectionner puis copier les data ne se fait pas lorsque je recharge un nouveau PDF.

Je me suis dit cela vient du temps de chargement du fichier, donc j'ai mis une "pause" avec un sleep, petite amélioration mais toujours des bugs lors de l'ouverture d'un nouveau fichier.

Je remarque un point, lorsque j'ouvre mon fichier via 'lopenfiledialog' et si je clique ensuite sur le bureau windows, le sendkeys ne fonctionne plus. Est ce que cela pourrait venir du fait que l'objet "AxAcroPDF" ne soit plus sélectionner? Merci d'avance pour votre support car la je piétine et je n'ai plus d'idée ..... ()

AxAcroPDF1.LoadFile("unloade.pdf")

Me.OpenFileDialog1.Filter = String.Empty
Me.OpenFileDialog1.ShowDialog()
On Error Resume Next
Me.AxAcroPDF1.LoadFile(Me.OpenFileDialog1.FileName)
Threading.Thread.Sleep(2000)
'AxAcroPDF1.Focus()
My.Computer.Keyboard.SendKeys("^a", True)
Threading.Thread.Sleep(1001)
My.Computer.Keyboard.SendKeys("^c", True)

4 réponses

Messages postés
15924
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 mai 2021
544
Bonjour

Sendkeys c'est pas un truc magique, c'est même plutôt l'inverse. C'est de la bidouille.

Si tu veux retravailler le texte, charge le dans ton textbox avec les outils dont je t'ai déjà parlé.
Si tu veux afficher le pdf original, fais le avec ta lib, mais ne t'en sers pas pour les données.
A moins (je n'ai pas lu sa doc), qu'elle ait des points d'entrée et de sortie (un API quoi)
Messages postés
16
Date d'inscription
mercredi 25 avril 2018
Statut
Membre
Dernière intervention
18 mai 2018

Bonjour Whismeril,

Je me doute que sendkeys c'est de la bidouille, mais pour le moment je progresse petit à petit.
Je fais les formations dont on m'a parlé, j'arrive à créer des fichiers, récupérer des valeurs, extraire lire. Par contre pour ta proposition, j'ai regardé, mais je n'ai pas encore le niveau je dois progresser.

Ce qui m'étonne, c'est que l'object AxAcroPDF1, ne dispose pas d'une fonction, select all et "copie", ou alors send text, to textbox (cela résoudrait mon problème d'instabilité)

Merci encore Whismeril
Messages postés
16
Date d'inscription
mercredi 25 avril 2018
Statut
Membre
Dernière intervention
18 mai 2018

Je vais rajouter un "select", avant de faire ma séléction, peut être cela va t il rendre la copie plus stable

AxAcroPDF1.Select()
My.Computer.Keyboard.SendKeys("^a", True)
Messages postés
7377
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
12 mai 2021
122
Bonjour,

Une autre manière de faire sans SendKeys avec un Timer et le Clipboard (Presse papier)

Voir ceci

https://codes-sources.commentcamarche.net/source/view/50620/1203286#top

Exemple avec du texte et une TextBox et avec une image et une PictureBox:

  Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        If Not Clipboard.GetImage Is Nothing Then
            PictureBox1.Image = Clipboard.GetImage
        End If
        If Clipboard.ContainsText = True Then
            TextBox1.Text = Clipboard.GetText
           End If
    End Sub


je te laisse le soin de faire démarrer le Timer et de l'arréter

Voilà c'est tout simple, il faut quand même sélectionner manuellement!