Coller le presse papierdans l'application active.

Résolu
KcHeY Messages postés 261 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 22 septembre 2012 - 14 oct. 2011 à 18:53
 Utilisateur anonyme - 16 oct. 2011 à 09:53
Bonsoir,

Chaque jours j'écris les mêmes message et pour des raisons de pratique j'ai décidé de me créer un petit programme d'insertion de texte rapide, un peu comme clavier+.
J'ai donc créé 12 textbox dans lesquelles j'entre le texte voulu, et j'ai créer des raccourci allant de F1 à F12 qui copie dans le presse papier la contenance du textbox (et ceux même si mon prog n'as pas le focus)
Jusqu'ici tout va bien.
Mon problème vient donc au moment de coller le texte dans la fenetre active.
J'ai parcouru X forum, ou j'y est vu quelque solutions que je n'ai pas reussi à adapter.
Voici les méthodes que j'ai testé :

SendKeys.Send("^v")'pour simuler un copier coller mais ne fonctionne pas

SendKeys.Send(Clipboard.GetText)

Si je fais
Msgbox(Clipboard.GetText)

Je vois bien ce que je viens de sauvegarder dans le presse papier
Quelqu'un pourrai t-il m'aider à simuler le coller ou à trouver une autre méthode ?
Voici mon code complet : (vb.net)
Public Class Form1
    'enumération définissant l'état des touches CTRL, SHIFT, ALT et WIN

    Enum FsModifiers
        None = 0 'aucune touche
        Alt = 1
        Control = 2
        Shift = 4
        Windows = 8
        Alt_Ctrl = 3
        Alt_Shift = 5
        Alt_Windows = 9
        Ctrl_Shift = 6
        Ctrl_Windows = 10
        Shift_Windows = 12
        No_Repeat = 16384 'indisponible sous Vista/XP/2000
    End Enum
    'Déclaration des API
    'handle = handle de la fenêtre qui gérera le raccourci
    'id = identifiant qu'on se choisit pour notre hotkey
    'fsModifier : un type FsModifiers (enum)
    'vk : le code clé correspondant à la touche
    Declare Auto Function RegisterHotKey Lib "user32.dll" (ByVal handle As IntPtr, ByVal id As Integer, ByVal fsModifier As FsModifiers, ByVal vk As Keys) As Boolean

    'handle : handle de l'application qui gère le raccourci
    'id : l'identifiant du raccourci
    Declare Auto Function UnregisterHotKey Lib "user32.dll" (ByVal handle As IntPtr, ByVal id As Integer) As Integer

    'on définit deux raccourcis :
    Private Const HOTKEY_ID1 As Integer = 571584 'numéros aléatoires
    Private Const HOTKEY_ID2 As Integer = 752452
    Private Const HOTKEY_ID3 As Integer = 644587
    Private Const HOTKEY_ID4 As Integer = 644588
    Private Const HOTKEY_ID5 As Integer = 644589
    Private Const HOTKEY_ID6 As Integer = 644510
    Private Const HOTKEY_ID7 As Integer = 644511
    Private Const HOTKEY_ID8 As Integer = 644512
    Private Const HOTKEY_ID9 As Integer = 644513
    Private Const HOTKEY_ID10 As Integer = 644514
    Private Const HOTKEY_ID11 As Integer = 644515
    Private Const HOTKEY_ID12 As Integer = 644516

    'la constante WM_HOTKEY fournir par Microsoft
    Private Const WM_HOTKEY As Integer = 786

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'dès le lancement on définit nos deux hotkeys : ALT+F1 et Alt+F2
        RegisterHotKey(Me.Handle, HOTKEY_ID1, FsModifiers.Alt, Keys.F1)
        RegisterHotKey(Me.Handle, HOTKEY_ID2, FsModifiers.Alt, Keys.F2)
        RegisterHotKey(Me.Handle, HOTKEY_ID3, FsModifiers.Alt, Keys.F3)
        RegisterHotKey(Me.Handle, HOTKEY_ID4, FsModifiers.Alt, Keys.F4)
        RegisterHotKey(Me.Handle, HOTKEY_ID5, FsModifiers.Alt, Keys.F5)
        RegisterHotKey(Me.Handle, HOTKEY_ID6, FsModifiers.Alt, Keys.F6)
        RegisterHotKey(Me.Handle, HOTKEY_ID7, FsModifiers.Alt, Keys.F7)
        RegisterHotKey(Me.Handle, HOTKEY_ID8, FsModifiers.Alt, Keys.F8)
        RegisterHotKey(Me.Handle, HOTKEY_ID9, FsModifiers.Alt, Keys.F9)
        RegisterHotKey(Me.Handle, HOTKEY_ID10, FsModifiers.Alt, Keys.F10)
        RegisterHotKey(Me.Handle, HOTKEY_ID11, FsModifiers.Alt, Keys.F11)
        RegisterHotKey(Me.Handle, HOTKEY_ID12, FsModifiers.Alt, Keys.F12)
    End Sub

    'WndProc nous permettra de traiter les messages windows

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

        Select Case m.Msg 'on va tester le message reçu à chaque appel de cette fonction
            Case WM_HOTKEY 'si il s'agit du message WM_HOTKEY (si l'utilisateur a appuyé sur Alt+F1)
                If m.WParam = HOTKEY_ID1 Then  'on cherche quelle hotkey a déclenché l'évènement
                    Clipboard.SetDataObject(TextBox1.Text, True)
                    MsgBox(Clipboard.GetText)
                    SendKeys.Send(Clipboard.GetText)
                    Clipboard.GetText()
                ElseIf m.WParam = HOTKEY_ID2 Then
                    MsgBox("F2")
                ElseIf m.WParam = HOTKEY_ID3 Then
                    MsgBox("F3")
                ElseIf m.WParam = HOTKEY_ID4 Then
                    MsgBox("F4")
                ElseIf m.WParam = HOTKEY_ID5 Then
                    MsgBox("F5")
                ElseIf m.WParam = HOTKEY_ID6 Then
                    MsgBox("F6")
                ElseIf m.WParam = HOTKEY_ID7 Then
                    MsgBox("F7")
                ElseIf m.WParam = HOTKEY_ID8 Then
                    MsgBox("F8")
                ElseIf m.WParam = HOTKEY_ID9 Then
                    MsgBox("F9")
                ElseIf m.WParam = HOTKEY_ID10 Then
                    MsgBox("F10")
                ElseIf m.WParam = HOTKEY_ID11 Then
                    MsgBox("F11")
                ElseIf m.WParam = HOTKEY_ID12 Then
                    MsgBox("F12")
                End If
        End Select
        MyBase.WndProc(m)
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        UnregisterHotKey(Me.Handle, HOTKEY_ID1)
        UnregisterHotKey(Me.Handle, HOTKEY_ID2)
    End Sub


End Class


Merci d'avance.

26 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
15 oct. 2011 à 20:46
Bonne soirée à vous deux également.
Mais un dernier mot : j'aurais personnellement fait des recherches en vue d'utiliser un drag and drop (forcément volontaire) entre deux applis.
Bon week-end à tous.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
KcHeY Messages postés 261 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 22 septembre 2012
15 oct. 2011 à 20:50
Justement j'avais penser à faire le même programme qui serai.
Une form qui contient deux groupbox, un a gauche avec mon appli et à droite un webbrowser.
Ce qui m'aurai facilité la communication entre les deux.. enfin.. je pense.
Mais est-ce sécurisé de s'identifier sur certain site depuis un webbrowser comme ça?
0
Utilisateur anonyme
15 oct. 2011 à 20:54
en vue d'utiliser un drag and drop (forcément volontaire) entre deux applis

L'application réceptrice ne doit-elle pas gérer l'événement de fin du déplacement ?
0
Utilisateur anonyme
15 oct. 2011 à 22:41
ucfoutu,

Je ne suis pas parvenu à réaliser un drag drop d'un textbox vers firefox (par exemple).
J'en déduis que l'application réceptrice doit gérer elle même cet événement.
Mais je me trompe peut-être.

A bientôt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 oct. 2011 à 07:48
Bonjour, banana32,

Je ne possède pas, comme tu le sais, VB.Net pour tenter quoi que ce soit dans ce sens.
Je ne suis pas certain de ce que l'appli réceptrice doive forcément et totalement "gérer". Je crois qu'il suffit qu'elle accepte le "déposer" et qu'il est possible de le lui dire en utilisant le hwnd de sa fenêtre et la fonction DragAcceptFiles de la librairie shell32 de l'Api de Windows.
Mais je n'en sais à vrai_ dire rien.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Utilisateur anonyme
16 oct. 2011 à 09:53
Bonjour ucfoutu,

Il fait beau, profites-en pour aller à la pêche
Merci et bon dimanche
0
Rejoignez-nous