幾個AutoHotkey的實用範例:音量控制、滾輪回上層與語音功能(AHK #7)

音量控制

使用標準的101鍵或104鍵鍵盤時,不像筆記型電腦通常都有多媒體按鍵,此時我們可以用下列AutoHotkey腳本以使用按鍵來控制音量:

!NumpadAdd:: Send {Volume_Up} ;//Alt + numpad plus
!NumpadSub:: Send {Volume_Down} ;//Alt + numpad minus
!Numpad0::Send {Volume_Mute} ;//Alt + numpad 0 

檔案總管回上層目錄

按下滑鼠中鍵(滾輸)往上層目錄或到下個項目

~MButton::
  WinGetClass,sClass,A
  ;//MsgBox class=%sClass%
  ;//FM=7-zip window, TFcFormMain=FreeCommander
  if (sClass="TFcFormMain" || sClass="FM" || sClass="MultiCommander MainWnd") {
    Send, {BS}
  } else if (sClass="CabinetWClass") {
    Send, !{up}
  } else if (sClass="MozillaWindowClass" || sClass="Chrome_WidgetWin_1") {
    WinGetTitle, sTitle, A
    ;//MsgBox title=%sTitle%
    if (InStr(sTitle, "Gmail") > 0) {
      Send {j}
    } else if (InStr(sTitle, "Twitter") > 0) {
      Send {j}
    }
  } 
  return

~+MButton::
  WinGetClass,sClass,A
  ;//MsgBox $%sClass%$
  if (sClass = "MozillaWindowClass" || sClass="Chrome_WidgetWin_1") {
    WinGetTitle, sTitle, A
    if (InStr(sTitle, "Gmail") > 0 || InStr(sTitle, "Facebook") > 0) {
      Send {k}
    } else if (InStr(sTitle, "Twitter") > 0) {
      Send {k}
    }
  }
  return

取游標位置的顏色代碼

用MouseGetPos取得游標座標,再用PixelGetColor取出座標處的顏色代碼

!a::
  MouseGetPos, MouseX, MouseY
  PixelGetColor, color, %MouseX%, %MouseY%, RGB  
  Clipboard := "#" . SubStr(color, 3)
  MsgBox, Current color is `n %Clipboard%
  return

叫用語音API

A_YYYY、A_Hour等是AutoHotkey的內建變數。

!F12::
  date = %A_YYYY%年%A_MM%月%A_DD%日
  Speak("今天日期是 " . date)
  time = %A_Hour%點 %A_Min%分 %A_Sec%秒
  Speak("現在時間是 " . time)
  return

Speak(say) {
  spovice:=ComObjCreate("sapi.spvoice")
  spovice.Speak(say)
}

test7.ahk 原始程式

實際操作影片

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

3 個回應

  1. rocmc602表示:

    簡大哥您好,透過觀看您的相關影片,我嘗試用自己(錯誤)的概念模仿並改寫[AHK#7]的一段語法,但始終都沒成功,可否擔誤您一點時間幫我看一下?萬分感激

    主題是我希望幾個熱字串的功能只限定在Chrome中的某二個分頁,但下面的語法卻是在任一分頁都可以被執行,因工作需要,再麻煩您指點

    #IfWinActive ahk_class Chrome_WidgetWin_1

    WinGetTitle, sTitle, A

    if (InStr(sTitle, "案件查詢") > 0 || InStr(sTitle, "裁判書查詢") > 0)

    {
    :*o:5101::0001 {Enter}{Tab 2}
    :*o:5102::0017 {Enter}{Tab 2}
    :*o:5105::0008 {Enter}{Tab 2}
    }

    #IfWinActive

    • 簡睿表示:

      我測試的範例如下,把判斷寫在熱字串裡:

      #SingleInstance Force
      SetTitleMatchMode 2

      #IfWinActive ahk_class Chrome_WidgetWin_1

      ::ss::
      WinGetTitle, sTitle, A
      pos := InStr(sTitle, “簡睿隨筆”)
      ;MsgBox pos=%pos%,title=%sTitle%
      if (pos > 0) {
      Send THIS IS A TEST.
      } else {
      Send ss
      }
      Return

      #IfWinActive

  2. 志育表示:

    簡大哥您好,透過觀看您的相關影片,我嘗試用自己(錯誤)的概念模仿並改寫[AHK#7]的一段語法,但始終都沒成功,可否擔誤您一點時間幫我看一下?萬分感激

    主題是我希望幾個熱字串的功能只限定在Chrome中的某二個分頁,但下面的語法卻是在任一分頁都可以被執行,因工作需要,再麻煩您指點

    #IfWinActive ahk_class Chrome_WidgetWin_1

    WinGetTitle, sTitle, A

    if (InStr(sTitle, "案件查詢") > 0 || InStr(sTitle, "裁判書查詢") > 0)

    {
    :*o:5101::0001 {Enter}{Tab 2}
    :*o:5102::0017 {Enter}{Tab 2}
    :*o:5105::0008 {Enter}{Tab 2}
    }

    #IfWinActive

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *