diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008
-
14 sept. 2006 à 20:33
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 2011
-
27 nov. 2006 à 15:49
bonsoir,
je ne savais pas trop ou mettre ca ... en gros j'ai vu qu'on pouvais remplacer le contenu du clipboard par une picture via Clipboard.SetData
cependant j'aimerais faire un truc un peu plus "speciale" en gros j'aimerais faire que quand l'utilisateur de mon logiciel appuie sur la touche printscreen alors que mon prog est visible a l'ecran cela remplace le contenu du printscreen par une image contenue dans un picturebox qui a sur ma form donc en gros impossible de screener mon logiciel lorsqu'il est visible ^^
donc voila j'aimerais savoir comment intercepter la touche print screen lors d'un screen de l'ecran quand mon prog est visible et que sa remplace l'image contenue dans le clipboard donc le contenu du screen sois remplacer par l'image contenue dans une picturebox ^^
voila voila ses surement tout con mais bon je trouve pas :p
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 14 sept. 2006 à 23:11
Extrait de l'ApiGuide et modifié pour ton besoin
A toi d'adapter maintenant.
'A mettre dans un module module -------------------------------------------
Public Const WH_KEYBOARD = 2
Public Const VK_PRINTSCREEN = &H2C
Declare Function CallNextHookEx Lib "user32" ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" ByVal nVirtKey As Long) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" ByVal hHook As Long) As Long
Public hHook As Long
Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'if idHook is less than zero, no further processing is required
If idHook < 0 Then
'call the next hook
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
Else
'check if PRINTSCREEN is pressed
If (GetKeyState(VK_PRINTSCREEN) And &HF0000000) Then
Clipboard.SetData LoadPicture ("Chemin\NomDeTonFichier")
End If
'call the next hook
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End If
End Function
'---------------------------------------------------------------------------
' A mettre dans une form ----------------------------------------------------
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net
'set a keyboard hook
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
End Sub
Private Sub Form_Unload(Cancel As Integer)
'remove the windows-hook
UnhookWindowsHookEx hHook
End Sub
'---------------------------------------------------------------------------
<small>Coloration syntaxique
automatique</small>
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201823 14 sept. 2006 à 23:20
Bonsoir tout le monde,
Avec des parenthèses pour recevoir les paramètres des fonctions sa marche mieux je crois :)
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 14 sept. 2006 à 21:16
Regarde les sources permettant d'intercepter cette fameuse touche (toutes les sources de capture d'écran en fait), et quand tu l'intercepte, il te suffit de redéfinir le contenu du presse-papier avec l'image que tu veux.
Vous n’avez pas trouvé la réponse que vous recherchez ?
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 14 sept. 2006 à 22:42
j'ai trouver dans l'aide d'api ca :
' Exemple de Philippe Plançon : plancon@onetelnet.fr
' Coordonnées d'un point de l'écran
Private Type
POINTAPI
x As Long
y
As Long
End Type
' Retourne la position de la souris sur l'écran
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI)
As Long
' Teste si une touche est enfoncée
Private Declare Function
GetKeyStateLib "user32" (ByVal nVirtKey
As Long) As Integer
' Déclaration des touches
Const VK_LBUTTON = 1
' Left mouse button
Private Sub
Timer1_Timer()
' Déplacez-vous où vous voulez et appuyez sur le bouton gauche
' de la souris et hop on sait tout quand on veut
'---Déclaration des variables---
Dim Coord As
POINTAPI
'---Affiche les coordonnées du curseur de la souris---
If
GetKeyState(VK_LBUTTON) >= 0 Then
Me.Caption = "Bouton gauche de la souris relaché"
Else
GetCursorPos Coord Me.Caption "Bouton gauche de la souris enfoncé : x " & _
Coord.x & " , y = " & Coord.y
End If
End Sub
-----------------------------------------------------------
j'ai tenter de modifier de cette maniere :
-----------------------------------------------------------
' Teste si une touche est enfoncée
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
' Déclaration des touches
Const VK_SNAPSHOT = 1
Private Sub Timer1_Timer()
If GetKeyState(VK_SNAPSHOT) >= 0 Then
Me.Caption = "Bouton screen relaché"
Else
Me.Caption = "Bouton screen relacher"
End If
End Sub
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 14 sept. 2006 à 23:15
il me met les lignes suivantes en rouge :
Declare Function CallNextHookEx Lib "user32" ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" ByVal nVirtKey As Long) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" ByVal hHook As Long) As Long
je met pas les autres lignes car j'ai bien mis en module comme tu dis et en form comme tu dis mais ses lignes ci dessus qui sont en modules se mette en rouge :s
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 14 sept. 2006 à 23:46
ca fonctionne nikel maintenant cependant (je sais je suis chiant :p) il intercepte la touche que si ma form est "active" donc qu'elle a le "focus" enfin je sais pas si vous voyez se que je veux dire ^^ en gros si mon prog est pas actif mais qu'on le vois la touche print sera pas interceptee :s il faudrais un truc genre qui verifie si l'interface de mon logiciel est presente dans le screen ou koi enfin vous voyez ce que je veux dire ?
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 14 sept. 2006 à 23:54
Pour savoir si la form est visible, teste avec les propriétés .Left .Top etc.. de ta form.
Il faut que .Left>0 et que .Left+.Width<Screen.Width
Après pour capturer la touche appuyée meme quand la form n'est pas active je ne me souviens plus comment il faut faire, mais quelqu'un d'autre le sais surement
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 15 sept. 2006 à 01:54
Pour Casy :
Attention, ma source contient quelques bugs --> lors de la coloration syntaxique automatique, les parenthèses d'ouvertures dans les fonctions d'API disparaissent.
Promis, je fais au plus vite pour faire la MAJ (enfin, une des MAJ...)
Mais ce sera dans la prochaine, je te tiens au courant par MP
Désolé !
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 27 nov. 2006 à 15:49
Ok les gars, ça marche nikel, seuleument mon problème est le suivant:
Si je mets la fenêtre de mon appli en arrière plan et que j'en lance une autre, genre mozilla.
Je peux faire un imprim écran, car mon prog n'est pas en 1ere ligne, donc il autorise le PRTSCR
Donc Carotte! Comment faire pr que le print screen soit empêcher si l'appli est lancé tout court et pas seuleument au premier plan?