2007年12月24日

1日作成してた結果

ここまでできるようになった、今回もあまり実用的じゃない


;test3.ahk
;2007/12/24作成
;簡易エクスプローラー(ファイルなら実行、フォルダなら潜る+上のフォルダに戻る)
;起動時に最後に\なしのフォルダパスを渡せばそこから起動(空白ある場合は""で囲む)
;なければスクリプトのあるフォルダを開く

;問題点
;・フォルダ名に.があったらエラー(拡張子のあるなしで判断してるため)
;・ファイル、フォルダが多いと読み込みに時間がかかる
;・起動時に最後に\ありのパスを引数にして起動してもスクリプトのあるフォルダから起動する

;todo
;・エラーの修正
;・フォルダ移動時にタイトルを変更する(GUI, Show以外に設定する所ないんだろうか?)
;・その他バグ?修正

#NoTrayIcon
;引数があったら
If 0 <> 0
{
;引数分割
SplitPath, 1, Name, Dir, Ext
;引数がフォルダだった場合
IF Ext =
{
Path = %Dir%\%Name%
}
;引数がファイルだった場合
Else
{
Path = %Dir%
}
SetWorkingDir, %Path%
}

;Msgbox, %A_WorkingDir%

;ListView1作成
Gui, Add,ListView, R10 w400 gLV vListView1, 名前|フルパス
;関数呼び出し
ViewAdd()
;表示
Gui, Show, , %A_WorkingDir%
return

;サブルーチン

LV:
;ダブルクリック以外は無視
if A_GuiEvent = DoubleClick
{
;フルパス取得
LV_GetText(FullPath, A_EventInfo, 2)
;フォルダ判定用+フォルダだった場合に使う
SplitPath, FullPath, Name, Dir, Ext
;Msgbox, %Fullpath%, %Ext%
;項目がフォルダだった場合
If Ext =
{
;MsgBox, %Ext%
;上のフォルダに戻る場合
If LV_GetNext() = 1
{
SplitPath, A_WorkingDir, , Dir
Path = %Dir%
}
;フォルダだった場合
Else
{
;パス改造
Path = %Dir%\%Name%
}
;%A_WorkingDir変更
SetWorkingDir, %Path%
;関数呼び出し
ViewAdd()
}
;ファイルだった場合
Else
{
;MsgBox, %Ext%
;実行
Run, %FullPath%
}
}
return

GuiClose:
ExitApp

;ビューに追加関数
;引数、戻り値共になし
ViewAdd()
{
;再描画停止
GuiControl, -Redraw, ListView1
;ビュー全削除
LV_Delete()
;上のフォルダに戻る用ビュー作成
Lv_Add("","..", A_WorkingDir)
;A_WorkingDir読み込み
Loop, %A_WorkingDir%\*.*, 1
{
;Msgbox, %A_LoopFileName%, %A_LoopFileLongPath%
Lv_Add("",A_LoopFileName, A_LoopFileLongPath)
}
;幅調整
LV_ModifyCol(1)
LV_ModifyCol(2)
;再描画
GuiControl, +Redraw, ListView1
}

「esExt」で設定する時はオプションの>"%P"なしだとうまくいく
今回から「ahk-mode」準拠でTabじゃなくて半角スペースで記述
本当はTabの方が好きなんだけど設定の仕方が分からない
{と}を入力するとエラーになるので一応コピペで対応・・・