在Autohotkey中发送包含两个变量的剪贴板内容

时间:2015-08-11 04:00:24

标签: autohotkey

使用Autohotkey,Id喜欢连接variable1,剪贴板内容和variable2。

例如,如果:

  1. variable1 = https://example.com/somepage.php?command=details&reservationId=
  2. 剪贴板内容 = 12345
  3. variable2 = &url=%2Fsomepage.php%3submit%3DSEARCH%26submit
  4. 预期结果将是:

    https://example.com/somepage.php?command=details&reservationId=12345&url=%2Fsomepage.php%3submit%3DSEARCH%26submit

    下面显示的两种方法只输出 12345

    我做错了什么?

    尝试1:

    ::hd-eurl::
     ClipSaved := ClipboardAll       ; get clipboard
     variable1:= "https://example.com/somepage.php?command=details&reservationId="
     variable2:= "&url=%2Fsomepage.php%3submit%3DSEARCH%26submit"
     ClipNew =  %variable1% . ClipSaved . %variable2%
     clipboard = ClipNew 
     ClipWait
     Send, ^v
     clipboard := ClipSaved       ; restore original clipboard
     return
    

    尝试2:

    ::hd-eurl::
     Send ^c
     ClipSaved := ClipboardAll       ; get clipboard
     variable1= https://example.com/somepage.php?command=details&reservationId=
     variable2= &url=`%2Fsomepage.php`%3submit`%3DSEARCH`%26submit
     ClipNew =  variable1 . ClipSaved . variable2
     clipboard = ClipNew 
     ClipWait
     Send, ^v
     clipboard := ClipSaved       ; restore original clipboard
     return
    

    更新(结果相同):

    ::hd-eurl::
     ClipSaved := ClipboardAll       ; get clipboard
     variable1:= "https://example.com/somepage.php?command=details&reservationId="
     variable2:= "&url=%2Fsomepage.php%3submit%3DSEARCH%26submit"
     ClipNew :=  variable1 . ClipSaved . variable2
     clipboard := ClipNew 
     ClipWait
     Send, ^v
     clipboard := ClipSaved       ; restore original clipboard
     return
    

    工作解决方案

    这就是我最终让它发挥作用的方式。但是,Blauhirn在所选答案中的方法使用起来要简单得多。

    ::hd-eurl::
     ClipSaved := ClipboardAll       ; store clipboard backup 
     variable1:= "https://example.com/somepage.php?command=details&reservationId="
     variable2=  %ClipBoard%
     ClipBoard =
     variable3:= "&url=%2Fsomepage.php%3submit%3DSEARCH%26submit"
     variable4:=  variable1 . variable2 . variable3
     Clipboard:= variable4
     ClipWait 
     Send, ^v
     Clipboard := ClipSaved       ; restore original clipboard
     return
    

2 个答案:

答案 0 :(得分:2)

您的clipSaved变量包含clipboardAllDocumentation说:

  

已分配ClipboardAll的变量采用二进制格式,因此在使用MsgBox或类似内容时显示为乱码。

分配到clipboard时,您必须使用clipNew,例如

 ClipNew := variable1 . clipboard . variable2

除此之外,我建议你根本不修改clipboard的内容,因为这是最复杂的方法。如果你想发送一些内容,只需使用字符串上的send command而不是调用 CTRL + V

::hd-eurl::
    variable1:= "https://example.com/somepage.php?command=details&reservationId="
    variable2:= "&url=%2Fsomepage.php%3submit%3DSEARCH%26submit"
    send % variable1 clipboard variable2
return

答案 1 :(得分:1)

正确的语法是

ClipNew :=  variable1 . ClipSaved . variable2

ClipNew =  %variable1%%ClipSaved%%variable2%

Variables and expressions

也修改此行

clipboard := ClipNew
相关问题