脚本辅助调试器

/*
http://ahkscript.org/boards/viewtopic.php?f=28&t=4721
Script Name: ScriptManager.ahk
Version: 0.1.00.12
Author: amnesiac
 
若无法运行,请下载安装最新的 AutoHotkey 版本。
这是测试版,不保证所有功能都能正常使用,请自负风险。
在操作脚本前,建议先刷新,程序在操作前不会去自动判断脚本是否存在或处于哪种状态(可能从外部被修改了)。
*/
#NoEnv
SetTitleMatchMode 2
DetectHiddenWindows On
SetWorkingDir, %A_ScriptDir%
Menu, Tray, Icon, Shell32.dll, 81
WM_COMMAND := 0x111
; 下面这些消息号提取自 AutoHotkey_L 源代码。
ID_FILE_RELOADSCRIPT := 65400
ID_FILE_EDITSCRIPT := 65401
 
ID_FILE_PAUSE := 65403
ID_FILE_SUSPEND := 65404
ID_FILE_EXIT := 65405
ID_VIEW_LINES := 65406
ID_VIEW_VARIABLES := 65407
ID_VIEW_HOTKEYS := 65408
 
ThisWndName := "脚本调试辅助器"
ThisVersion := "0.1.00.12"
ThisAuthor := "amnesiac"
 
MyAhkVersion := "AutoHotkey " (A_IsUnicode ? "Unicode" : "ANSI") " " ((A_PtrSize = 4) ? "32-bit" : "64-bit" ) " " A_AhkVersion
 
gosub, CreateGUI
gosub, RefreshList
gosub, UpdateSB
return
 
CreateGUI:
Gui +LastFound
Gui, Font, s10
Gui, Add, GroupBox, x452 ym w100 h180 , 查看
Gui, Add, Button, x462 y20 w80 r1 gOperateScript vID_FILE_EDITSCRIPT, 编辑(&E)
Gui, Add, Button, x462 y60 w80 r1 gOperateScript vID_VIEW_LINES, 历史(&L)
Gui, Add, Button, x462 y100 w80 r1 gOperateScript vID_VIEW_VARIABLES, 变量(&V)
Gui, Add, Button, x462 y140 w80 r1 gOperateScript vID_VIEW_HOTKEYS, 热键(&K)
Gui, Add, GroupBox, x452 y190 w100 h180 , 操作
Gui, Add, Button, x462 y210 w80 r1 gOperateScript vID_FILE_PAUSE, 暂停(&P)
Gui, Add, Button, x462 y250 w80 r1 gOperateScript vID_FILE_SUSPEND, 挂起(&S)
Gui, Add, Button, x462 y290 w80 r1 gOperateScript vID_FILE_RELOADSCRIPT, 重启(&R)
Gui, Add, Button, x462 y330 w80 r1 gOperateScript vID_FILE_EXIT, 退出(&X)
Gui, Add, ListView, xm ym+10 w430 +R20 AltSubmit gThisLVSub HwndThisLVHwnd, 窗口句柄|脚本名|暂停|挂起|脚本路径
Gui, Add, Button, x62 y400 w80 r1 gSelectAll, 全选(&A)
Gui, Add, Button, x162 y400 w80 r1 gInvertSelection, 反选
Gui, Add, Button, x262 y400 w80 r1 gSelectNone, 不选
Gui, Add, Button, x362 y400 w80 r1 gRefreshList, 刷新
Gui, Add, Button, x462 y400 w80 r1 gAboutScriptManager, 关于
Gui, Add, StatusBar
SB_SetParts(120, 120)
SB_SetText(MyAhkVersion, 3)
 
Gui, Show, AutoSize, %ThisWndName% %ThisVersion% by %ThisAuthor%
return
 
GuiClose:
ExitApp
 
OperateScript:
RowNumber := 0
Loop, % LV_GetCount("Selected")
{
    RowNumber := LV_GetNext(RowNumber)
    if !RowNumber
        break
    LV_GetText(CurrentWnd, RowNumber, 1)
    CurrentCommand := %A_GuiControl%
    PostMessage, %WM_COMMAND%, %CurrentCommand%,,, ahk_id %CurrentWnd%  
}
if (A_GuiControl = "ID_FILE_RELOADSCRIPT")  
    Sleep, 500
gosub, RefreshList
gosub, UpdateSB
return
 
SelectAll:
LV_Modify(0, "Select")  
gosub, UpdateSB
return
 
InvertSelection:
Loop % LV_GetCount()
{
    wParam := A_Index - 1
    SendMessage, 0x102C, %wParam%, 0x2,, ahk_id %ThisLVHwnd% 
    if ErrorLevel
        LV_Modify(A_Index, "-Select")
    else
        LV_Modify(A_Index, "Select")
}
gosub, UpdateSB
return
 
SelectNone:
LV_Modify(0, "-Select")  ; 取消选择所有。
gosub, UpdateSB
return
 
RefreshList:
LV_Delete()
WinGet, AHKWinList, List, ahk_class AutoHotkey 
Loop, %AHKWinList%
{
 
    AHKWinHWND := AHKWinList%A_Index%
 
    WinGetTitle, AHKWinTitle, ahk_id %AHKWinHWND%
    ScriptPathName := RegExReplace(AHKWinTitle, " - AutoHotkey v[d.]+?$")
    SplitPath, ScriptPathName, ScriptName, ScriptDir
    LV_Add("", AHKWinHWND, ScriptName, IsPaused(AHKWinHWND), IsSuspended(AHKWinHWND), ScriptDir)
}
LV_ModifyCol(1, "Integer Sort") 
LV_ModifyCol()
gosub, UpdateSB
return
 
AboutScriptManager:
MsgBox, 4160, 关于, 感谢使用,在使用过程中遇到问题或有相关建议请至官方论坛反馈。`n官方论坛网址(中文版在下方):http://ahkscript.org/boards/
return
 
ThisLVSub:
UpdateSB:
RowNumber := SeletedNum := 0
Loop, % LV_GetCount("Selected")
{
    RowNumber := LV_GetNext(RowNumber)
    if !RowNumber
        break
    SeletedNum++
}
SB_SetText("已选脚本数:" SeletedNum, 1)
SB_SetText("总脚本数:" LV_GetCount(), 2)
return
 
; SKAN: http://www.autohotkey.com/board/topic/30277-/#entry192925
; Lexikos: http://www.autohotkey.com/forum/viewtopic.php?p=142697#142697
IsPaused(hWnd) {
    static MF_CHECKED := 0x8
    static WM_ENTERMENULOOP := 0x211
    static WM_EXITMENULOOP := 0x212
    SendMessage, WM_ENTERMENULOOP,,,, ahk_id %hWnd%
    SendMessage, WM_EXITMENULOOP, ,,, ahk_id %hWnd%
    hMenu := DllCall("GetMenu", "uint", hWnd)
    hMenu := DllCall("GetSubMenu", "uint", hMenu, "int", 0)
    return (DllCall("GetMenuState", "uint", hMenu, "uint", 4, "uint", 0x400) & MF_CHECKED) && true
}
 
IsSuspended(hWnd) {
    static MF_CHECKED := 0x8
    hMenu := DllCall("GetMenu", "uint", hWnd)
    hMenu := DllCall("GetSubMenu", "uint", hMenu, "int", 0)
    return !!(DllCall("GetMenuState", "uint", hMenu, "uint", 5, "uint", 0x400) & MF_CHECKED)
}

给TA捐赠
共{{data.count}}人
人已捐赠
其他

脚本管理器学习时练习用

2020-3-9 4:56:44

其他

腾讯新闻屏蔽

2020-3-9 4:58:44

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索