aahk

概览

发布的

订单

邀请码

关注

粉丝

收藏

设置

  • 一般情况下用不到。类和对象都懒得用,基本都用函数。估计今后也不会用到

    给AHKV2提供yield协程支持
  • 通过修改“AHK右键菜单管理器”的脚本源代码并用 7z SFX Builder v2.5.0.5 可以打包成:

    AutoHotkey_1.1.37.02 单文件全自动静默安装包

    gosub, Install

    AHK_Path:="D:APPAutoHotkeyAutoHotkey.exe"
    Compiler_Path:="D:APPAutoHotkeyCompilerAhk2Exe.exe"
    Editor_Path:="D:APPAutoHotkeySciTESciTE.exe"

    1.5AutoHotKey下载、安装及环境配置
  • 进行屏幕分辨率自适应调整

    unit uMyClassHelpers;

    interface
    uses
    SysUtils,
    Windows,
    Classes,
    Graphics,
    Controls,
    Forms,
    Dialogs,
    Math,

    Typinfo;

    const

    OriWidth = 800;
    OriHeight = 600;

    type
    TfmForm = class(TForm)
    private
    fScrResolutionRateW: Double;
    fScrResolutionRateH: Double;
    fIsFitDeviceDone: Boolean;
    procedure FitDeviceResolution;
    protected
    property IsFitDeviceDone: Boolean read fIsFitDeviceDone;
    property ScrResolutionRateH: Double read fScrResolutionRateH;
    property ScrResolutionRateW: Double read fScrResolutionRateW;
    public
    constructor Create(AOwner: TComponent); override;
    end;
    TfdForm = class(TfmForm)
    protected
    fIsDlgChange: Boolean;
    public
    constructor Create(AOwner: TComponent); override;
    property IsDlgChange: Boolean read fIsDlgChange default false;
    end;
    implementation

    constructor TfmForm.Create(AOwner: TComponent);
    begin
    inherited Create(AOwner);
    fScrResolutionRateH := 1;
    fScrResolutionRateW := 1;
    try
    if not fIsFitDeviceDone then
    begin
    FitDeviceResolution;
    fIsFitDeviceDone := True;
    end;
    except
    fIsFitDeviceDone := False;
    end;
    end;

    function PropertyExists(const AObject: TObject; const APropName: string):
    Boolean;

    var
    PropInfo : PPropInfo;
    begin
    PropInfo := GetPropInfo(AObject.ClassInfo, APropName);
    Result := Assigned(PropInfo);
    end;

    function GetObjectProperty(
    const AObject: TObject;
    const APropName: string
    ): TObject;
    var
    PropInfo : PPropInfo;
    begin
    Result := nil;
    PropInfo := GetPropInfo(AObject.ClassInfo, APropName);
    if Assigned(PropInfo) and
    (PropInfo^.PropType^.Kind = tkClass) then
    Result := GetObjectProp(AObject, PropInfo);
    end;

    procedure TfmForm.FitDeviceResolution;
    var
    LocList : TList;
    LocFontRate : Double;
    LocFontSize : Integer;
    LocFont : TFont;
    locK : Integer;

    procedure CalBasicScalePars;
    begin
    try
    Self.Scaled := False;
    fScrResolutionRateH := screen.height / OriHeight;
    fScrResolutionRateW := screen.Width / OriWidth;
    LocFontRate := Min(fScrResolutionRateH, fScrResolutionRateW);
    except
    raise;
    end;
    end;

    procedure ControlsPostoList(vCtl: TControl; vList: TList);
    var
    locPRect : ^TRect;
    i : Integer;
    locCtl : TControl;
    begin
    try
    New(locPRect);
    locPRect^ := vCtl.BoundsRect;
    vList.Add(locPRect);
    if vCtl is TWinControl then
    for i := 0 to TWinControl(vCtl).ControlCount - 1 do
    begin
    locCtl := TWinControl(vCtl).Controls[i];
    ControlsPosToList(locCtl, vList);
    end;
    except
    raise;
    end;
    end;

    procedure AdjustControlsScale(vCtl: TControl; vList: TList; var vK: Integer);
    var
    locOriRect, LocNewRect: TRect;
    i : Integer;
    locCtl : TControl;
    begin
    try
    if vCtl.Align alClient then
    begin
    locOriRect := TRect(vList.Items[vK]^);
    with locNewRect do
    begin
    Left := Round(locOriRect.Left * fScrResolutionRateW);
    Right := Round(locOriRect.Right * fScrResolutionRateW);
    Top := Round(locOriRect.Top * fScrResolutionRateH);
    Bottom := Round(locOriRect.Bottom * fScrResolutionRateH);
    vCtl.SetBounds(Left, Top, Right - Left, Bottom - Top);
    end;
    end;
    Inc(vK);
    if vCtl is TWinControl then
    for i := 0 to TwinControl(vCtl).ControlCount - 1 do
    begin
    locCtl := TWinControl(vCtl).Controls[i];
    AdjustControlsScale(locCtl, vList, vK);
    end;
    except
    raise;
    end;
    end;

    procedure AdjustComponentFont(vCmp: TComponent);
    var
    i : Integer;
    locCmp : TComponent;
    begin
    try
    for i := vCmp.ComponentCount - 1 downto 0 do
    begin
    locCmp := vCmp.Components[i];
    if PropertyExists(LocCmp, 'FONT') then
    begin
    LocFont := TFont(GetObjectProperty(LocCmp, 'FONT'));
    LocFontSize := Round(LocFontRate * LocFont.Size);
    LocFont.Size := LocFontSize;
    end;
    end;
    except
    raise;
    end;
    end;

    procedure FreeListItem(vList: TList);
    var
    i : Integer;
    begin
    for i := 0 to vList.Count - 1 do
    Dispose(vList.Items[i]);
    vList.Free;
    end;
    begin
    LocList := TList.Create;
    try
    try
    if (Screen.width OriWidth) or (Screen.Height OriHeight) then
    begin
    CalBasicScalePars;
    AdjustComponentFont(Self);
    ControlsPostoList(Self, locList);
    locK := 0;
    AdjustControlsScale(Self, locList, locK);
    end;
    except on E: Exception do
    raise Exception.Create('进行屏幕分辨率自适应调整时出现错误' +
    E.Message);
    end;
    finally
    FreeListItem(locList);
    end;
    end;

    constructor TfdForm.Create(AOwner: TComponent);
    begin
    inherited;
    fIsDlgChange := False;
    end;
    end.

    屏幕缩放、DPI 和使脚本在不同的计算机中工作
  • ; 某网页单据打印辅助AutoHotkey v1.0脚本,本来打印单据需要用鼠标点击多次,
    ; 运行此脚本之后只需在输入完毕后按快捷键热键
    ; 为了便于寻找快捷键位置,我在F4键的键帽上贴了黄色贴纸
    ; 可用 AHKInfo 1.3.5 或者 AhkSpy 等窗口信息探测工具来获取鼠标光标的当前位置
    ; 2025-03-31

    ; 由于"【函数】FindText中文版- 屏幕抓字生成字库工具与找字函数"比较复杂,创建和使用脚本麻烦
    ; 所以我使用 MouseMove、Click和Sleep这3个AHK原生语句来制作此脚本,
    ; 这3个内置函数语句的优点是性能速度快,效率高,稳定可靠(有时候FindText在不同电脑上会找不到位图),
    ; 这3个内置函数语句的缺点是环境适应性差,不同显示器,不同显卡,不同电脑,不同分辨率下的全局坐标可能会不同,需要重写代码.
    ; 这3个内置函数语句的缺点是需要窗口最大化,窗口位置固定,否则有可能点击不到网页中的按钮.
    ; 我这边网页平台系统只要多次鼠标点击写到1个快捷键热键就可以了,只要能够长期稳定使用就可以了,要求不高.
    ; 所以我也不想再根据屏幕分辨率 DPI 缩放修正通用全局坐标了,不折腾了,只要一个电脑上能用就好了,
    ; 并且我这个Windows 10 企业版 LTSC 电脑用Acronis True Image 2021 在USM v5下备份了系统分区,
    ; 并且正确安装设置了Deep Freeze Standard冰点还原精灵保护电脑第1分区系统分区C盘.

    ; xx=% "x" 397*A_ScreenDPI//96
    ; yy=" y" 63*A_ScreenDPI//96
    ; MouseMove,xx,yy

    ;;;;;;;点击窗口内指定坐标 【DPI缩放通用坐标修正】
    ; ControlClick, % "x" 397*A_ScreenDPI//96 " y" 63*A_ScreenDPI//96, D:APPF4F4.ahk * SciTE4AutoHotkey ahk_class SciTEWindow

    ; FindText 深度教程 v1.2
    ; https://www.autoahk.com/archives/41636
    ; https://www.autoahk.com/archives/47248
    ; https://www.autoahk.com/archives/39249
    ; https://www.autoahk.com/archives/28493

    ; 设置每次鼠标移动或点击后自动的延时.
    SetMouseDelay,0
    SetKeyDelay,0
    SetControlDelay,0
    SetWinDelay,0
    ; 把 Click, MouseMove, MouseClick 放置在绝对的屏幕坐标上.
    CoordMode, Mouse, Screen
    ; 设置脚本可以 "看见" 隐藏的窗口.
    DetectHiddenWindows, On
    ; 按快捷键 Ctrl + F4 立即退出此脚本
    Hotkey,^F4,ExitPrintHMF
    Hotkey,F4,PrintHMF
    return
    ExitPrintHMF()
    {
    ExitApp
    }
    PrintHMF()
    {
    ; MsgBox
    ;第1步:点击 提交保存网页按钮
    Sleep,55
    MouseMove,1030,1007
    Sleep,55
    MouseMove,1030,1007
    Sleep,333
    Sleep,55
    Click
    Sleep,55
    Sleep,333

    ;第2步:点击 打印预览网页按钮
    Sleep,55
    MouseMove,1064,666
    Sleep,55
    MouseMove,1064,666
    Sleep,333
    Sleep,55
    Click
    Sleep,55

    ;第3步:点击 打印网页按钮
    ; 等待"打印预览"窗口创建并显示,"打印预览"窗口不是对话框,是新的窗口,显示比较慢。
    ; 先移动鼠标光标到目标坐标位置,然后再等待
    Sleep,55
    MouseMove,455,37
    Sleep,55
    MouseMove,455,37
    Sleep,333
    Sleep,333
    Sleep,333
    Sleep,333
    Sleep,333
    Sleep,55
    Click
    Sleep,55
    Sleep,333

    ;第4步:点击 确定对话框按钮
    Sleep,55
    MouseMove,1090,538
    Sleep,55
    MouseMove,1090,538
    Sleep,333
    Sleep,55
    Click
    Sleep,55
    Sleep,333

    ;第5步:点击 关闭网页按钮
    Sleep,55
    MouseMove,495,37
    Sleep,55
    MouseMove,495,37
    Sleep,333
    Sleep,55
    Click
    Sleep,55
    Sleep,333

    ;第6步:点击 取消网页按钮
    Sleep,55
    MouseMove,1152,665
    Sleep,55
    MouseMove,1152,665
    Sleep,333
    Sleep,333
    Sleep,55
    Click
    Sleep,55

    ;第7步:点击 收费方式网页下拉列表单选框
    Sleep,55
    MouseMove,507,478
    Sleep,55
    MouseMove,507,478
    Sleep,333
    Sleep,333
    Sleep,55
    Click
    Sleep,55
    Sleep,333

    ;第8步:点击 微信
    Sleep,55
    MouseMove,496,559
    Sleep,55
    MouseMove,496,559
    Sleep,333
    Sleep,55
    Click
    Sleep,55
    Sleep,333

    ;第9步:点击 位置/姓名 搜索框网页控件
    Sleep,55
    MouseMove,484,237
    Sleep,55
    MouseMove,484,237
    Sleep,333
    Sleep,55
    Click
    Sleep,55
    Sleep,333

    ;第10步:发送 Ctrl + A 全选搜索框中原有的内容,为下一次筛选搜索过滤记录行做好输入准备。
    Sleep,55
    Send,^a
    Sleep,55
    }

    屏幕找图鼠标光标移到到目标坐标位置辅助AutoHotkey v1.0脚本示例,键盘上的快捷键键帽已经贴黄纸提示使得快捷键易找易按 2025-04-06
  • 2025-03-10-快速全文搜索电脑和手机文件的正文内容

    快速搜索 Quick Search https://www.glarysoft.com/
    闪电搜索 ShanDian FindPro http://www.shandian.so/

    FileLocator Pro https://www.mythicsoft.com/
    Archivarius 3000 http://www.likasoft.com/
    Anytxt Searcher https://anytxt.net.cn/
    WizFile https://antibody-software.com/wizfile/?ref=WizFile
    Everything https://www.voidtools.com/
    UltraSearch Professional https://www.jam-software.com/
    MasterSeeker http://www.master-seeker.com/
    安德闪电文件搜索 http://cn.antlertek.com/

    Everything 安卓版
    Anything 安卓版
    AnySearch 安卓版
    黑盒闪搜 安卓版
    快速搜索 安卓版

    2025-03-10-快速全文搜索电脑和手机文件的正文内容
  • UltraSearch Professional https://www.jam-software.com/

    2025-03-10-快速全文搜索电脑和手机文件的正文内容
  • 2025-03-10-快速全文搜索电脑和手机文件的正文内容

    FileLocator Pro https://www.mythicsoft.com/
    Archivarius 3000 http://www.likasoft.com/
    Anytxt Searcher https://anytxt.net.cn/
    WizFile https://antibody-software.com/wizfile/?ref=WizFile
    Everything https://www.voidtools.com/
    闪电搜索 ShanDian FindPro http://www.shandian.so/
    MasterSeeker http://www.master-seeker.com/
    安德闪电文件搜索 http://cn.antlertek.com/

    Everything 安卓版
    Anything 安卓版
    AnySearch 安卓版
    黑盒闪搜 安卓版
    快速搜索 安卓版

    2025-03-10-快速全文搜索电脑和手机文件的正文内容
  • UltraSearch Professional Version 4.2.0.925 64位 可以快速筛选出大文件(例如:所有大于100MB的文件)
    然后鼠标拖放找到的文件到DuplicateFileFinderPlus_21.0.8.7_Green
    DuplicateFileFinderPlus_21.0.8.7_Green能够设置成抽样比较模式从而快速找出重复文件

    UltraSerch筛选文件比较快速,DuplicateFileFinderPlus的抽样比较查找重复文件也比较快速,
    所以,此方法查找并清理大量重复文件时比较快速

    超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日
  • ; 辅助DuplicateFileFinderPlus_21.0.8.7_Green删除重复文件
    ; 用法:运行此AHK脚本后按F4开始删除重复文件,按Ctrl+F4退出脚本
    Hotkey,$^F4,ExitAppNow
    Hotkey,F4,DeleteFiles
    return
    DeleteFiles()
    {
    SetTimer,DeleteDuplicateFiles,100
    }
    DeleteDuplicateFiles()
    {
    Send,{Enter}
    Send,#{Delete}
    }
    ExitAppNow()
    {
    ExitApp
    }

    超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日
  • ; 如果找到"我的云文档"字样表示已经登录成功,直接退出脚本
    ; 操作需要等待窗口或者控件的出现就用LOOP循环,IF判断和SLEEP等待
    ; 操作有先后顺序关系就用大括号嵌套各层操作
    ; 不同电脑,不同显卡,不同屏幕分辨率下显示的图片不同就在不同电脑上多抓几次图,同时并行查找搜索FindText多个图片
    ; 需要并行同时多个操作时请使用SetTimer语句,以指定的时间间隔自动并重复运行子程序.
    ; 需要并行同时多个操作时不要用LOOP循环,loop循环无法并行执行多个操作

    【函数】FindText中文版- 屏幕抓字生成字库工具与找字函数
个人中心
购物车
优惠劵
有新私信 私信列表
搜索