;sunwind 整理
;2013-5-26 13:17:31
;~ 编码函数,它输出符号的utf-8形式
MsgBox % encode2UTF8("测试")
encode2UTF8(Uri)
{
oSC := ComObjCreate("ScriptControl")
oSC.Language := "JScript"
Script := "var Encoded = encodeURI(""" . Uri . """)"
oSC.ExecuteStatement(Script)
Return, oSC.Eval("Encoded")
}
;~ http://www.autohotkey.com/board/topic/54431-scite4autohotkey-v300101-updated-nov-30-2012/page-44?hl=winhttp.winhttprequest#entry536165
SetTitleMatchMode, 2
WinGet, HWND, ID, SciTE4AutoHotkey
Gui, Add, Edit, w100 vDesc, Pasted by SciTE
Gui, Add, Edit, w100 vAuthor, GeekDude
Gui, Add, Button, w100, Paste
Gui, +Owner%HWnd% +ToolWindow
Gui, Show,, Paste
return
Buttonpaste:
Gui, Submit
Gui, Destroy
Gui, 1:Submit, NoHide
oSciTE := ComObjActive("SciTE4AHK.Application")
AhkBin(oSciTE.Document, Author, Desc, 1)
ExitApp
AhkBin(Txt, Author="GeekDude", Desc="Pasted by SciTE", Public=0)
{
URL := "http://www.autohotkey.net/paste/"
POST:= "MAX_FILE_SIZE=262144"
. "&jscheck="
. "&text=" . UriEncode(Txt)
. "&author=" . Author
. "&description=" . UriEncode(Desc)
. "&irc=" . (Public ? 100 : 0)
. "&submit=Paste"
Pbin := ComObjCreate("WinHttp.WinHttpRequest.5.1")
Pbin.Open("POST", URL)
Pbin.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
Pbin.Send(POST)
RegExMatch(Pbin.ResponseText, "<title>Paste #(.*?)</title>", pb_url)
File := FileOpen("Pastes.txt", "rw")
Txt .= File.Read()
File.pos := 0
File.Write(A_Now . "|" . URL . pb_url1 . "|" . Desc . "`r`n" . Txt)
File.Close()
if public
return URL . pb_url1
return
}
UriEncode(Uri)
{
oSC := ComObjCreate("ScriptControl")
oSC.Language := "JScript"
Script := "var Encoded = encodeURIComponent(""" . FixJS(Uri) . """)"
oSC.ExecuteStatement(Script)
return oSC.Eval("Encoded")
}
UriDecode(Uri)
{
oSC := ComObjCreate("ScriptControl")
oSC.Language := "JScript"
Script := "var Decoded = decodeURIComponent(""" . Uri . """)"
oSC.ExecuteStatement(Script)
return oSC.Eval("Decoded")
}
FixJS(JS)
{
StringReplace, JS, JS, \, \\, All ; Backslash
StringReplace, JS, JS, `b, \b, All ; Backspace
StringReplace, JS, JS, `f, \f, All ; Form feed
StringReplace, JS, JS, `n, \n, All ; New line
StringReplace, JS, JS, `r, \r, All ; Carriage return
StringReplace, JS, JS, `t, \t, All ; Tab
StringReplace, JS, JS, `v, \v, All ; Vertical tab
StringReplace, JS, JS, ', \', All ; Single quote
StringReplace, JS, JS, `", \`", All ; Double quote
return JS
}