XL 2016 [VBA] Verrouiller la session Windows en VBA ?

  • Initiateur de la discussion Initiateur de la discussion F22Raptor
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F22Raptor

XLDnaute Impliqué
Bonjour à tous,
Je me demandais s'il exister un code VBA simple, qui permette de verrouiller la session Windows.
Etant donné que ça correspond à la combinaison de touches WIN+L, peut-être un sendkeys ? Mais comment, par Sendkeys, envoyer une combinaison de touches, en même temps, et pas WIN suivi de L ?

Qu'en pensez-vous ?
 
Solution
bonjour

3 méthodes fonctionnelles sur Win 7/8/10/11

'méthode 1 avec l'api
VB:
Private Declare PtrSafe Function LockWorkStation Lib "user32.dll" () As Long ' à mettre en haut de module

Sub VerrouillerSession()
    LockWorkStation
End Sub
'----------------------------------------------------------
'méthode 2 avec le sendkeys avec wscript.shell créé dinamico
Code:
Sub VerrouillerSession_Wsh()
    CreateObject("WScript.Shell").SendKeys "^{L}" ' Simule Win + L
End Sub
'----------------------------------------
'méthode 3 avec le run d'un wscript.shell créé dinamico argument shutdown" et -1 pour ne fermer que la session
Code:
Sub FermerSession()
   CreateObject("WScript.Shell").Run "shutdown -l", 0, False
End...
si c'est pour ça alors peut être que ceci fera l'affaire
VB:
Sub DeplacerFenetreEcranDroite_VBS()
    Dim  strCmd$
      strCmd = "wscript.exe /E:vbscript /B ""Execute(""CreateObject(\""WScript.Shell\"").SendKeys """"^{+}{RIGHT}"""")"""
          CreateObject("WScript.Shell").Run strCmd, 0, False
   End Sub
 
sinon 100% fiable avec l' api
VB:
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const VK_LWIN As Byte = &H5B   ' Touche Windows gauche
Const VK_SHIFT As Byte = &H10  ' Touche Shift
Const VK_RIGHT As Byte = &H27  ' Flèche droite

Sub Deplacer_la_Fenetre_a_Ecran_Droite()
    keybd_event VK_LWIN, 0, 0, 0   ' appuie sur Win
    keybd_event VK_SHIFT, 0, 0, 0  ' appuie sur Shift
    keybd_event VK_RIGHT, 0, 0, 0  ' appuie sur Flèche Droite
   
    keybd_event VK_RIGHT, 0, 2, 0  ' relache la touche Flèche Droite
    keybd_event VK_SHIFT, 0, 2, 0  ' relache la toucheShift
    keybd_event VK_LWIN, 0, 2, 0   ' relache la toucheWin
End Sub
avec ça tu es tranquille 😉
 
R
Bonjour @Lolote83
tu me diras si les deux marchent
comme ça je les met dans ma biblio
Re bonjour Patrick,
Quel serait la commande pour la flèche Gauche ?
Sachant que pour la droite c'est : Const VK_RIGHT As Byte = &H27 ' Flèche droite

Donc pour Flèche gauche : Const VK_LEFT As Byte = ???? ' Flèche Gauche

A priori, la méthode 1 ne fonctionne pas
Merci
@+ Lolote83
 
re
je m'en doutais pour la v1 elle doit être exécuté par un vbs
mais faut il avoir le focus sur la fenêtre en question
donc pour la VK_LEFT normalement c'est &H25
VK_LEFT&H25Flèche gauche
VK_UP&H26Flèche vers le haut
VK_RIGHT&H27Flèche droite
VK_DOWN&H28Flèche vers le bas
 
Re bonjour à tous.
Ca marche PRESQUE
Si on fait la manip à la mano (WIN + SHIFT + FLECHE), la fenêtre va de gauche à droite (d'un écran à l'autre) et vice-versa (Voir video1)
Si on fait la manip via VBA, la fenêtre va bien de gauche à droite mais reste sur l'écran actuel (voir vidéo2)
@+ Lolote83
 

Pièces jointes

  • Deplacement Ecran (Manuel - WIN+SHIFT+FLECHE).gif
    Deplacement Ecran (Manuel - WIN+SHIFT+FLECHE).gif
    127.6 KB · Affichages: 3
  • Deplacement Ecran (via vba).gif
    Deplacement Ecran (via vba).gif
    324.2 KB · Affichages: 3
Re

Okette

Je me permets au passage, cette question "existentielle" (destinée à qui voudra bien la lire)
[question existentielle ou plutôt question gain/bénéfice]
Dans un monde où il existe des raccourcis-clavier qui offrent l'avantage d'un gain de temps, quel est l'intérêt de rédiger un code VBA (donc d'appuyer N fois sur N touches de son clavier) pour faire l'équivalent d'un touche Windows + L ?

Il existe même dans ce même monde, un jour dédié aux raccourcis dans Excel (que je fête encore chaque année)

IKSD.PNG
Alors oui, je le demande pourquoi cette aversion envers son clavier et ses jolies touches galbées ?
[/question existentielle ou plutôt question gain/bénéfice][/SPOILER]
 
ben par ce que ça nous plait voila 🤣 🤣 🤣 🤣
@Lolote83 il est possible que l'on tape trop vite
VB:
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) ' Pause

Const VK_LWIN As Byte = &H5B   ' Touche Windows gauche
Const VK_RIGHT As Byte = &H27  ' Flèche droite
Const KEYEVENTF_KEYUP As Long = &H2 ' Relâchement de touche

Sub Deplacer_la_Fenetre_dans_l_Ecran_de_Droite()
    keybd_event VK_LWIN, 0, 0, 0   ' Appuie sur Win
    keybd_event VK_RIGHT, 0, 0, 0  ' Appuie sur Flèche Droite
    Sleep 100  ' Pause pour bien détecter
    keybd_event VK_RIGHT, 0, KEYEVENTF_KEYUP, 0  ' Relâche Flèche Droite
    keybd_event VK_LWIN, 0, KEYEVENTF_KEYUP, 0   ' Relâche Win
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
706
  • Question Question
XL 2016 MACROS-VBA
Réponses
1
Affichages
490
Réponses
5
Affichages
535
Compte Supprimé 979
C
Retour