;~如何区分剪贴板中是文本还是文件?
;~ ctrl+c后,如果数据是文本的话,clipboardall比clipboard长13个字符,如果是文件的话,大于13个字符。。
IsText:=false
Select := Clipboard,
SelectAll := ClipboardAll
Clipboard := ClipboardBackup
If (Strlen(SelectAll)-Strlen(Select)) //13==0
IsText := True
MsgBox, 262208, 剪贴板内容是:,% IsText?"文件":"文本" , 2
怎么知道选中的上文本或选中的是图片?
答:放到剪贴板中再判断!
#z::
if DllCall( "IsClipboardFormatAvailable", "UInt", 1)
MsgBox 文本
If DllCall("IsClipboardFormatAvailable", "Uint", 2)
MsgBox BMP图片
if DllCall( "IsClipboardFormatAvailable", "UInt", 15)
MsgBox 文件
return
fmt =
(
CF_TEXT , 1
CF_BITMAP , 2
CF_METAFILEPICT , 3
CF_SYLK , 4
CF_DIF , 5
CF_TIFF , 6
CF_OEMTEXT , 7
CF_DIB , 8
CF_PALETTE , 9
CF_PENDATA , 10
CF_RIFF , 11
CF_WAVE , 12
CF_UNICODETEXT , 13
CF_ENHMETAFILE , 14
CF_HDROP , 15
CF_LOCALE , 16
CF_DIBV5 , 17
CF_MAX , 18
CF_OWNERDISPLAY , 0x0080
CF_DSPTEXT , 0x0081
CF_DSPBITMAP , 0x0082
CF_DSPMETAFILEPICT , 0x0083
CF_DSPENHMETAFILE , 0x008E
CF_PRIVATEFIRST , 0x0200
CF_PRIVATELAST , 0x02FF
CF_GDIOBJFIRST , 0x0300
CF_GDIOBJLAST , 0x03FF
)
(
CF_TEXT , 1
CF_BITMAP , 2
CF_METAFILEPICT , 3
CF_SYLK , 4
CF_DIF , 5
CF_TIFF , 6
CF_OEMTEXT , 7
CF_DIB , 8
CF_PALETTE , 9
CF_PENDATA , 10
CF_RIFF , 11
CF_WAVE , 12
CF_UNICODETEXT , 13
CF_ENHMETAFILE , 14
CF_HDROP , 15
CF_LOCALE , 16
CF_DIBV5 , 17
CF_MAX , 18
CF_OWNERDISPLAY , 0x0080
CF_DSPTEXT , 0x0081
CF_DSPBITMAP , 0x0082
CF_DSPMETAFILEPICT , 0x0083
CF_DSPENHMETAFILE , 0x008E
CF_PRIVATEFIRST , 0x0200
CF_PRIVATELAST , 0x02FF
CF_GDIOBJFIRST , 0x0300
CF_GDIOBJLAST , 0x03FF
)
#z::
Paste("HELLO")
return
Paste(content, period:=0.5){
local OrignalClipboard:=ClipboardAll ;保存原值
Loop{
Clipboard:="" ;清空
ClipWait, period ;等待非空
}until ErrorLevel=1 ;等待超时(表示清空生效)
Clipboard:=content
if(content) ;非空时
ClipWait ;等待
Send ^v ;粘贴
Clipboard:=OrignalClipboard ;恢复原值
}