2008-08-23
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 を非表示にする方法 ?
トラックバック - http://d.hatena.ne.jp/s-yata/20080823/1219474577
リンク元
- 7 http://blog.goo.ne.jp/jack_is/
- 5 http://d.hatena.ne.jp/hideden/20071115/1195229532
- 4 http://k.hatena.ne.jp/keywordblog/N-gram
- 4 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=EAd&q=MP45-D&start=40&sa=N
- 3 http://d.hatena.ne.jp/keyword/n-gram
- 3 http://www.google.com/search?num=50&hl=ja&lr=lang_ja&q=MP45-D&start=50&sa=N
- 2 http://www.google.co.jp/search?hl=ja&lr=&q=MP45-D&start=80&sa=N
- 2 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox&rls=org.mozilla:ja:official&q=MP45-D&start=60&sa=N
- 2 http://www.google.co.jp/search?q=mp45-d&sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-39,GGGL:ja&aq=t
- 2 http://www.icefree.org/~vvp/194.html