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

C++Builder Discussion :

Vérouillage de Windows [Trucs & Astuces]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut Vérouillage de Windows
    Bonjour,

    J'aurais un petit projet que j'ai eu comme ça qui me serait utile. Ce serait un programme qui tournerait en fond et qui regarde pendant combien de temps la souris n'a pas bouger et quand le temps serait écoulé (donc AFK) il vérouillerait windows.

    Je bloque sur le vérouillage de windows, ce serait de simuler les touches CTRL + ALT + DELETE et ensuite V. Le panneau de vérouillage s'affiche et bloque l'ordinateur. Pour le débloquer faut un mdp (manuellement).

    Donc quel serait la meilleur manière ?
    1)Crée un panneau soit même plein écran bloquant windows et demandant un mdp (je sais pas comment).
    2)Simuler les touches
    3)Y'a-t-il un évènement qui appellerait cette fenêtre ? ou une fonction (sait jamais).

    Merci d'avance pour votre aide !

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Pour le verrouillage, ToucheWindows + L ne serait pas mieux que ta longue combinaison de touches ?

    Je pense (il faut vérifier) que tu peux simuler l'appui sur la touche Windows.

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut
    Ah Windows + L... je connaissait pas merci !

    Par contre je n'ai aucune idée de comment faire pour simuler ces touches.
    Je vais faire une recherche...

  4. #4
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par défaut
    Il me semble (à vérifier) que la touche Windows, c'est en réalité CTRL+ESC.

  5. #5
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Citation Envoyé par Greybird
    Il me semble (à vérifier) que la touche Windows, c'est en réalité CTRL+ESC.
    En effet. Dans la liste des codes des touches virtuelles, j'ai trouvé VK_LWIN et VK_RWIN, qui représentent les codes des touches Windows (gauche et droite respectivement). Il faut essayer de les utiliser; à ce moment la combinaison de touche à utiliser sera alors VK_LWIN (ou VK_RWIN) + L.

    A+

    [Edit]
    Pour simuler l'appui sur la touche, regarde du côté de keybd_event.

  6. #6
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 54
    Par défaut
    Salut,

    Dans le faq c++ builder tu peut trouvé comment fermer un session windows ou mettre en veille l'ordinateur!

    Peut etre que sa peut te convenir si ta un ecran de veille et que tu a cochez la case "protéger par un mot de passe" dans l'onglet ecran de veille de windows.

    A toi de voir!
    A plus!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut
    J'ai trouvé sur le forum ces codes :

    Pour simuler CTRL + C (copier)
    keybd_event(VK_CONTROL,0,0,0);
    keybd_event('C',0,0,0);
    keybd_event('C',0,KEYEVENTF_KEYUP,0);
    keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
    Je vois que il faut d'abord mettre en down les touches puis en up. C'est assez facile...

    J'ai trouvé un truc intéressant: http://tcharles.developpez.com/simul/#controleclavier
    et aussi la liste des touches: http://tcharles.developpez.com/simul/#VK

    La dessus il y a ce bout de code:
    #include <windows.h>
    int main(int argc, char *argv[])
    {
    SetForegroundWindow(FindWindow("Media Player 2",NULL));
    Sleep(100);
    keybd_event(VK_LMENU,0,0,0);
    keybd_event(VK_RETURN,0,0,0);
    keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
    keybd_event(VK_LMENU,0,KEYEVENTF_KEYUP,0);
    return 0;
    }
    Comme tu l'a dit King Kaiser la touche gauche de Windows est VK_LWIN. (Au début j'avais pas saisit de quoi tu parlais :p).
    Donc VK_LWIN + VK_L ok. Donc est-ce que le code suivant serait juste ? (j'y vait un peu au bol, mais j'ai compris maitenant comment ça marche)

    keybd_event(VK_LWIN,0,0,0);
    keybd_event(VK_L,0,0,0);
    keybd_event(VK_LWIN,0,KEYEVENTF_KEYUP,0);
    keybd_event(VK_L,0,KEYEVENTF_KEYUP,0);
    Merci de m'avoir aider.

    Et juste pour répondre à Zetmurin. En tout cas pas la fermeture de session cela fermerait les autres programmes,
    et l'écran de veille non pas trop. Je préfére cette méthode si elle marche...[/url]

    EDIT: Quand je compile il me dit que VK_L est inconnu ! dans le fichier winuser.h toutes les lettres n'y sont pas ...???

  8. #8
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Salut!

    Je pense que ton code est correct (teste et dis nous si cà marche).

    Par ailleurs, as-tu inclus windows.h ?

    [Edit]
    http://www.fltk.net/f2doc/win32_8h.html#a1

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut
    Citation Envoyé par King Kaiser
    Salut!

    Je pense que ton code est correct (teste et dis nous si cà marche).

    Par ailleurs, as-tu inclus windows.h ?

    [Edit]
    http://www.fltk.net/f2doc/win32_8h.html#a1
    J'ai testé en tout cas pour la touche windows ça marche. Mais il refuse de compiler pour VK_L. Alors que j'ai inclus <windows.h>.

    Et je n'ai pas compris ton lien ??? Chez moi (C++ Builder 6) c'est dans winuser.h où se trouve les variables...

  10. #10
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut
    Bonjour j'ai eu a simuler une combinasion alt+enter voial comment j'ai proceder


    1°) Un ptit tour sur la MSDN pour la fonction keybd_event
    http://msdn.microsoft.com/library/de...eybd_event.asp

    2°) Visulaisation des codes de touches fourni par MSDN
    http://msdn.microsoft.com/library/de...alKeyCodes.asp

    3°) Creation de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    keybd_event(VK_MENU,0x38,0,0); 
    keybd_event(VK_RETURN,0x1c,0,0); 
    keybd_event(VK_RETURN,0x1c,KEYEVENTF_KEYUP,0); 
    keybd_event(VK_MENU,0x38,KEYEVENTF_KEYUP,0);
    Le code fait cela :
    Appuie sur la touche ALT
    Appuie sur la touche ENTRER
    Relachement de la touche ENTRER
    Relachement de la touche ALT

    Pour info il faut inclure Winuser.h, include Windows.h

    En esperant que cela t'a aide

    ++ Nexus

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut
    Voilà qui m'a fait réfléchir !!! J'ai fait une erreur très bête, c'est que j'ai mal regardé le code que j'avait moi-même cherché puis posté ici....

    En fait je n'ait pas remarqué les ' quand j'appelle la touche L... donc je me suis dit qu'il fallait mettre VK_... mais c'était une erreur voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    //Bouton
    keybd_event(VK_LWIN,0,0,0);
    keybd_event('L',0,0,0);
    keybd_event(VK_LWIN,0,KEYEVENTF_KEYUP,0);
    keybd_event('L',0,KEYEVENTF_KEYUP,0);
    }
    Résultat: ça marche niquel,
    merci pour ton lien Nexus et pour ton aide King Kaise !
    qu'est-ce que je ferais sans vous ? je galèrerait...

  12. #12
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut
    JE susi heureux d'avoir pu aider qqun

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut
    lol

    FAQ ?

  14. #14
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 54
    Par défaut
    C'est deja resolu!

    J'ai trouvé par hasard cette fonction:
    LockWorkStation();

    sur http://search.microsoft.com/search/search.aspx

    Sa serait dommage de s'en priver!

    A plus!

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut
    Donc il suffirait de lancer cette ligne de commande:

    %windir%\System32\rundll32.exe user32.dll,LockWorkStation

    pour simplement bloquer ? j'ai pas essayer mais ça doit marcher vu que c'est sur le site (de microsoft). Ha bas, je te remercie Zetmurin. C'est plus propre...

  16. #16
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut
    Je confirme ca marche cette commande fait comme un Win+L

    ++

  17. #17
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 54
    Par défaut
    Citation Envoyé par jamesb
    Donc il suffirait de lancer cette ligne de commande:

    %windir%\System32\rundll32.exe user32.dll,LockWorkStation
    Oui! avec un ShellExecute

    Mais tu peu simplement faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LockWorkStation();
    A+

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut
    Merci à tous, merci beaucoup !!!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/10/2013, 16h44
  2. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  3. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  4. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45
  5. Quel désassembleur/assembleur pour un exe Windows ?
    Par Anonymous dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 17/04/2002, 10h59

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