AutoHotKey_Lで、Everythingの検索結果をX-Finderで開けるように。 Ver.1.1.1

 Everythingの検索結果をX-Finderのクリップフォルダに変換するAHKスクリプトを微修正。どうせ手作業で編集しないのだから、パスも文字参照にして、X-Finder上で扱いやすく。使い方等は前回参照。

;--------------------------------------------------------------------------------------
; Everything
;--------------------------------------------------------------------------------------
#IfWinActive ahk_class ahk_class EVERYTHING

F11::
  ClipWaitNull()
  Send, ^c
  ClipWait, 3
  if !ErrorLevel {
    Path2ClipFld(Clipboard)
    IfWinExist, ahk_class TXFinder.UnicodeClass
      WinActivate
    else
      Run, "C:\X-Finder\XF.exe"  ; X-Finderのパス。
  }
  ClipWaitRestore()
return

Path2ClipFld(PathList) {
  ClipFldPath := "C:\X-Finder\EverythingResult.ini"  ; パスリストの保存先。
  
  StringReplace, PathList, PathList, `n, `n, UseErrorLevel
  ClipFldBuf := "[X-Finder]`nCount=" ErrorLevel + 1
  
  Loop, Parse, PathList, `n, `r
  {
    if ("\" == SubStr(A_LoopField, 0))
      ItemPath := SubStr(A_LoopField, 1, -1)
    else
      ItemPath := A_LoopField
    
    SplitPath, ItemPath, ItemName
    
    ItemPath := Str2RefStr(ItemPath)
    ItemName := Str2RefStr(ItemName)
    
    ItemNum := A_Index - 1
    ClipFldBuf .= "`nName" ItemNum "=" ItemName "`nPath" ItemNum "=""" ItemPath """`nType" ItemNum "=1"
  }
  FileDelete, %ClipFldPath%
  FileAppend, %ClipFldBuf%, %ClipFldPath%, CP932
}

Str2RefStr(StrBuf) {
  Transform, StrBuf, HTML, %StrBuf%, 2
  SetFormat, Integer, H
  Loop {
    if !RegExMatch(StrBuf, "&#(\d+);", $)
      break
    
    TipNum := 0 + $1
    StringReplace, StrBuf, StrBuf, &#%$1%;, &#%TipNum%;, All
  }
  SetFormat, Integer, D
  StringReplace, StrBuf, StrBuf, &#0, &#, All
  StringReplace, StrBuf, StrBuf, &, &, All
  return, StrBuf
}



ClipWaitNull(SW = 1) {
  if SW {
    global CBBackup
    CBBackup := ClipboardAll
  }
  
  Clipboard :=
  while ("" != Clipboard)
    Sleep, 50
}

ClipWaitRestore() {
  global CBBackup
  
  ClipWaitNull(0)
  Clipboard := CBBackup
  ClipWait
}


[PR]
by lordnoesis | 2014-01-04 17:56 | テクノロジ | Trackback | Comments(3)
トラックバックURL : http://poimono.exblog.jp/tb/21387826
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
Commented by さわき at 2014-01-05 04:21 x
すみません質問させてください

EverythingからX-Finderのクリップフォルダへキーでアイテムを送った際、
リストを更新するのでなく既存リストに追加していくような動作にはできますか?

手元でいじって自分でなんとかできたらと思ったのですが
どうにもうまくいきませんでした

お手数ですが教えていただけるとありがたいです
Commented by lordnoesis at 2014-01-05 11:45
Countキーの更新と、他のキー名の生成のために、先に現在のCountキーの値を取得する必要がありますね。

Path2ClipFldAdd(PathList) {
ClipFldPath := "D:\MyTool\X-Finder\EverythingResult.ini" ; パスリストの保存先。

StringReplace, PathList, PathList, `n, `n, UseErrorLevel
PathRows := ErrorLevel + 1

IniRead, IniCnt, %ClipFldPath%, X-Finder, Count, -1
if (0 > IniCnt)
return

Loop, Parse, PathList, `n, `r
{
if ("\" == SubStr(A_LoopField, 0))
ItemPath := SubStr(A_LoopField, 1, -1)
else
ItemPath := A_LoopField
SplitPath, ItemPath, ItemName
ItemName := Str2RefStr(ItemName)
ItemPath := Str2RefStr(ItemPath)

ItemNum := A_Index + IniCnt - 1
ClipFldBuf .= "`nName" ItemNum "=" ItemName "`nPath" ItemNum "=""" ItemPath """`nType" ItemNum "=1"
}
IniCnt += PathRows
IniWrite, %IniCnt%, %ClipFldPath%, X-Finder, Count
FileAppend, %ClipFldBuf%, %ClipFldPath%, CP932
}
Commented by さわき at 2014-01-06 14:19 x
素早いお返事ありがとうございます
頂いた式を参考に手元をいじってみたらうまくいきました!

AHKはまだまだ勉強不足なので、今後も参考にさせていただきます
本当にありがとうございました
名前
URL
画像認証
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

ブログトップ | ファンになる