Script AHK para substituir automaticamente o conteúdo da área de transferência

3

Quando escrevo um script AHK assim:

::abc::alphabet

Funciona como charme. A única coisa é, quando eu quero uma parte copiada do texto, (algo que inclui coisas que eu quero que sejam substituídas automaticamente), não quer substituí-lo.

Por exemplo:

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

Deixa-me copiar abc , mas quando é colado, não recebo alphabet (como definido anteriormente).

Existe uma maneira de substituir as palavras copiadas e coladas? Como quando eu uso o comando send para enviar uma linha ou algumas palavras que incluem uma palavra que eu gostaria de substituir automaticamente?

    
por Michel 26.04.2012 / 21:08

1 resposta

7

Hotstrings afetam apenas o que você digita fisicamente. Para pesquisar e substituir na Área de Transferência , use o comando RegExReplace .

Abaixo está um script que copia o texto selecionado e depois cola o conteúdo modificado (depois de pesquisar e substituir). Eu acredito que isso é o que você quis dizer:

#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
    
por 27.04.2012 / 06:13

Tags