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 !

COLLER UNE DONNÉE DANS N'IMPORTE QUEL APPLICATION


Information sur la source

Catégorie :API Classé sous : coller, paste, sendmessage Niveau : Débutant Date de création : 10/11/2005 Vu / téléchargé: 6 547 / 688

Note :
9,33 / 10 - par 6 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
en Anglais, ca donnerait "SystemWide Paste"
mais bon...

C'est un mini-projet que je fais pour une personne du forum, et qui ne fait que reprendre du code d'une de mes autres mini-sources...

une pseudo donnée est generée aléatoirement, à un certain interval de temps.
ce simule l'évolution d'une donnée en temps reel.

en pressant Alt + V , vous collez cette donnée dans l'application de votre choix.

 

Source

  • Option Explicit
  • Private Declare Function AttachThreadInput Lib "user32.dll" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
  • Private Declare Function GetFocus Lib "user32.dll" () As Long
  • Private Declare Function GetForegroundWindow Lib "user32" () As Long
  • Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
  • Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
  • Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal ID As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
  • Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
  • Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal ID As Long) As Long
  • Private Declare Function WaitMessage Lib "user32" () As Long
  • Private Const MOD_ALT As Long = &H1
  • Private Const PM_REMOVE = &H1
  • Private Const WM_HOTKEY = &H312
  • Private Const WM_PASTE As Long = &H302
  • Private Type POINTAPI
  • x As Long
  • y As Long
  • End Type
  • Private Type Msg
  • hWnd As Long
  • Message As Long
  • wParam As Long
  • lParam As Long
  • time As Long
  • pt As POINTAPI
  • End Type
  • Private mQuit As Boolean
  • Private mhWnd As Long
  • Private Sub ProcessMessages()
  • Dim tMessage As Msg
  • Dim hWnd_Target As Long
  • mQuit = False
  • Do
  • DoEvents
  • WaitMessage
  • '# Récupération du message WM_HOTKEY
  • If PeekMessage(tMessage, mhWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
  • '# L'utilisateur a pressé Alt + V : on place notre donnée dans le presse-papier
  • Clipboard.Clear
  • Clipboard.SetText CcTxtRealTime.Text, vbCFText
  • '# On récupère le handle de la fenetre qui as le focus
  • hWnd_Target = GetForegroundWindow
  • '# On récupère le handle du controle qui as le focus (GetFocus ne fonctionne que pour le Thread en cours)
  • AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target, 0), True
  • SendMessage GetFocus, WM_PASTE, 0, ByVal 0&
  • AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target, 0), False
  • End If
  • Loop Until mQuit
  • End Sub
  • Private Sub CcTimMain_Timer()
  • If mQuit Then
  • '# On demande a quitter, on coupe le Timer
  • CcTimMain.Enabled = False
  • Else
  • '# Pseudo Génération de notre donnée en temps reel
  • Randomize Timer
  • CcTxtRealTime.Text = (120 + Rnd - Rnd)
  • End If
  • End Sub
  • Private Sub Form_Load()
  • mhWnd = Me.hWnd
  • '# Le raccourci sera Alt + V
  • RegisterHotKey mhWnd, 1, MOD_ALT, vbKeyV
  • '# Affichage de la forme
  • Me.Show
  • '# On regarde les messages
  • ProcessMessages
  • End Sub
  • Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  • '# On a demandé a quitter
  • mQuit = True
  • '# On désenregistre le raccourcis
  • UnregisterHotKey hWnd, 1
  • End Sub
Option Explicit
  
Private Declare Function AttachThreadInput Lib "user32.dll" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
Private Declare Function GetFocus Lib "user32.dll" () As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal ID As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal ID As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long

Private Const MOD_ALT As Long = &H1
  
Private Const PM_REMOVE = &H1
Private Const WM_HOTKEY = &H312
Private Const WM_PASTE As Long = &H302

Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Type Msg
    hWnd As Long
    Message As Long
    wParam As Long
    lParam As Long
    time As Long
    pt As POINTAPI
End Type
  
Private mQuit As Boolean
Private mhWnd As Long

Private Sub ProcessMessages()
Dim tMessage As Msg
Dim hWnd_Target As Long
    mQuit = False
    Do
        DoEvents
        WaitMessage
        '# Récupération du message WM_HOTKEY
        If PeekMessage(tMessage, mhWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
            '# L'utilisateur a pressé Alt + V : on place notre donnée dans le presse-papier
            Clipboard.Clear
            Clipboard.SetText CcTxtRealTime.Text, vbCFText
            '# On récupère le handle de la fenetre qui as le focus
            hWnd_Target = GetForegroundWindow
            '# On récupère le handle du controle qui as le focus (GetFocus ne fonctionne que pour le Thread en cours)
            AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target, 0), True
            SendMessage GetFocus, WM_PASTE, 0, ByVal 0&
            AttachThreadInput App.ThreadID, GetWindowThreadProcessId(hWnd_Target, 0), False
        End If
    Loop Until mQuit
End Sub
   
Private Sub CcTimMain_Timer()
    If mQuit Then
        '# On demande a quitter, on coupe le Timer
        CcTimMain.Enabled = False
    Else
        '# Pseudo Génération de notre donnée en temps reel
        Randomize Timer
        CcTxtRealTime.Text = (120 + Rnd - Rnd)
    End If
End Sub

Private Sub Form_Load()
    mhWnd = Me.hWnd
    '# Le raccourci sera Alt + V
    RegisterHotKey mhWnd, 1, MOD_ALT, vbKeyV
    '# Affichage de la forme
    Me.Show
    '# On regarde les messages
    ProcessMessages
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    '# On a demandé a quitter
    mQuit = True
    '# On désenregistre le raccourcis
    UnregisterHotKey hWnd, 1
End Sub

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Booster le 30/06/2006 16:54:20

lu renfield,
Ta source est parfaite mais j'ai un problème et j'ai fait à peu prés tout les sites pour trouver mais personne n'a su m'aider.
Le probleme est simple, il me faut coller du texte dans une sous fenetre de dreamweaver car avec ta technique le focus est redonné a dreamweaver et non à la sous fenetre, j'ai essayer de recupérer le nom de la sous fenetre mais impossible de trouver comment je pourais faire ca ?
Je te remercie d'avance et merci pour ta source qui ma bien aidé ;)

signaler à un administrateur
Commentaire de Renfield le 30/06/2006 17:17:57 administrateur CS

tu peux utiliser SPY++

tu aura ainsi de quoi trouver la sous-fenetre en utilisant FindWindow(Ex)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Coller sous Excel VB.net [ par morcelet ] Bonjour, Jaimerais savoir comment on fait pour coller une Cellule qu'on a copiée juste avant.Je fais exlapp.Cells(4, 1).copy()exlapp.Cells(1, 1).Paste coller des graph excel dans word [ par bloodbiscuit ] bonjour tlm !voili voilo ! j'fé un prog ki prend des graph excel et qui les copie dans wordca copie bien ca colle un peu moin bienen effet, ilme colle Désactivation de Copier/Coller [ par fuelH ] Bonjour.Dans un prog sous ACCESS, je souhaite désactiver le copier/coller (pour que le code puisse suivre). Y a t il un moyen de faire cela? Explications sur SendMessage [ par bignonfrederic ] J'ai beau chercher mais je trouve nul part l'explication pour l'utilisation de sendmessage, c a d que je cherche a comprendre comment on trouve tous l Parametres de SendMessage [ par bignonfrederic ] Je souhaiterai passer des commandes vers une autre application ( ex Winamp, MediaPlayer,Etc ...) avec la fonction SendMessage, je sais que cela foncti selectionner une quantité de cellule la copier la coller :( [ par gnosis35 ] 1quand on est sous excel que l'on clique sur une cellule et que tout en maintenant le clique enfoncé en deplace la souris vers une autre cellule ça c extraction des textes d'un fichier TXT puis les concatener puis les coller dans feuille XLS [ par choumi92 ] Bonjour j'ai cherché partour ! Existe-t-il un code source VB pour : 1) ouvrir un fichier "a.txt"2) resultat = ' ' 3) Faire tant que colonne A = n Copier-coller d'Excel vers Word via 1 macro Excel [ par Adoc5 ] Bonjour tout le monde,j'ai créé une macro Excel qui fait une copie d'un graphe pris dans Excel et qui va le coller dans un doc Word. Le problème est q vb [ par sauveur942002 ] Je cherche kelkun ki pourrai m'aider à modifier une macro en vb afin kelle puisse me créer un étiquette sous word en gros faire un copier coller d inf copier coller de fichier avec ecrasement des anciens [ par killeroffish ] je voudrais faire un copier coller de fichier et dossier. pour faire une sauvegarde toutes les heures. Comment faire pour ecrase les ancien fichier?C'


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,671 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é.