KeyPress

Résolu
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 30 mai 2006 à 11:39
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Derniè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?

Merci pour votre aide

TBBUIM

8 réponses

tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
30 mai 2006 à 15:03
Effectivement, la seule solution semble être le timer qui check soit le presse papier, soit l'appuie des touches... Comme je le pressentais

TBBUIM
3
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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

TBBUIM
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
30 mai 2006 à 11:51
Salut,

Peu être y a t il moyen en passant par la propriété KeyPreview d'un Form.

Moi de mon coté l'imprime écran ne me déclanche pas d'événement KeyPress même si j'ai aucun contrôle.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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

bon courage ;)
PCPT  [AFCK]
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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)

TBBUIM
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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....
0
Rejoignez-nous