【AutoHotkey】プログレスバー

俺的にツボにはまり、大活躍をしているAutoHotkey。

 

バッチ的な処理もできるし、GUIも比較的簡単(?)に作ることができる。

 

 

 

 

GUI周りで調べ物をしていた時に発見。

 

プログレスバー。

 

Windowsでもファイルをコピーする時とかに、進捗に応じてバーがもりもり伸びていくアレだ。

今作っているツールに組み込みたくなってきた。

 

どんなツールかというと・・・

ブルスタ(BlueStacks)のインスタンス(VM的にはストレージ)のファイルの

読み書きが頻繁に行われるので、実体はRAMDiskに置いてシンボリックリンクを張っている。

普段使っている時はそのままで問題ないんだけど、ブルスタのバージョンをアップデートする時に

そのままアップデートしてしまうとシンボリックリンクが切れて実体になってしまう。

単純に更新のあったファイルを上書きしていくだけであれば、こういうことは起きない。

詳細はわからないけど、多分コピーとか余計なことをしている気がする。

なのでアップデートする時は

  1. シンボリックリンクの名前を変更する(G:\BlueStacks_nxt → G:\BlueStacks_nxt_
  2. RAMDiskからフォルダを移動(R:\BlueStacks_nxt → G:\BlueStacks_nxt)
  3. 念のためバックアップ(G:\BlueStacks_nxt (copy)→ G:\bk\BlueStacks_nxt)
  4. ブルスタのバージョンアップ
  5. 動作確認
  6. OKだったらRAMDiskにフォルダを移動(G:\BlueStacks_nxt → R:\BlueStacks_nxt)
  7. シンボリックリンクの名前を変更する(G:\BlueStacks_nxt_ → G:\BlueStacks_nxt)
    ※バックアップはしばらく残しておく

という手順を取っている。

これが面倒なので1~3と6~7を自動でやってくれるツールだ。

やってることはMOVEとCOPYだけなんですぐ完成した。

4のバージョンアップもやろうと思えば自動化できるけど、ブルスタを信用していないのでここは手動。

 

AutoHotkeyでのフォルダ操作はFileCopyDirFileMoveDirを使えば良いので楽勝。

扱うファイルが大きい(どんどん肥大化して9GBぐらいのがゴロゴロと)ので、移動やコピーに時間が掛かる。

進捗状況がわかれば良いのに と思っていたらプログレスバーがあった。

これを組み込んだら良いじゃないか。

 

どれどれ使い方は・・・?

 

Gui, Add, Progress [, Options, Text]

OptionsはGui, Addに使うようなもの、Textは初期値

 

使い方がわからんw

 

簡単にGUIを組んで表示させてみる。

 

何もない

何もないw

 

正確には・・・

ここにある

 

ここにある

 

で、どうしろと?

 

 

軽くググったけどサンプルがない。

 

俺が想像していたのは、

MOVEやCOPYに何か引数があってプログレスバーに反映できる

とか

コピー元の全容量でコピー先の容量を割ってその値をプログレスバーに反映する

をコピー中に一定間隔でグルグル回す

だった。

 

前者は、コマンドが元、先、上書き有無しか引数を持っていなくて玉砕。

後者は、そもそも移動やコピーが終わるまで次の処理に進まないので詰んだ。

 

何のためにあるんだGUIのProgress・・・。

というかどうやって使えば良いんだ。

 

 

・・・まさか・・・

 

Gui, Add, Button, x15 y10 w100 GprogressCheck, Start
Gui, Add, Progress, x15 y+10 w220 Vbar
Gui, Show
Return

progressCheck:
    GuiControl,, bar, 10
    Sleep, 1000
    GuiControl,, bar, 20
    Sleep, 1000
    GuiControl,, bar, 50
    Sleep, 1000
    GuiControl,, bar, 70
    Sleep, 1000
    GuiControl,, bar, 71
    Sleep, 1000
    GuiControl,, bar, 100
    Return

GuiClose:
ExitApp

予想通り 1秒ごとに 10、20、50、70、71、100 とバーが伸びた。

 

違う。俺が望んでいたのはこんなのじゃないッ!!w

 

 

更に調べていたら、参考になるページがあった。

 

 

AutoHotkeyの標準コマンドだけでは進捗情報付きのファイルコピーはできません。

 

無理だったかw

 

この方はDllCallを使用していた。

DllCallはまだ未知の領域なんだよなぁ・・・C怖いw

 

カテゴリー: PC, ソフトウェア, 技術的 タグ: , ,  [パーマリンク]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です