Dear Sean,Very Great Now i can drop a link on my gui...
skrommel wrote:

It crashes AutoHotkey when copying something from Internet Explorer, or it takes a break before continuing. Any ideas?
Skrommel
At this time, soggos have no problem with ie8, to recover a link.
But, for all text...
Sean wrote:
... the length of the text will be limited to 1023 bytes, but it can be easily circumvented using other string-related APIs, so I'll leave it to the users....
how to retrieve sData (no limit but all)?
cause i have remplaced 1023 with nSize:
Code:
IEnumFormatEtc(this)
{
LV_Delete()
DllCall(NumGet(NumGet(1*this)+32),"Uint",this,"Uint",1,"UintP",penum) ; DATADIR_GET=1, DATADIR_SET=2
Loop
{
VarSetCapacity(FormatEtc,20,0)
If DllCall(NumGet(NumGet(1*penum)+12), "Uint", penum, "Uint",1, "Uint", &FormatEtc, "Uint",0)
Break
0+(nFormat:=NumGet(FormatEtc,0,"Ushort"))<18 ? RegExMatch("CF_TEXT CF_BITMAP CF_METAFILEPICT CF_SYLK CF_DIF CF_TIFF CF_OEMTEXT CF_DIB CF_PALETTE CF_PENDATA CF_RIFF CF_WAVE CF_UNICODETEXT CF_ENHMETAFILE CF_HDROP CF_LOCALE CF_DIBV5", "(?:\w+\s+){" . nFormat-1 . "}(?<FORMAT>\w+\b)", CF_) : nFormat>=0x80&&nFormat<=0x83 ? RegExMatch("CF_OWNERDISPLAY CF_DSPTEXT CF_DSPBITMAP CF_DSPMETAFILEPICT", "(?:\w+\s+){" . nFormat-0x80 . "}(?<FORMAT>\w+\b)", CF_) : nFormat=0x8E ? CF_FORMAT:="CF_DSPENHMETAFILE" : CF_FORMAT:=GetClipboardFormatName(nFormat)
VarSetCapacity(StgMedium,12,0)
If DllCall(NumGet(NumGet(1*this)+12), "Uint", this, "Uint", &FormatEtc, "Uint", &StgMedium)
Continue
If NumGet(StgMedium,0)=1 ; TYMED_HGLOBAL=1
{
hData:=NumGet(StgMedium,4)
pData:=DllCall("GlobalLock", "Uint", hData)
nSize:=DllCall("GlobalSize", "Uint", hData) ; nSize
; VarSetCapacity(sData,1023), DllCall("wsprintf", "str", sData, "str", DllCall("advapi32\IsTextUnicode", "Uint", pData, "Uint", nSize, "Uint", 0) ? "%S" : "%s", "Uint", pData, "Cdecl")
VarSetCapacity(sData,nSize), DllCall("wsprintf", "str", sData, "str", DllCall("advapi32\IsTextUnicode", "Uint", pData, "Uint", nSize, "Uint", 0) ? "%S" : "%s", "Uint", pData, "Cdecl")
DllCall("GlobalUnlock", "Uint", hData)
LV_Add("", A_Index, CF_FORMAT, nSize, sData)
if CF_FORMAT= CF_TEXT ; for putting in clipboard
{
Clipboard:= sData
MsgBox , 4160 , , TEXTE> %sData% ; BUT not ALL!
}
; if CF_FORMAT= UniformResourceLocator ; OK
; MsgBox , 4160 , , %sData%
; if CF_FORMAT= FileNameW ; OK
; MsgBox , 4160 , , %sData%
}
Else RegExMatch("TYMED_NULL TYMED_FILE TYMED_ISTREAM TYMED_ISTORAGE TYMED_GDI TYMED_MFPICT TYMED_ENHMF", "(?:\w+\s+){" . Floor(ln(NumGet(StgMedium)+1)/ln(2)) . "}(?<STGMEDIUM>\w+\b)", TYMED_), LV_Add("", A_Index, CF_FORMAT, "?", TYMED_STGMEDIUM)
DllCall("ole32\ReleaseStgMedium","Uint",&StgMedium)
}
DllCall(NumGet(NumGet(1*penum)+8), "Uint", penum)
LV_ModifyCol()
}
But if sData is more great > 1023 he don't giveall!
How to Do?