[AHK]特定のシナリオでのみ有効なホットキー


; 。 ( Edit1 ), Word :

#If ActiveControlIs("Edit1")
6::Send {F5}
7::MsgBox
#If

ActiveControlIs(Control) {
    ControlGetFocus, FocusedControl, A
    return (FocusedControl=Control)
}

クラスのコントロールがアクティブになったときに有効になります.コードは次のとおりです.
;   :  .
#If ActiveControlIsOfClass("Edit")
^BS::Send ^+{Left}{Del}
^Del::Send ^+{Right}{Del}

ActiveControlIsOfClass(Class) {
    ControlGetFocus, FocusedControl, A
    ControlGet, FocusedControlHwnd, Hwnd,, %FocusedControl%, A
    WinGetClass, FocusedControlClass, ahk_id %FocusedControlHwnd%
    return (FocusedControlClass=Class)
}

#If

クラスウィンドウをアクティブにする必要はありません.コードは次のとおりです.
;   :  .
#If MouseIsOver("ahk_class Shell_TrayWnd")
WheelUp::Send {Volume_Up}
WheelDown::Send {Volume_Down}

MouseIsOver(WinTitle) {
    MouseGetPos,,, Win
    return WinExist(WinTitle . " ahk_id " . Win)
}


特定のウィンドウのアクティブ化時に有効にする、#IfWin命令でウィンドウのアクティブ化時のコンテキストに関するホットキーを簡単に作成することができる.例:
#IfWinActive ahk_class Notepad
#space::MsgBox You pressed Win+Spacebar in Notepad.
#IfWinExist ahk_class Notepad
#n::WinActivate  ;   #IfWin  .

一部のウィンドウがアクティブになったときに有効になります.#IfWinActive ahk_group MyGroupでウィンドウグループを使用します.
関数化:
#IfWinActive, - Microsoft Outlook ahk_class RCtrl_renwnd32 ;for Outlook 2010, uncomment this line
y::HandleOutlookKeys("^+1", "y") ;archive message using Quick Steps Hotkey (ctrl+Shift+1)
f::HandleOutlookKeys("^f", "f") ;forwards message
r::HandleOutlookKeys("^r", "r") ;replies to message
#IfWinActive

HandleOutlookKeys( specialKey, NormalKey )
{
    ;Activates key only on main outlook window, not m, tasks, contacts, etc.
    IfWinActive, - Microsoft Outlook ahk_class RCtrl_renwnd32, NUIDocumentWindow, ,	;for Outlook 2010, uncomment this line
    {
      ;Find out which control in Outlook has focus
      ControlGetFocus currentCtrl, A
      ;Set list of controls that should respond to specialKey. Controls are the list of emails and the main
      ;(and minor) controls of the reading pane, including controls when viewing certain attachments.
      ctrlList = Acrobat Preview Window1,AfxWndW5,AfxWndW6,EXCEL71,MsoCommandBar1,OlkPicturePreviewer1,paneClassDC1,OutlookGrid1,OutlookGrid2,RichEdit20WPT2,RichEdit20WPT4,RichEdit20WPT5,RICHEDIT50W1,SUPERGRID2,SUPERGRID1,_WwG1
      If currentCtrl in %ctrlList%
          Send %specialKey%
      ;Allow typing normalKey somewhere else in the main Outlook window. (Like the search field or the folder pane.)
      Else
          Send %NormalKey%
    }
  ;Allow typing normalKey in another window type within Outlook, like a mail message, task, appointment, etc.
  Else
    {
      Send %NormalKey%
    }
  }