¿Cómo configuro un hot corner en Windows 7?

10

Tengo una configuración de monitor dual en mi caja de Windows 7 en el trabajo. Me gustaría saber cómo (si es posible) puedo configurar una esquina activa para iniciar el protector de pantalla o poner la pantalla en reposo.

CyberSkull
fuente

Respuestas:

12

En realidad, protectores de pantalla de Windows hizo tener esta característica (al menos los que se incluyen como parte del paquete Plus, que los veteranos deben recordar!):

1

De hecho, un error realmente útil hizo que los rincones calientes especificados para Plus! salvapantallas una configuración global que se aplica a non-Plus! salvapantallas también!

La forma más fácil de obtener una funcionalidad similar en Windows ahora podría ser usar una aplicación AutoIT (fuente disponible) llamada, no sorprendentemente, Hot Corners . También puede hacer varias otras cosas interesantes además de iniciar el protector de pantalla:

2

Karan
fuente
Esto no parece funcionar en Windows 10, para el registro.
Giacomo Lacava
3

Aquí hay una aplicación de hotcorners que escribí, ¡espero que la disfruten! También he lanzado la fuente en github.

Los detalles se pueden encontrar en: https://sites.google.com/site/bytecar/home/hotcornersapp

Happy Hacking!

bytecar
fuente
A diferencia de la respuesta aceptada, esto funciona bien con Windows 10 y múltiples monitores también. ¡Gran trabajo! Para el registro, noté que la última compilación disponible no incluye una característica (monitor de suspensión) que se fusionó en Github, ¿hay alguna posibilidad de que pueda actualizar eso? Gracias por la aplicación nuevamente.
Giacomo Lacava
Hay dos problemas pendientes, 1) Activar accidentalmente hotcorners mientras se está en el juego 2) construir código de sueño combinado (parece haber algunos problemas), funcionará en estos dos y se lanzará antes del 30 de enero.
bytecar
2

Aquí está mi versión rápida de PowerShell de esto si alguien está interesado ( enchufe de publicación de blog descarado ) (o GitHub )

este código observa el mouse en cierta posición (actualmente en la esquina inferior derecha) y luego activa la API de apagado del monitor Win32 ... muestra un icono de la bandeja de tareas como un indicador visible de ejecución junto con un menú contextual para finalizar la ejecución

lamentablemente soy demasiado verde para publicar capturas de pantalla ... por ahora, consulte el enlace de github para obtener información sólida

# 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
fuente
0

Uso, y recomiendo usar, los HotCorners de AutoIT (o la variación del Sr. Lekrem Yelsew, HotCorners 2). No es exactamente "Screener" (Mac OS heredado), pero hace lo que se supone que debe hacer y "sale cuando se le pregunta" (es decir, no hay demora en volver a los negocios desde un estado establecido por una de las "esquinas").

BZT

Mangas plateadasX
fuente
1
Gracias por la info. Si pudiera incluir enlaces a los programas de los que está hablando, sería muy apreciado.
CyberSkull