Accueil > > > COLLER UNE DONNÉE DANS N'IMPORTE QUEL APPLICATION
COLLER UNE DONNÉE DANS N'IMPORTE QUEL APPLICATION
Information sur la source
Description
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
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|