|
|
拖动即是复制
逻辑是判断、输入框内闪烁的“工”形符号的光标,点击后马上粘贴
重复内容粘贴,直接跳过
- #SingleInstance Force
- #Warn All, Off
- SetWorkingDir A_ScriptDir
- ; ===================== 全局变量定义 =====================
- IsPaused := false
- ShowSkipWarning := true
- ; F8 控制的变量
- F9DragCopyMode := false
- F11AutoPasteMode := false
- ; F9 控制的变量
- GlobalWheelEnable := false
- dragStarted := false
- startX := 0, startY := 0
- LastClipboardContent := ""
- ; ===================== 提示函数 =====================
- ShowTip(Text, Duration := 850) {
- ToolTip(Text)
- SetTimer(ToolTip, -Duration)
- }
- ; =====================拖动复制 + 点击粘贴 ( F8 激活) =====================
- #HotIf (!IsPaused && F9DragCopyMode)
- ~LButton::
- {
- global dragStarted, startX, startY
- MouseGetPos(&startX, &startY)
- dragStarted := true
- }
- ~LButton Up::
- {
- global dragStarted, startX, startY
- if (dragStarted) {
- MouseGetPos(&endX, &endY)
- dragDistance := sqrt(Abs((endX - startX)**2 + (endY - startY)**2))
- dragStarted := false
- if (dragDistance > 10) {
- Send("^c") ; 复制
- ShowTip(" 已复制")
- }
- else {
- Sleep(100)
- ; 1. 检测 I 形光标
- isCursorIBeam := (A_Cursor == "IBeam")
- ; 2. 获取控件信息
- MouseGetPos(, , &hWin, &ClassNN)
- WinClass := WinGetClass("ahk_id " hWin)
- isEditControl := (InStr(ClassNN, "Edit") || InStr(ClassNN, "Rich") || InStr(ClassNN, "Scintilla") || InStr(ClassNN, "ComboBox") || InStr(ClassNN, "Thunder") || ClassNN = "DirectUIHWND" || InStr(ClassNN, "WPF"))
- isBrowser := (InStr(WinClass, "Chrome") || InStr(WinClass, "Edge") || InStr(WinClass, "CabinetWClass"))
- ; 3. 判定是否粘贴
- if (isCursorIBeam || isEditControl || isBrowser) {
- global LastClipboardContent, ShowSkipWarning
- ; 【防重复】仅当剪切板有变动时粘贴
- if (A_Clipboard != "" && A_Clipboard != LastClipboardContent) {
- Send("^v")
- LastClipboardContent := A_Clipboard
- ShowTip("已粘贴")
- } else if (A_Clipboard == LastClipboardContent) {
- ; 【新增判断】只有在 ShowSkipWarning 为 true 时才提示
- if (ShowSkipWarning)
- ShowTip("⚠️重复内容跳过")
- }
- }
- }
- }
- return
- }
- #HotIf
- ; ===================== 滚轮功能 ( F9 激活) =====================
- #HotIf (!IsPaused && GlobalWheelEnable)
- WheelUp::Send("^c"), ShowTip("✅ 滚轮向上▲复制成功")
- WheelDown::Send("^v"), ShowTip("✅ 滚轮向下▼粘贴成功")
- #HotIf
- ; ===================== 所有功能暂停或恢复 =====================
- `::
- Tray_PauseResume(*) {
- global IsPaused
- Pause(!IsPaused)
- IsPaused := !IsPaused
- if (IsPaused) {
- ShowTip("⏸️ 所有功能已暂停")
- } else {
- ShowTip("▶️ 所有功能已恢复")
- }
- }
- ; F9 专门开关:开启 滚轮
- F9::Tray_WheelSwitch()
- Tray_WheelSwitch(*) {
- global GlobalWheelEnable
- GlobalWheelEnable := !GlobalWheelEnable
- if (GlobalWheelEnable) {
- ShowTip("🔄 滚轮模式已开启:`n滚轮上 ▲ 复制`n滚轮下 ▼ 粘贴", 2000)
- } else {
- ShowTip("⛔ 滚轮模式已关闭")
- }
- }
- ; F8 主控开关:开启 拖动+点击
- F8::
- Tray_MasterSwitch(*) {
- global F9DragCopyMode, F11AutoPasteMode
- F9DragCopyMode := !F9DragCopyMode
- F11AutoPasteMode := F9DragCopyMode ; 同步状态
- if (F9DragCopyMode) {
- ShowTip("🚀 智能鼠标模式已开启:`n1. 拖动文本自动复制`n2. 点击输入框自动粘贴", 3000)
- } else {
- ShowTip("⭕ 智能鼠标模式已关闭")
- }
- }
- ; ===================== 重复提示开关函数 =====================
- Tray_SkipWarningToggle(*) {
- global ShowSkipWarning
- ShowSkipWarning := !ShowSkipWarning
- if (ShowSkipWarning) {
- ShowTip("✅ 重复提示已开启")
- } else {
- ShowTip("❌ 重复提示已关闭")
- }
- }
- ; ===================== LWin 拖动复制 (备用:仅复制) =====================
- #HotIf (!IsPaused && F9DragCopyMode)
- LWin::
- {
- global dragStarted, startX, startY
- Send("{LButton Down}")
- MouseGetPos(&startX, &startY)
- dragStarted := true
- KeyWait("LWin")
- Send("{LButton Up}")
- if (dragStarted) {
- MouseGetPos(&endX, &endY)
- dragDistance := sqrt(Abs((endX - startX)**2 + (endY - startY)**2))
- if (dragDistance > 10) {
- Send("^c")
- ShowTip("✅ 已复制")
- }
- dragStarted := false
- startX := 0, startY := 0
- }
- }
- #HotIf
- ; ===================== 托盘菜单实现 =====================
- 创建托盘菜单() {
- A_TrayMenu.Delete()
- A_TrayMenu.Add("暂停/继续 (~)在ESC下面", Tray_PauseResume)
- A_TrayMenu.Add("拖动复制/点击粘贴 (F8) ", Tray_MasterSwitch)
- A_TrayMenu.Add("滚轮上复制/下粘贴 (F9) ", Tray_WheelSwitch)
- A_TrayMenu.Add("重复文本提示开关", Tray_SkipWarningToggle)
- A_TrayMenu.Add()
- A_TrayMenu.Add("退出脚本", (*) => ExitApp())
- TraySetIcon(A_IsCompiled ? A_ScriptFullPath : A_AhkPath)
- TrayTip("复制粘贴增强脚本", "▶️ 已运行`nF8: 鼠标模式`nF9: 滚轮模式", 1000)
- }
- 创建托盘菜单()
复制代码
|
|