Comment définir un coin chaud dans Windows 7?

10

J'ai une configuration double moniteur sur ma boîte Windows 7 au travail. J'aimerais savoir comment (si possible) je peux définir un coin chaud pour démarrer l'économiseur d'écran ou mettre l'écran en veille?

CyberSkull
la source

Réponses:

12

En fait, économiseurs d' écran de Windows a fait cette fonctionnalité (au moins ceux qui sont inclus dans le cadre du pack Plus, anciens ne doivent pas oublier!):

1

En effet, un bug vraiment utile a fait les coins chauds spécifiés pour Plus! économiseurs d'écran un paramètre global qui s'applique aux non-Plus! économiseurs d'écran aussi!

Le moyen le plus simple d'obtenir des fonctionnalités similaires dans Windows maintenant pourrait être d'utiliser une application AutoIT (source disponible) appelée, sans surprise, Hot Corners . Il peut également faire diverses autres choses intéressantes en plus de lancer l'économiseur d'écran:

2

Karan
la source
Cela ne semble pas fonctionner sur Windows 10, pour mémoire.
Giacomo Lacava
3

Voici une application hotcorners que j'ai écrite, j'espère qu'elle vous plaira! J'ai également publié la source sur github.

Les détails peuvent être trouvés sur: https://sites.google.com/site/bytecar/home/hotcornersapp

Happy Hacking!

voiture de tourisme
la source
Contrairement à la réponse acceptée, cela fonctionne très bien avec Windows 10 et plusieurs moniteurs également. Bon travail! Pour mémoire, j'ai remarqué que la dernière version disponible ne comprend pas de fonctionnalité (veille du moniteur) qui a été fusionnée dans Github, avez-vous des chances de la mettre à jour? Merci encore pour l'application.
Giacomo Lacava
Il y a deux problèmes en suspens, 1) l'activation accidentelle de hotcorners pendant le jeu 2) la construction de code de sommeil fusionné (il semble y avoir quelques problèmes), fonctionnera sur ces deux et sortira d'ici le 30 janvier.
bytecar
2

Voici ma version rapide de PowerShell si quelqu'un est intéressé ( fiche de blog sans vergogne ) (ou GitHub )

ce code surveille la souris dans une certaine position (actuellement le coin inférieur droit) puis déclenche l'API de mise hors tension du moniteur Win32 ... il affiche une icône de la barre des tâches comme indicateur de fonctionnement visible ainsi qu'un menu contextuel pour terminer l'exécution

malheureusement, je suis trop vert pour poster des captures d'écran ... pour l'instant, veuillez vous référer au lien github pour des informations robustes

# Source: http://www.powershellmagazine.com/2013/07/18/pstip-how-to-switch-off-display-with-powershell/

# Turn display off by calling WindowsAPI.

# SendMessage(HWND_BROADCAST,WM_SYSCOMMAND, SC_MONITORPOWER, POWER_OFF)
# HWND_BROADCAST  0xffff
# WM_SYSCOMMAND   0x0112
# SC_MONITORPOWER 0xf170
# POWER_OFF       0x0002

Add-Type -TypeDefinition '
using System;
using System.Runtime.InteropServices;

namespace Utilities {
   public static class Display
   {
      [DllImport("user32.dll", CharSet = CharSet.Auto)]
      private static extern IntPtr SendMessage(
         IntPtr hWnd,
         UInt32 Msg,
         IntPtr wParam,
         IntPtr lParam
      );

      public static void PowerOff ()
      {
         SendMessage(
            (IntPtr)0xffff, // HWND_BROADCAST
            0x0112,         // WM_SYSCOMMAND
            (IntPtr)0xf170, // SC_MONITORPOWER
            (IntPtr)0x0002  // POWER_OFF
         );
      }
   }
}
'

Add-Type -AssemblyName System.Windows.Forms

$notifyIcon = New-Object System.Windows.Forms.NotifyIcon
$notifyIcon.Icon = New-Object System.Drawing.Icon "$(Split-Path -parent $PSCommandPath)\icon.ico"
$notifyIcon.Text = "Hot Corners"

$notifyIcon.add_MouseDown( { 
  if ($script:contextMenu.Visible) { $script:contextMenu.Hide(); return }
  if ($_.Button -ne [System.Windows.Forms.MouseButtons]::Left) {return}

  #from: http://stackoverflow.com/questions/21076156/how-would-one-attach-a-contextmenustrip-to-a-notifyicon
  #nugget: ContextMenu.Show() yields a known popup positioning bug... this trick leverages notifyIcons private method that properly handles positioning
  [System.Windows.Forms.NotifyIcon].GetMethod("ShowContextMenu", [System.Reflection.BindingFlags] "NonPublic, Instance").Invoke($script:notifyIcon, $null)
})

$contextMenu = New-Object System.Windows.Forms.ContextMenuStrip
$contextMenu.ShowImageMargin = $false
$notifyIcon.ContextMenuStrip = $contextMenu
$contextMenu.Items.Add( "E&xit", $null, { $notifyIcon.Visible = $false; [System.Windows.Forms.Application]::Exit() } ) | Out-Null
$contextMenu.Show(); $contextMenu.Hide() #just to initialize the window handle to give to $timer.SynchronizingObject below

$timer = New-Object System.Timers.Timer
$timer.Interval = 500
$timer.add_Elapsed({
  $mouse = [System.Windows.Forms.Cursor]::Position
  $bounds = [System.Windows.Forms.Screen]::FromPoint($mouse).Bounds #thank you! - http://stackoverflow.com/questions/26402955/finding-monitor-screen-on-which-mouse-pointer-is-present

  <#    __  __              _          __  __            __              ____
       / / / /__  ________ ( )_____   / /_/ /_  ___     / /_  ___  ___  / __/
      / /_/ / _ \/ ___/ _ \|// ___/  / __/ __ \/ _ \   / __ \/ _ \/ _ \/ /_  
     / __  /  __/ /  /  __/ (__  )  / /_/ / / /  __/  / /_/ /  __/  __/ __/  
    /_/ /_/\___/_/   \___/ /____/   \__/_/ /_/\___/  /_.___/\___/\___/_/     #>
  # currently set to trigger at lower right corner... season to your own taste (e.g. upper left = 0,0)
  if ($mouse.X-$bounds.X -gt $bounds.Width-10 -and $mouse.Y -gt $bounds.Height-10) { [Utilities.Display]::PowerOff() }

  #run the ps1 from command line to see this output
  #debug: Write-Host "x: $($mouse.X), y:$($mouse.Y), width: $($bounds.Width), height: $($bounds.Height), sleep: $($mouse.X-$bounds.X -gt $bounds.Width-10 -and $mouse.Y -gt $bounds.Height-10)"
})

#frugally reusing $contextMenu vs firing up another blank form, not really necessary but i was curious if it'd work... the notify icon itself does not implement InvokeRequired
#see this for why SynchronizingObject is necessary: http://stackoverflow.com/questions/15505812/why-dont-add-eventname-work-with-timer
$timer.SynchronizingObject = $contextMenu

$timer.start()
$notifyIcon.Visible = $true
[System.Windows.Forms.Application]::Run()
Beej
la source
0

J'utilise - et je recommande d'utiliser - les HotCorners d'AutoIT (ou la variante de M. Lekrem Yelsew, HotCorners 2). Ce n'est pas tout à fait "Screener" (Mac OS hérité), mais il fait ce qu'il est censé faire et "se ferme quand on le lui demande" (c'est-à-dire qu'il n'y a pas de retard pour se remettre au travail à partir d'un état défini par l'un des "coins").

BZT

SilversleevesX
la source
1
Merci pour l'info. Si vous pouviez inclure des liens vers les programmes dont vous parlez, cela serait grandement apprécié.
CyberSkull