IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

interdire la copie d'écran [WD17]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut interdire la copie d'écran
    Bonsoir,

    j'ai besoin d'interdire la copie d'écran du logiciel que je suis entrain de développer,

    comment faire ?

    j'ai essayer ceci mai en vain :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VK_SNAPSHOT est un entier = 44
    Evénement("SnapShot","*.*", VK_SNAPSHOT)
    Mais la procédure n'est jamais lancée !

    En fait j'ai l'impression que la touche Imp écran n'est pas gérée par windev, car même dans l'exemple Envoi Touche de PcSoft cette touche là ne réponds pas ...

    Merci beaucoup par avance pour votre aide précieuse

  2. #2
    Membre éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour, à tout hasard, avez-vous ajouter EXTERNE "KeyConst.WL" dans le code du projet ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    oui j'ai oublié de préciser, j'ai bien ajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EXTERNE "KeyConst.WL"
    EXTERNE "WinConst.WL"
    dans le code d'ini du projet ...

    merci par avance pour votre aidfe

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 391
    Points : 9 567
    Points
    9 567
    Par défaut
    A quel endroit as-tu mis ton code ?

    As tu essayé avec une autre touche (F1 par exemple) ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    j'ai bien ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EXTERNE "KeyConst.WL"
    EXTERNE "WinConst.WL"
    dans le code d'ini du projet ...

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Evénement("SnapShot","FEN_CERIB.*", VK_SNAPSHOT)
    dans le code d'ini de la fenêtre consernée...


    Oui j'ai essayé avec d'autres touches, et ça fonctionne très bien ...

    C'est juste cette touche "Imp écr" qui ne fonctionnepas.

    D'ailleurs, dans l'assistant de windev lorsqu'on utilise la fonction "ToucheEnfoncée", l'assistant nous propose de détecter la touche que l'on veut gérer, si on appui sur "Imp ecr" ça ne fait rien, si on appui sur une autre touche, ça marche ...

    Windev n'aurai pas prévu d'intercepter cette touche ?????

    Merci pour votre aide

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 557
    Points : 1 200
    Points
    1 200
    Par défaut
    Bonjour,

    Windev ne gère pas toutes les touches du clavier. (Par exemple la touche F10 n'est pas pris en compte et dans certains cas, l'appui de la touche F10 active ou désactive les touches F11 et F12)

    Pour vous en sortir, il faut réaliser le traitement via les API windows, et par rapport à votre demande, cela s'appelle faire un 'hook clavier'

    je vous laisse faire une recherche de ces mots dans ce forum ou dans le forum de l'éditeur, vous devriez trouver votre bonheur.

    Cordialement.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    En effet j'ai trouvé une réponse ici :

    http://www.developpez.net/forums/d98...-applications/

    mais le résultat est un peu bizarre,
    par exemple la touche "Imp écr" me renvoi *

    J'ai remarqué aussi d'autres retours,
    par exemple "/" me renvoi !

    mais bon, c'est une très bonne piste

    merci

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 557
    Points : 1 200
    Points
    1 200
    Par défaut
    Voici un bout de code qui devrait vous aider (je ne sais plus qui est l'auteur, mais il m'a été grandement utile pour la programmation d'un logiciel type cybercafé) :

    A l’init du projet déclarer les fichiers de constante externe (pas obligatoire si vous connaissez la valeur des constantes…) et le handle de la fenêtre à surveiller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Code de déclaration du projet
    gnHandleHook est un entier
     
    EXTERNE "keyconst.wl" 
    EXTERNE "winconst.wl"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Création d’une procédure globale au projet :
    PROCEDURE Procédure_Hook(ncode, wParam, lParam) 
     
     
    nCaractTouche est un entier 
     
    // Si le code est à 0, c'est bon (ca correspond au HC_ACTION) 
    SI ncode = 0 
     
           // Si c'est une touche enfoncée (ou touche système) => Si elle est relachée, ca sert à rien le traitement de la touche a déjà été fait 
           SI wParam <> WM_KEYDOWN _ET_ wParam <> WM_SYSKEYDOWN ALORS 
                 RENVOYER API("user32","CallNextHookEx",gnHandleHook, ncode, wParam, lParam) 
           FIN 
     
           // Transfert du lparam en structure => Il correspond au code virtuel de la touche 
           Transfert(&nCaractTouche,lParam,4) 
     
           SELON nCaractTouche 
                 CAS VK_LWIN, VK_RWIN // c'est une touche windows 
     
                        Trace("WIN bloqué") 
                        // ON bloque => 
                        RENVOYER 1 
                 CAS VK_SNAPSHOT // C'est le impr écran 
     
                        Trace("IMPR bloqué") 
                        // ON bloque => 
                        RENVOYER 1 
                 CAS VK_ESCAPE // Sur echap 
                        // On vérifie si la touche ctrl est appuyée (le CTRL + ECHAP) ouvre le menu démarrer 
                        SI ToucheEnfoncée(teControl,Vrai) ALORS 
                               Trace("CTRL + ECHAP bloqué") 
                               // CTRL + ECHAP => Menu démarrer 
                               RENVOYER 1 
                        FIN 
                 AUTRE CAS 
     
           FIN 
    FIN 
    // Dans tous les cas (sauf ceux que l'on veut bloquer) on renvoie la suite du hook (pour permettre le traitement aux autres applis) 
    RENVOYER API("user32","CallNextHookEx",gnHandleHook, ncode, wParam, lParam)

    A l’init de la fenêtre à surveiller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // init de ma fenêtre
    gnHandleHook = API("user32","SetWindowsHookExA",13,&Procédure_Hook, Instance() ,0)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Ce code fonctionne !
    merci

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 89
    Points
    89
    Par défaut
    Perso je remplace en permanence (timer) le presse-papier
    tant que la fenêtre à protéger est ouverte.

    Simple et efficace.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Windev
    Inscrit en
    Avril 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Windev

    Informations forums :
    Inscription : Avril 2022
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Sof43
    J'ai utilise le code de ce exemple mais une erreur affiché lors l'execution de fenetre.....setwindowshookexa dll n'exist pas dans user32

  12. #12
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    1 046
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1 046
    Points : 2 504
    Points
    2 504
    Par défaut
    Empêcher le PrintScreen ?
    Et les outils de capture d'écran, dans ce cas.
    (il y a toujours moyen de faire une capture écran)

  13. #13
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 391
    Points : 9 567
    Points
    9 567
    Par défaut
    Je te plussoie Serendib,

    Même Windows 10 possède un imprime écran évolué avec le Win + maj + S qui permet de faire une sélection de portion d'écran.

  14. #14
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 353
    Points : 3 881
    Points
    3 881
    Par défaut
    Bonjour,

    En 26, il existe ça maintenant :
    FAASécuritéExport(faaExportMdp...

    Et ça marche nickel voire même trop car lors d'une prise de main à distance via Teamviewer par exemple, on a le droit à des écrans noirs pour le logiciel.

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 553
    Points : 968
    Points
    968
    Par défaut
    Pour ceux qui utilisent des versions WinDev plus anciennes,
    vous pouvez utiliser directement l'API bas niveau (USER32) à savoir :

    getwindowdisplayaffinity
    et
    setwindowdisplayaffinity

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Copie d'écran vers BMP
    Par Mille sabords dans le forum Windows
    Réponses: 2
    Dernier message: 23/11/2005, 15h17
  2. Faire une copie d'écran d'un Panel
    Par Wilco dans le forum Langage
    Réponses: 2
    Dernier message: 19/10/2005, 18h28
  3. Reformatter un doc word pour en faire des copies d'écran
    Par titouille dans le forum VBA Word
    Réponses: 4
    Dernier message: 22/09/2005, 19h21
  4. Copie d'écran dans un fichier
    Par angsthase dans le forum Autres Logiciels
    Réponses: 12
    Dernier message: 17/08/2005, 01h45
  5. Comment interdire la touche Imprime écran ?
    Par spikto dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 01/08/2005, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo