幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!
一般情况下用不到。类和对象都懒得用,基本都用函数。估计今后也不会用到
通过修改“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"
进行屏幕分辨率自适应调整
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.
; 某网页单据打印辅助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
}
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 安卓版
黑盒闪搜 安卓版
快速搜索 安卓版
UltraSearch Professional https://www.jam-software.com/
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 安卓版
黑盒闪搜 安卓版
快速搜索 安卓版
UltraSearch Professional Version 4.2.0.925 64位 可以快速筛选出大文件(例如:所有大于100MB的文件)
然后鼠标拖放找到的文件到DuplicateFileFinderPlus_21.0.8.7_Green
DuplicateFileFinderPlus_21.0.8.7_Green能够设置成抽样比较模式从而快速找出重复文件
UltraSerch筛选文件比较快速,DuplicateFileFinderPlus的抽样比较查找重复文件也比较快速,
所以,此方法查找并清理大量重复文件时比较快速
; 辅助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
}
; 如果找到"我的云文档"字样表示已经登录成功,直接退出脚本
; 操作需要等待窗口或者控件的出现就用LOOP循环,IF判断和SLEEP等待
; 操作有先后顺序关系就用大括号嵌套各层操作
; 不同电脑,不同显卡,不同屏幕分辨率下显示的图片不同就在不同电脑上多抓几次图,同时并行查找搜索FindText多个图片
; 需要并行同时多个操作时请使用SetTimer语句,以指定的时间间隔自动并重复运行子程序.
; 需要并行同时多个操作时不要用LOOP循环,loop循环无法并行执行多个操作