[AHK]修正文件名乱码

189 篇文章 4 订阅
105 篇文章 5 订阅

问题:下载的文件 名字含有乱码

解决:ahk调用js函数辅助改成正确的文件名,详见下面动图演示。

 

热键:Ctrl+F2

;脚本功能:搞定乱码文件名,选中待修正名字的文件,按Ctrl+F2即可

;举例:
;乱码文件名:DevOps%E7%9A%84%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%AE%9E%E8%B7%B5_2014.pdf
;改后文件名:DevOps的概念与实践_2014.pdf
;作者:sunwind
;时间:2019年1月12日11:40:03
;最新版本:https://blog.csdn.net/liuyukuan/article/details/86354005


#SingleInstance,force
;热键:Ctrl+F2
^F2::
hwnd := WinExist("A")
For window in ComObjCreate("Shell.Application").Windows
	doc :=   window.Document
Until   (window.hWnd = hWnd)
For item in doc.SelectedItems {
	if (a_index=1)
	{
		filename:=item.name
	}
   ;多个文件,暂不支持
   ;~ sSelect .=   (!sSelect ? "" : "`n") item.path
  }

Send {F2}
;选中扩展名
Send ^a
;输入法状态设置为英文,以避免影响
IME_SET(0)  
SendInput % uridecode(filename)
Send {Enter}
return


;*********************
;辅助函数
;*********************
UriDecode(Uri)
{
    oSC := ComObjCreate("ScriptControl")
    oSC.Language := "JScript"
    Script := "var Decoded = decodeURIComponent(""" . Uri . """)"
    oSC.ExecuteStatement(Script)
    Return, oSC.Eval("Decoded")
}
IME_SET(setSts, WinTitle="")
;-----------------------------------------------------------
; IMEの状態をセット
;    対象: AHK v1.0.34以降
;   SetSts  : 1:ON 0:OFF
;   WinTitle: 対象Window (省略時:アクティブウィンドウ)
;   戻り値  1:ON 0:OFF
;-----------------------------------------------------------
{
    ifEqual WinTitle,,  SetEnv,WinTitle,A
    WinGet,hWnd,ID,%WinTitle%
    DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
    ;Message : WM_IME_CONTROL  wParam:IMC_SETOPENSTATUS
    DetectSave := A_DetectHiddenWindows
    DetectHiddenWindows,ON
    SendMessage 0x283, 0x006,setSts,,ahk_id %DefaultIMEWnd%
    DetectHiddenWindows,%DetectSave%
    Return ErrorLevel
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值