AutoHotKeyで、Explorerの"表示"の切り替えを便利に。

 AutoHotKeyで、Explorerの並べ替えを便利に。では、PostMessageを使ってExplorerの並び順を操作したが、今回は"表示"を操作するためのパラメータを調べてみた。
 結果は以下の通り。

  • 28713 -- アイコン
  • 28715 -- 一覧
  • 28716 -- 詳細
  • 28717 -- 縮小版
  • 28718 -- 並べて表示

 これらはXPで確認したものだが、Windows7でも(おそらくVistaでも)有効。その場合、縮小版は「中アイコン」になる。
 28714は挙動がよくわからない。以前使ってた表示になる、ような……?

 次に、Windows7で有効なパラメータ。

  • 28747 -- 詳細
  • 28748 -- 並べて表示(拡張)
  • 28749 -- 特大アイコン
  • 28750 -- 中アイコン
  • 28751 -- 大アイコン
  • 28752 -- 小アイコン
  • 28753 -- 一覧
  • 28754 -- コンテンツ

 これを以前のように0x111のパラメータにして送ればよい。


[PR]
by lordnoesis | 2011-06-29 21:13 | テクノロジ | Trackback | Comments(0)

AutoHotKey_Lで、Operaの前回セッションを確認・退避できるようにしてみた。2

 前回のとほぼ同じもの。Opera11.50は、起動時にマスターパスワード入力ダイアログがアクティブになるようになったので、その辺を修正しただけ。アクティブになってるけど、入力欄にフォーカスあたってないようなので、Tabを1回。違いは行差分にして3行。

#WinActivateForce
  SessionsPath := "セッション保存先のパス"
  IniRead, WinCnt, %SessionsPath%autosave.win, session, window count
  if("ERROR" != WinCnt)
  {
    FileRead, SessionBuf, %SessionsPath%autosave.win
    FileDelete, %SessionsPath%autosaveA.win
    FileAppend, %SessionBuf%, %SessionsPath%autosaveA.win, CP932
    GoSub, SessionAnalyze
  }

  run, Opera.exeのパス, , , OpPid
  OpTitle := "パスワード"
  WinWait, %OpTitle% ahk_pid %OpPid%, , 30
  if(ErrorLevel != 0)
    Exit
  WinActivate, %OpTitle% ahk_pid %OpPid%, , 30
;  WinWaitActive, %OpTitle% ahk_pid %OpPid%, , 30
;  if(ErrorLevel != 0)
;    Exit

  Send, {Tab}
Exit


SessionAnalyze:
  loop, %WinCnt%
  {
    IniRead, HisCnt, %SessionsPath%autosaveA.win, %A_index%history title, count
    if("ERROR" == HisCnt)
      Continue
    HisCnt--
    IniRead, WinTitle, %SessionsPath%autosaveA.win, %A_index%history title, %HisCnt%
    WinTitles := WinTitles " " WinTitle "`n"
  }
  if("" == WinTitles)
    return

  MsgBox, 3, 表示後30秒で強制的に起動します。, 最終セッションを退避せずに起動しますか?`n`n◆最終セッションの内容◆`n%WinTitles%, 30
  ifMsgBox, No
  {
    TimeNum := A_Now
    FileMove, %SessionsPath%autosave.win, %SessionsPath%%TimeNum%.win
    if(0 < ErrorLevel)
    loop
    {
      FileMove, %SessionsPath%autosave.win, %SessionsPath%%TimeNum%_%A_Index%.win
      if(0 == ErrorLevel)
        Break
    }
  }
  ifMsgBox, Cancel
    Exit

return

 そもそもOpera自体が起動時にアクティブとは限らないので、やっぱり強制的にアクティブにするように少し変更。結果として11.50関係なくなったはず。

 11.60では入力欄にフォーカス当たってるので、Opera起動後の"Send, {Tab}"は必要ない。


[PR]
by lordnoesis | 2011-06-29 20:29 | テクノロジ | Trackback | Comments(0)

AutoHotKey_Lで、Operaの前回セッションを確認・退避できるようにしてみた。

 ふとAHK_Lに乗り換えたら、文字コード関連で動かなくなった「AutoHotKeyで、Operaの起動をより便利にしてみた。」のAHK_L版。
 機能的には変わってない。

#WinActivateForce
  SessionsPath := "セッション保存先のパス"
  IniRead, WinCnt, %SessionsPath%autosave.win, session, window count
  if("ERROR" != WinCnt)
  {
    FileRead, SessionBuf, %SessionsPath%autosave.win
    FileDelete, %SessionsPath%autosaveA.win
    FileAppend, %SessionBuf%, %SessionsPath%autosaveA.win, CP932
    GoSub, SessionAnalyze
  }

  run, Opera.exeのパス, , , OpPid
  OpTitle := "パスワード"
  WinWaitActive, %OpTitle% ahk_pid %OpPid%, , 30
  if(ErrorLevel != 0)
    Exit
  WinWaitNotActive, %OpTitle% ahk_pid %OpPid%, , 30
  WinActivate, %OpTitle% ahk_pid %OpPid%, , 30
Exit


SessionAnalyze:
  loop, %WinCnt%
  {
    IniRead, HisCnt, %SessionsPath%autosaveA.win, %A_index%history title, count
    if("ERROR" == HisCnt)
      Continue
    HisCnt--
    IniRead, WinTitle, %SessionsPath%autosaveA.win, %A_index%history title, %HisCnt%
    WinTitles := WinTitles " " WinTitle "`n"
  }
  if("" == WinTitles)
    return

  MsgBox, 3, 表示後30秒で強制的に起動します。, 最終セッションを退避せずに起動しますか?`n`n◆最終セッションの内容◆`n%WinTitles%, 30
  ifMsgBox, No
  {
    TimeNum := A_Now
    FileMove, %SessionsPath%autosave.win, %SessionsPath%%TimeNum%.win
    if(0 < ErrorLevel)
    loop
    {
      FileMove, %SessionsPath%autosave.win, %SessionsPath%%TimeNum%_%A_Index%.win
      if(0 == ErrorLevel)
        Break
    }
  }
  ifMsgBox, Cancel
    Exit

return

 IniReadはSJISしか読み込めないようなので、自動保存セッションをSJISに変換するという力技。文字化けするかもしれんが気にすんな!


[PR]
by lordnoesis | 2011-06-20 17:50 | テクノロジ | Trackback | Comments(0)

なぜか言語バーの左端に言語切り替えボタンが増えてたので消した。

 言語バーに言語表示(JPとかENとか)が増えてて邪魔だったので消すことにした。手順は簡単で、「テキストサービスと入力言語」の[全般>インストールされているサービス]から――って、あれ。日本語以外ないじゃんか。なぜENが表示されとるんだ?
 まあ、こういう場合は「追加」からすでに表示されている言語を選んで「適用」し、改めて削除すればOK。


[PR]
by lordnoesis | 2011-06-13 00:49 | テクノロジ | Trackback | Comments(0)

AutoHotKeyで、Explorerの並べ替えを便利に。

 エクスプローラの並べ替えにショートカットつけると地味に便利。Ctrl+Nで名前順、Ctrl+Mで更新日時順、Ctrl+Tで種類順、Ctrl+Sでサイズ順。ちなみに、現在と同じ項目で並べ替えをすると逆順になる。

 まずXP向け。それ以前で動くかは知らん。

;--------------------------------------------------
; WindowsExplorer
;--------------------------------------------------
#IfWinActive ahk_class CabinetWClass
^n::PostMessage, 0x111, 30210, 0, , A
^s::PostMessage, 0x111, 30211, 0, , A
^t::PostMessage, 0x111, 30212, 0, , A
^m::PostMessage, 0x111, 30213, 0, , A

#IfWinActive ahk_class ExploreWClass
^n::PostMessage, 0x111, 30210, 0, , A
^s::PostMessage, 0x111, 30211, 0, , A
^t::PostMessage, 0x111, 30212, 0, , A
^m::PostMessage, 0x111, 30213, 0, , A

; デスクトップ
#IfWinActive ahk_class Progman
^n::PostMessage, 0x111, 30210, 0, , A
^s::PostMessage, 0x111, 30211, 0, , A
^t::PostMessage, 0x111, 30212, 0, , A
^m::PostMessage, 0x111, 30213, 0, , A

; ファイルダイアログ
#IfWinActive ahk_class #32770
^n::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30210, 0, , ahk_id %CntHwnd%
return
^s::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30211, 0, , ahk_id %CntHwnd%
return
^t::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30212, 0, , ahk_id %CntHwnd%
return
^m::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30213, 0, , ahk_id %CntHwnd%
return

 そして7向け。Vistaでも動く……んじゃないかな。

;--------------------------------------------------
; WindowsExplorer
;--------------------------------------------------
#IfWinActive ahk_class CabinetWClass
^n::
ControlGet, CntHwnd, hwnd, , ShellTabWindowClass1, A
PostMessage, 0x111, 30211, 0, , ahk_id %CntHwnd%
return
^m::
ControlGet, CntHwnd, hwnd, , ShellTabWindowClass1, A
PostMessage, 0x111, 30212, 0, , ahk_id %CntHwnd%
return
^t::
ControlGet, CntHwnd, hwnd, , ShellTabWindowClass1, A
PostMessage, 0x111, 30213, 0, , ahk_id %CntHwnd%
return
^s::
ControlGet, CntHwnd, hwnd, , ShellTabWindowClass1, A
PostMessage, 0x111, 30214, 0, , ahk_id %CntHwnd%
return

#IfWinActive ahk_class ExploreWClass
^n::
ControlGet, CntHwnd, hwnd, , ShellTabWindowClass1, A
PostMessage, 0x111, 30211, 0, , ahk_id %CntHwnd%
return
^m::
ControlGet, CntHwnd, hwnd, , ShellTabWindowClass1, A
PostMessage, 0x111, 30212, 0, , ahk_id %CntHwnd%
return
^t::
ControlGet, CntHwnd, hwnd, , ShellTabWindowClass1, A
PostMessage, 0x111, 30213, 0, , ahk_id %CntHwnd%
return
^s::
ControlGet, CntHwnd, hwnd, , ShellTabWindowClass1, A
PostMessage, 0x111, 30214, 0, , ahk_id %CntHwnd%
return

;デスクトップ
#IfWinActive ahk_class Progman
^n::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30211, 0, , ahk_id %CntHwnd%
return
^s::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30212, 0, , ahk_id %CntHwnd%
return
^t::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30213, 0, , ahk_id %CntHwnd%
return
^m::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30214, 0, , ahk_id %CntHwnd%
return

;ファイルダイアログ
#IfWinActive ahk_class #32770
^n::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30211, 0, , ahk_id %CntHwnd%
return
^m::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30212, 0, , ahk_id %CntHwnd%
return
^t::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30213, 0, , ahk_id %CntHwnd%
return
^s::
ControlGet, CntHwnd, hwnd, , SHELLDLL_DefView1, A
PostMessage, 0x111, 30214, 0, , ahk_id %CntHwnd%
return

 Vista以降はウィンドウ直接狙っても効果がなかったり、番号揺らいでたり、ややこしい。
 あと、WinGetでクラス名指定してもダメだったからControlGetでClassNN指定したけども、そういうもんなん? 正直7版は自信ない。まあウチでは動いてるからいいやー、っていう。XP版のファイルダイアログ操作も、7版を移植しただけなので同様。

 なお、いわば[右クリック>並べ替え]の操作を省略しているにすぎないので、「詳細表示の設定」から項目増やしたり順番いじるとずれる。

 Windows7のはグループ表示がONになってしまうことがあるようなので、グループ表示をOFFにするホットキーも作成。

^g::
ControlGet, CntHwnd, hwnd, , ShellTabWindowClass1, A
PostMessage, 0x111, 30210, 0, , ahk_id %CntHwnd%
return


[PR]
by lordnoesis | 2011-06-13 00:11 | Trackback | Comments(0)
ブログトップ | ファンになる