13 votes

automatiser pour que si et seulement si un moniteur externe est connecté, la fermeture du couvercle de l'ordinateur portable ne fasse rien.

S'il vous plaît, ne le marquez pas comme un doublon avant de l'avoir lu en entier. J'ai lu les autres messages et ils ne résolvent pas mon problème.

J'utilise un ordinateur portable avec un écran externe. Lorsque l'écran est connecté, je voudrais que la fermeture du couvercle ne fasse rien. En revanche, lorsque l'écran n'est pas connecté, j'aimerais que la fermeture du couvercle mette l'ordinateur portable en veille.

Ce que je fais maintenant, c'est que je règle l'option "fermer le couvercle" sur "ne rien faire" dans mes paramètres lorsque j'utilise l'écran externe, et j'essaie de me souvenir de la rétablir lorsque je déconnecte l'écran. Mais j'oublie souvent et mon ordinateur reste allumé pendant des heures alors que je pense qu'il s'est endormi, ce qui épuise la batterie.

J'utilise déjà AutoHotkey, donc s'il existe un moyen simple de détecter un écran externe dans AutoHotkey, ce serait un début. Je pourrais alors créer deux plans d'alimentation et passer de l'un à l'autre (est-ce possible dans AutoHotkey ?).

J'ai déjà essayé sysget, MonitorCount mais cela ne fonctionne pas car le nombre de moniteurs est de 1 aussi bien lorsque je n'ai que le moniteur externe que lorsque je n'ai que le moniteur de l'ordinateur portable.

1voto

gCo Points 11

Je ne connais pas de réponse solide à votre problème. Mais il y a quelques choses que vous pouvez essayer :

  1. Brancher brièvement l'ordinateur portable avant de le fermer. Vous pourriez régler la fermeture du couvercle pour qu'il ne fasse rien lorsqu'il est branché, mais qu'il se mette en veille s'il n'est pas branché. Ainsi, lorsque vous utilisez votre écran, vous pouvez brancher l'ordinateur portable, fermer le couvercle, puis le débrancher (l'ordinateur portable restera éveillé).
  2. Fermer l'ordinateur portable juste après l'avoir allumé. D'après mon expérience, si vous fermez l'ordinateur portable immédiatement après l'avoir allumé, il ne se met pas en veille. (Probablement parce que Windows n'a pas encore chargé les processus qui lui disent de se mettre en veille lorsque vous fermez le couvercle).
  3. Appuyer sur la touche de raccourci "[WIN]+X,U,S" pour mettre en veille. L'un de mes ordinateurs ne fait rien d'autre que de s'éteindre lorsque je ferme le couvercle, j'ai donc pris l'habitude d'utiliser le raccourci de mise en veille : Maintenez la touche Windows enfoncée et appuyez sur "x". Relâchez, puis appuyez sur les touches "u" et "s" sans les maintenir enfoncées. Une fois que vous en avez pris l'habitude, l'utilisation de ce raccourci peut être beaucoup plus efficace que d'aller dans le menu de démarrage pour mettre l'ordinateur en veille.

0voto

down1nit Points 1

Vous pouvez bien sûr faire tout ce que vous voulez dans AHK. Vous pouvez créer des plans, snip une minuscule capture d'écran du bouton exact et de l'emplacement que vous souhaitez activer, et ensuite script un AHK script pour ouvrir le dialogue de puissance, rechercher ce plan exact basé sur votre png/jpg, le cliquer, puis fermer le dialogue de puissance.

Ce n'est peut-être pas la meilleure option, mais c'est une option. Vous pouvez examiner les tâches programmées, car je crois que taskschd.msc a la capacité de déterminer le plan d'alimentation actuel.

0voto

Anas Malas Points 13

Pas une réponse complète, mais peut-être quelques pistes :

Les moniteurs ont des noms, Par exemple, voici une capture d'écran d'un programme que j'utilise pour changer la luminosité de mon moniteur à la demande en utilisant la barre des tâches et le shotcut appelé ClickMonitorDDC :

Une capture d'écran montrant les noms de deux moniteurs connectés : Celui de l'ordinateur portable interne et celui d'un Dell connecté.

screenshot

Voici quelque chose que j'ai trouvé en utilisant autohotkey pour trouver les numéros de modèle dans AutoHotKey.

Et enfin, voici quelque chose sur le changement des plans d'alimentation par AutoHotKey .

0voto

Note : Je ne suis pas un utilisateur d'autohotkey.

Voici ce que j'ai trouvé à ce lien ?

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#SingleInstance force

; Defines getMonitorInputSource
; Finds monitor handle
getMonitorHandle()
{
  ; Initialize Monitor handle
  hMon := DllCall("MonitorFromPoint"
    , "int64", 0 ; point on monitor
    , "uint", 1) ; flag to return primary monitor on failure

  ; Get Physical Monitor from handle
  VarSetCapacity(Physical_Monitor, 8 + 256, 0)

  DllCall("dxva2\GetPhysicalMonitorsFromHMONITOR"
    , "int", hMon   ; monitor handle
    , "uint", 1   ; monitor array size
    , "int", &Physical_Monitor)   ; point to array with monitor

  return hPhysMon := NumGet(Physical_Monitor)
}

destroyMonitorHandle(handle)
{
  DllCall("dxva2\DestroyPhysicalMonitor", "int", handle)
}

getMonitorInputSource()
{
  handle := getMonitorHandle()
  DllCall("dxva2\GetVCPFeatureAndVCPFeatureReply"
    , "int", handle
    , "char", 0x60 ;VCP code for Input Source Select
    , "Ptr", 0
    , "uint*", currentValue
    , "uint*", maximumValue)
  destroyMonitorHandle(handle)
  return currentValue
}

MouseLock := False

!+l::
    If (!MouseLock && getMonitorInputSource() == 4) {
        MouseLock := True
        BlockInput, MouseMove
        return
        }

    Else {
        MouseLock := False
        BlockInput, MouseMoveOff
        return
        }

#If (getMonitorInputSource() == 4 && !MouseLock)
XButton2::
    If (!WinExist("ahk_exe Magnify.exe")) {
        Send, #=
        return
        }
    If (WinExist("ahk_exe Magnify.exe")) {
        Send, #{Esc}
        return
        }

#If (getMonitorInputSource() == 4 && MouseLock)
XButton2::
    If (!WinExist("ahk_exe Magnify.exe")) {
        Send, #=
        BlockInput, MouseMoveOff
        return
        }
    If (WinExist("ahk_exe Magnify.exe")) {
        Send, #{Esc}
        BlockInput, MouseMove
        return
        }

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X