2016-01-18 6 views
0

Как я могу вернуться к расширенному тексту после нескольких регулярных выражений в конце моего сценария (чтобы я мог использовать богатый текст, а не HTML)?Autohokey: измените формат буфера обмена из html в текст

Этот сценарий копирует выделенный текст, извлекает HTML, форматирует его (удаляет/изменяет некоторые теги html). Поэтому, когда я заканчиваю буфер обмена в конце, у меня есть html-формат. Как я могу изменить формат буфера обмена, чтобы получить текстовый формат, когда я прошёл: я хотел бы иметь возможность вставить буфер обмена в MSWord, а не только в редакторе html.

Фактический код = текстовый формат → HTML формат код я ищу это: текстовый формат → HTML формат → текстовый формат код Ищу может показаться странным, но мне нужно, чтобы получить доступ к HTML-теги в формате их.

!^+k::     ;Alt(!) CTRL(^) shift(+) AND c 
clipboard = 
Send, {CTRLDOWN}c{CTRLUP}{ESC} 
ClipWait 
;   Change clipboard content from text to html with tag 
ClipboardGet_HTML(byref Data) { ; http://www.autohotkey.com/forum/viewtopic.php?p=392624#392624 
If CBID := DllCall("RegisterClipboardFormat", Str,"HTML Format", UInt) 
    If DllCall("IsClipboardFormatAvailable", UInt,CBID) <> 0 
    If DllCall("OpenClipboard", UInt,0) <> 0 
    If hData := DllCall("GetClipboardData", UInt,CBID, UInt) 
     DataL := DllCall("GlobalSize", UInt,hData, UInt) 
    , pData := DllCall("GlobalLock", UInt,hData, UInt) 
    , Data := StrGet(pData, dataL, "UTF-8") 
    , DllCall("GlobalUnlock", UInt,hData) 
DllCall("CloseClipboard") 
Return dataL ? dataL : 0 
} 

If ClipboardGet_HTML(Data){ 
;  MsgBox, % Data 
    clipboard = %Data% 
; parse HTML to remove tag attributes - bcoz I want to apply a style on <span id="textmark... I first replace them with a unique string that enable me to personalize their style after the parsing 
HHSpanid := RegExReplace(clipboard, "<span id=""textmark", "TO2BE2REPLACED$0") 
HHSpanidclass := RegExReplace(HHSpanid, "<span class=""textmark", "TO2BE2REPLACED$0") 
Replacehtmlmarker := RegexReplace(HHSpanidclass, "<(p|span|div|img|h1|h2|h3|h4|h5|h6|h7|a|label|blockquote|form|svg|path|input|header|sup|br|iframe|button|time|nav)\K [^>]+(?=>)") 
RemoveImg := RegExReplace(Replacehtmlmarker, "<img>", "") 
ReplaceHHSpan := RegExReplace(RemoveImg, "TO2BE2REPLACED<span>", "<span style=""color: black;background-color: #ffff00;"">") 
clipboard = %ReplaceHHSpan% 
ClipWait 
return 
    } 
Else SoundBeep 

Большое спасибо за помощь!

ответ

0

Проверьте класс WinClip.
В частности SetHTML(html, source = "") и Paste(plainText = "").

Смежные вопросы