สคริปต์ AHK เพื่อแทนที่เนื้อหาของคลิปบอร์ดโดยอัตโนมัติ


5

เมื่อฉันเขียนสคริปต์ AHK เช่นนี้:

::abc::alphabet

มันใช้งานได้เหมือนมีเสน่ห์ สิ่งเดียวคือเมื่อฉันต้องการส่วนที่คัดลอกข้อความ (สิ่งที่มีสิ่งที่ฉันต้องการแทนที่อัตโนมัติ) มันไม่ต้องการแทนที่

ตัวอย่างเช่น:

!INS::{Ctrl Down}c{Ctrl Up}{Tab 2}{Enter}{Ctrl Down}v{Ctrl Up}

ให้ฉันคัดลอกabcแต่เมื่อวางแล้วฉันไม่ได้รับalphabet(ตามที่นิยามไว้ก่อนหน้านี้)

มีวิธีที่จะทำให้มันแทนที่คำที่ถูกคัดลอกและวางหรือไม่? เช่นเมื่อฉันใช้sendคำสั่งเพื่อส่งคำหรือบางคำที่มีคำที่ฉันต้องการแทนที่อัตโนมัติ?

คำตอบ:


9

Hotstringsมีผลกับสิ่งที่คุณพิมพ์เท่านั้น ในการค้นหาและแทนที่บนคลิปบอร์ดคุณสามารถใช้คำสั่งRegExReplace

ด้านล่างเป็นสคริปต์ที่คัดลอกข้อความที่เลือกแล้ววางเนื้อหาที่แก้ไข (หลังจากค้นหาและแทนที่) ฉันเชื่อว่านี่คือสิ่งที่คุณหมายถึง:

#x:: ;[Win]+[X]

;Empty the Clipboard.
    Clipboard =
;Copy the select text to the Clipboard.
    SendInput, ^c
;Wait for the Clipboard to fill.
    ClipWait

;Perform the RegEx find and replace operation,
;where "ABC" is the whole-word we want to replace.
    haystack := Clipboard
    needle := "\b" . "ABC" . "\b"
    replacement := "XYZ"
    result := RegExReplace(haystack, needle, replacement)

;Empty the Clipboard
    Clipboard =
;Copy the result to the Clipboard.
    Clipboard := result
;Wait for the Clipboard to fill.
    ClipWait

;-- Optional: --
;Send (paste) the contents of the new Clipboard.
    SendInput, %Clipboard%

;Done!
    return
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.