ckw でプロンプトが消えないとき
Windows でコマンドプロンプトを使用する場合,ckw は便利なツールです.特に,ファイルのドロップが禁止されてしまった Vista では重宝します.Shift を押しながら右クリックして,さらにコンテキストメニューから「パスとしてコピー」を選択するなんて,説明するだけでも面倒ですから….
ただし,以前から起動時に裏方のコンソールが消えてくれなくて凹むことが何度かあり,新しいマシンに乗り換えたところ,ほぼ確実にコンソールが二重化するようになってしまいました.
幸いにもソースコードが入手できる状態だったので,「Windows API とか無理」などと考えつつ,いろいろ試してみたところ,自分の環境では問題が解決しました.
元になるソースコードは以下の場所から入手できました(本家は閉鎖しているものの,幸いなことに,ソースコードと改造版を公開してくれている方がいて助かりました.)
- cmd.exeを超便利にする ckw 0.8.10 を改造した。
- ckw改造版の修正版とuberboxの修正版と簡易電卓っぽいの。
修正箇所は,main.cpp のコンソールを消す部分(関数 create_console() の中で __hide_alloc_console() を呼び出した後)です.
while((gConWnd = GetConsoleWindow()) == NULL) { Sleep(10); } // このループを追加 while(!IsWindowVisible(gConWnd)) { Sleep(10); } while(IsWindowVisible(gConWnd)) { ShowWindow(gConWnd, SW_HIDE); Sleep(10); }
これで解決したことから,コンソールが表示される前に 3 つ目のループに突入していたのが原因のようです.以下の情報が参考になりました.
- AllocConsole を非表示にする方法 ?