Como defino um canto quente no Windows 7?

10

Eu tenho uma configuração de monitor duplo na minha caixa do Windows 7 no trabalho. Gostaria de saber como (se possível) posso definir um canto quente para iniciar o protetor de tela ou colocar a tela no modo de suspensão?

CyberSkull
fonte

Respostas:

12

Na verdade, screensavers do Windows fez ter esse recurso (pelo menos aqueles incluídos como parte do Plus Pack, que veteranos devem se lembrar!):

1

De fato, um bug realmente útil criou os cantos mais quentes especificados para o Plus! screensavers uma configuração global aplicada a não-Plus! screensavers também!

A maneira mais fácil de obter funcionalidades semelhantes no Windows agora pode ser usar um aplicativo AutoIT (fonte disponível) chamado, sem surpresa, Hot Corners . Ele também pode fazer várias outras coisas interessantes, além do lançamento do protetor de tela:

2

Karan
fonte
Isso parece não funcionar no Windows 10, para o registro.
Giacomo Lacava
3

Aqui está um aplicativo de hotcorners que eu escrevi, espero que você goste! Também liberei a fonte no github.

Detalhes podem ser encontrados em: https://sites.google.com/site/bytecar/home/hotcornersapp

Feliz Hacking!

bytecar
fonte
Ao contrário da resposta aceita, isso funciona bem com o Windows 10 e também com vários monitores. Bom trabalho! Para constar, notei que a última versão disponível não inclui um recurso (suspensão do monitor) que foi mesclado no Github, há alguma chance de você atualizar isso? Obrigado pelo aplicativo novamente.
Giacomo Lacava
Há dois problemas pendentes: 1) Ativar acidentalmente hotcorners durante o jogo 2) criar código de suspensão mesclado (parece haver alguns problemas). Trabalhará nesses dois e será lançado em 30 de janeiro.
bytecar
2

Aqui está minha versão rápida do PowerShell, se alguém estiver interessado ( vergonhoso plug de postagem do blog ) (ou GitHub )

esse código procura o mouse em determinada posição (atualmente no canto inferior direito) e aciona a API de desligamento do monitor Win32 ... ele exibe um ícone da bandeja de tarefas como um indicador de execução visível junto com um menu de contexto para finalizar a execução

infelizmente estou muito verde para postar capturas de tela ... por enquanto, consulte o link do github para obter informações robustas

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

Eu uso - e recomendo usar - os HotCorners do AutoIT (ou a variação do Sr. Lekrem Yelsew, HotCorners 2). Não é bem "Screener" (Mac OS legado), mas faz o que deveria e "sai quando solicitado" (ou seja, não há atraso em voltar aos negócios a partir de um estado definido por um dos 'cantos').

BZT

SilversleevesX
fonte
1
Obrigado pela informação. Se você pudesse incluir links para os programas dos quais está falando, isso seria muito apreciado.
CyberSkull