开机脚本之——开心启动

这个开心启动界面我用了多年了,简单易用。


;-----------------------------------------
;
;  【开心启动界面】 v2.0  By FeiYue
;
;  ☆ 特色:右键双击启动,易用易添加,飞速启动酷狗
;
;  ☆ 点击“脚本编辑”可以方便地自主添加功能和删除按钮
;
;-----------------------------------------

~*RButton::    ;-- 【鼠标右键双击】显示“开心启动界面”
Critical
CoordMode, Mouse
MouseGetPos, x, y
now_time:=A_TickCount
if (now_time-last_time<200)
  or (now_time-last_time>500)
  or Abs(x-oldx)+Abs(y-oldy)>5
{
  last_time:=now_time, oldx:=x, oldy:=y
  return
} else last_time:=0

;------ 消除多余的右键菜单 ------
SetTimer, Close_Menu, -500
Close_Menu()
Close_Menu() {
  MouseGetPos, x, y
  DetectHiddenWindows, Off
  WinGet, list, List, ahk_class #32768
  Loop, %list% {
    id:=list%A_Index%
    WinGetPos, x1, y1, w, h, ahk_id %id%
    x2:=x1+w-1, y2:=y1+h-1
    if Abs(x-x1)+Abs(y-y1)<10 or Abs(x-x1)+Abs(y-y2)<10
    or Abs(x-x2)+Abs(y-y1)<10 or Abs(x-x2)+Abs(y-y2)<10
      ControlSend,, {Esc}, ahk_id %id%
  }
}

;------ 首次启动先生成界面 ------
Gui, HappyRun: +LastFoundExist
IfWinNotExist
{
  Gui, HappyRun: New
  Gui, +LastFound +AlwaysOnTop +Owner -MinimizeBox
  Gui, Margin, 20, 20
  Gui, Font, s12 bold
  Gui, Color, CCFFAA
  Gui, Add, Button, w510 gAdd_New, 快 速 新 增 软 件

  ;---- 计算选项卡的高度和宽度 ----
  ;  按钮高度:(字体大小+1)*7//3 ==> 30
  ;  选项卡总高度:(按钮高度+20)*(5+1)  ==> 300
  ;  按钮限宽150,选项卡总宽度:150*3+15*4 ==> 510
  ;---- 每页放15个按钮,四页不够可以再加 ----

  Gui, Add, Tab2, w510 h300 vMyTab border, 第一页|第二页|第三页|第四页
  if A_IsCompiled
  {
    s:="脚本重启|脚本编辑|……"    ;-- 若要编译,请自己生成标签列表
  }
  else
  {
    FileRead, fs, %A_ScriptFullPath%
    s:=r:="", i:=1
    While i:=RegExMatch(fs,"\n\s*\[(\S+)\]:\s*\n",r,i+StrLen(r))
      s.=(s="") ? r1 : "|" . r1
    fs:=""
  }
  Loop, Parse, s, |
  {
    i:=A_Index, j:=Mod(i,3)=1 ? "xm+15 y+20" : "xp+165"
    if Mod(i,15)=1
      Gui, Tab, % i//15+1
    Gui, Add, Button, %j% r1 gAll_Run Hwndcid, %A_LoopField%
    GuiControlGet, p, Pos, %cid%
    if pW>150    ;-- 限制每个按钮的宽度最多为150
    {
      GuiControl, +Left, %cid%
      GuiControl, Move, %cid%, w150
    }
  }
  s=
  Gui, Tab
  Gui, Show, Hide AutoSize, (^_^)开心启动!--<<@

  ;----- 获取“酷狗音乐”按钮的位置 ------
  SetTitleMatchMode, 2
  ControlGetPos, x1, y1, w, h, 酷狗音乐
  kugou_x:=x1+w//2, kugou_y:=y1+h//2
}

;-- 以“酷狗音乐”按钮为中心显示,直接点击鼠标左键就运行
Gui, HappyRun: Default
GuiControl, Choose, MyTab, 1
GuiControl, Focus, 酷狗音乐     ;-- 方便按空格运行
GuiControl, +Default, 酷狗音乐  ;-- 方便按确定运行
x:=Round(x-kugou_x), y:=Round(y-kugou_y)
Gui, Show, x%x% y%y%
SetTimer, HappyRun_NA, 100
return

;-- 当界面窗口不激活就自动关闭
HappyRun_NA:
ListLines, Off
Gui, HappyRun: +LastFoundExist
IfWinActive
{
  if (!HappyRun_Active)
    HappyRun_Active:=1
}
else
{
  if (HappyRun_Active)
  {
    HappyRun_Active:=0
    WinHide
    SetTimer,, Off
  }
}
return

;-- 点击“新增软件”可以轻易扩展界面
Add_New:
Gui, Hide
if A_IsCompiled
{
  MsgBox, 4096,, 已编译程序不能新增软件!, 1
  return
}
FileSelectFile, f
IfNotExist, %f%
  return
SplitPath, f,,,, name
name:=r:=RegExReplace(name,"\s+","_")
While IsLabel("[" name "]")
  name:=r . A_Index
s=`n`n[%name%]:`nRunApp("%f%")`nreturn`n
FileAppend, %s%, %A_ScriptFullPath%
Sleep, 500
Reload
return

All_Run:
k:=Trim(A_GuiControl)
if k not in 增大音量,减小音量
{
  WinHide
  WinWaitNotActive
}
k=[%k%]
if IsLabel(k)
  Goto, %k%
return

Tip(s:="") {
  SetTimer, %A_ThisFunc%, % s="" ? "Off" : -2000
  ToolTip, %s%
}

RunApp(file, show=1) {
  SplitPath, file,, dir
  dir:=FileExist(dir "\") ? dir : ""
  s:=show ? "" : "Hide"
  Run, "%file%", %dir%, UseErrorLevel %s%
}

;==== 下面的按钮名称及功能都可以修改 ====


[脚本重启]:
SplitPath, A_ScriptName,,,, name
IfWinExist, %name% ahk_class Notepad
{
  PostMessage, 0x111, 3
  Sleep, 500
}
Reload
return


[脚本编辑]:
if !A_IsCompiled
  Run, notepad.exe "%A_ScriptFullPath%"
return


[查看运行]:
ListLines
return


[酷狗上一首]:
酷狗音乐("上一首")
return

酷狗音乐(命令)  ;-- 可靠性高的方法可以使用ACC
{
    SetTitleMatchMode, 2
    DetectHiddenWindows, On
    WinGet, List, List, 酷狗音乐 ahk_exe KuGou.exe
    IfLess, List, 1, return
    Loop, % List
    {
        id:=List%A_Index%
        WinGetPos,,, w, h, ahk_id %id%
        if (A_Index=1 or w*h>max)
            okid:=id, max:=w*h
    }
    ;-- 这种方法不支持最小化
    WinGetPos,,, w, h, ahk_id %okid%
    x:=InStr(命令,"上一首") ? w//2-50 : w//2+50, y:=h-35
    SetControlDelay, -1
    ControlClick, x%x% y%y%, ahk_id %okid%,,,, NA
}


[酷狗音乐]:
IfWinActive, ahk_exe KuGou.exe
{
  ;-- 酷狗在显示和隐藏之间切换
  WinClose
}
else
{
  ;-- 酷狗程序的路径需要重新设定
  RunApp("W:\影音软件\酷狗音乐\SW_PlayPlay.exe")
}
return


[酷狗下一首]:
酷狗音乐("下一首")
return


[增大音量]:
SoundSet, +5
SoundGet, i
Tip("当前音量:" Round(i))
return


[切换静音]:
SoundSet, +1,, mute
return


[减小音量]:
SoundSet, -5
SoundGet, i
Tip("当前音量:" Round(i))
return


[AHK帮助]:
path:=A_IsCompiled ? A_ScriptFullPath:A_AhkPath
SplitPath, path,, dir
Run, "%dir%\AutoHotkey.chm"
SetTitleMatchMode, 2
WinWait, 中文帮助,, 5
if !ErrorLevel
  WinMove, 0, 0
return


[AHK目录]:
dir:=A_IsCompiled ? A_ScriptDir : RegExReplace(A_AhkPath,"\\[^\\]*$")
Run, "%dir%\"
return


[AU3_Spy]:
oldx:=oldy:=""
While !WinExist("开心启动 ahk_class AutoHotkeyGUI")
{
  Sleep, 100
  MouseGetPos, x, y, id, class
  if (oldx=x and oldy=y)
    Continue
  oldx:=x, oldy:=y
  WinGetTitle, tt, ahk_id %id%
  WinGetClass, tc, ahk_id %id%
  WinGetPos, winx, winy, w, h, ahk_id %id%
  winx:=x-winx, winy:=y-winy
  ToolTip
    , % "屏幕坐标:" x "," y
    . "`n窗口坐标:" winx "," winy
    . "`n窗口宽高:" w "," h
    . "`n窗口标题:" RegExReplace(tt,"\s*(\S[^\r\n]*)[\s\S]*","$1")
    . "`n窗口类名:" "ahk_class " tc
    . "`n控件类名:" class
}
ToolTip
return


[记事本]:
Run, notepad.exe
return


[弹出U盘]:
DetectHiddenWindows, Off
Run, %A_WinDir%\System32\control.exe hotplug.dll
WinWait, 安全删除硬件,, 5
if ErrorLevel
  return
IfWinNotActive
{
  WinActivate
  WinWaitActive
}
BlockInput, SendAndMouse
ControlGet, i, Enabled,,Button2
if (i)
{
  ControlSend, SysTreeView321, {End}
  ControlSend, Button2, s
  WinWait, 停用硬件设备,, 5
  if !ErrorLevel
    ControlSend, Button1, {Enter}
}
BlockInput, Default
WinClose, 安全删除硬件
return


[计算器]:
Run, calc.exe
return


[快速关机]:
MsgBox, 4100, 请确认, 你真的想关机吗?
IfMsgBox, Yes
  Shutdown, 9
return


[开关光驱]:
Drive, Eject
if A_TimeSinceThisHotkey < 1000  ;-- 可能需要调整这个时间值
  Drive, Eject,, 1
return


[总在最前]:
Hotkey, $*LButton, _LButton_Off, On  ;-- 暂时屏蔽左键
SetTimer, Show_Tip, 30
KeyWait, LButton, D
KeyWait, LButton
MouseGetPos,,, id
WinSet, AlwaysOnTop,, ahk_id %id%
Hotkey, $*LButton, Off
SetTimer, Show_Tip, Off
ToolTip
_LButton_Off:
return
Show_Tip:
ListLines, Off
ToolTip, 请用鼠标左键点击想设置`n[或取消]总在最前的窗口
return

你可能感兴趣的:(AutoHotkey,知识总结)