tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 2011
-
30 mai 2006 à 11:39
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 2011
-
30 mai 2006 à 16:40
Bonjour à tous,
je voudrais empêcher l'imprime écran sur mon projet.
Seuleument le code ascii d'imprime écran étant 44 (si je ne me trompe pas)
comment faire pour empêcher la saisie sur tout le projet.
Car, pour moi, je ne vois pas comment faire à part:
Faire un check de KeyPress sur tous les controles
Ou faire un keylogger
Existe t-il un autre moyen plus simple pour empêcher l'appuie d'une touche sur tout le projet?
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 30 mai 2006 à 16:40
Ma solution avec TimerAPI
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 'Récupère les touches du clavier
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer 'Récupère l'état des touches
Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long 'Sert à créer le timer
Public Function TimerProc(ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
If Clipboard.GetData(vbCFBitmap) Then 'Si ya une image dans le clipboard alors on l'efface, cela permet donc de copier du texte mais pas des images...
Clipboard.Clear
End If
End Function
'Dans le form_LOAD écrire
SetTimer Me.hWnd, 0, 1, AddressOf TimerProc
JB76000
Messages postés135Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention14 février 2013 30 mai 2006 à 11:59
L'imprime écran doit être géré directement en arrière plan, par windows. Je ne sais pas si tu pourra y faire quelque chose. Peut-être existe-t-il un moyen dans la base de registres. Sinon, tente de rendre ton appli visible=false dans keypreview, mais c'est sans garantie, et très lourd à gérer puisqu'il faudrait placer du code dans chaque contrôle, rajouter un timer pour réafficher... bref, abandonne ce côté.
Il existe des logiciels de capture d'écran, ils utilisent sans doute une fonction.
Ah attend! Peut-être qu'en plaçant une autre image dans le presse papier à la place, tu écrases l'autre en fait. En plus, tu peux lui mettre un gros panneau "interdit". Ca fera enrager ;) .
Autre chose, j'ai mis mon pilote d'affichage à jour et depuis, pas moyen de faire une capture de DVD (image noire). Une autre possibilité à creuser.
J'espère que ça t'a aidé, je suis plein d'idées mais je n'ai pas les solutions ;(
Jer
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 30 mai 2006 à 14:32
rhalalalala, bonjour à tous.
perso si je veux faire une capture et que je vois qu'en appuyant [Impr écran] l'appli disparaît, c'est pas çà qui va m'arrêter.....
comment? beh faire une autre appli qui fasse la même chose à partir du click sur une fenêtre survolée par exemple...
donc?! pourquoi il raconte sa vie celui-là?
c'est le résultat qu'il faut observer. en l'occurence tu dois hooker le presse papier
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 30 mai 2006 à 14:37
'Empêche l'imprime écran sur l'appli avec un HOOK
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public 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
Public Const WH_KEYBOARD = 2
Public hHook As Long
Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode >= 0 Then
If wParam = 44 Then '44 KeyCode de l'imprime écran
Clipboard.Clear 'Efface le Presse-Papier
'Clipboard.SetData LoadPicture("C:\interdit.jpg"), vbCFBitmap 'Affiche une image à la place de l'imprime écran
KeyboardProc = 1
End If
End If
KeyboardProc = CallNextHookEx(hHook, nCode, wParam, lParam)
End Function
'Ce code ne marche que si vous êtes sur l'appli, si vous cliquez dans la barre des taches par exemple, vous pouvez sans aucun probleme, faire l'imprime écran.
TBBUIM
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 30 mai 2006 à 14:39
'PS dans le form il faut mettre dans le load
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, 0&, App.ThreadID)
'Dans le unload
Call UnhookWindowsHookEx(hHook)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 30 mai 2006 à 14:59
et ton appli ne peux pas lancer cet "utilitaire" hidden avec son handle en param (par exemple) et le fermer à sa fermeture?
c'était bien à cette source que je faisais allusion.
si tu ne peux (... humm) pas utiliser une 2e appli, tu peux observer le presse-papier à l'aide d'un timer (empêcher le BITMAP).
barbare et coûteux tout de même....