KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018220 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
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 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?
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018220 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