TriceLauncherを公開して2か月ほどになりますが、使っていて動作がおかしいところがありましたので修正しました。
シンプルコマンド入力型ランチャ「TriceLauncher」はこちらからダウンロードできます。
不具合内容
不具合内容は、
- ホットキーで入力ボックスを呼び出したとき、フォーカスはあっているがアクティブにならないことがある。
- コマンド入力中に間違ってないキーワードを入力してENTERを入力した後、すぐに正しいキーワードをいれたら即実行されてしまう。
以上の2点です。
修正内容
アクティブにならない問題
まず、1点目の「アクティブにならないことがある」ですが、これは簡単なミスでした。
以前の修正でフォーカスがコマンド入力ボックスに当たらないということで修正しています。
しかし、コマンド入力ボックスである、テキストボックスばかりに気を取られて、フォーカスを設定していましたが、肝心のフォームをアクティブにしていませんでした。
this.Form1.Textbox1.Focus();
→これでテキストボックス自体にはフォーカスが当たり、カーソルは出るがアクティブになっていないため入力できない。
見た目はコマンドボックスしか見えないため、フォームがあることをすっかり忘れていたんですね・・・
そのせいで、カーソルが出ているため入力できるものだと思い、入力したら全然別の所に入力されていたということがありました。
ということで、ホットキー呼び出し時に、フォームをアクティブにする処理を追加しました。
this.Active();
→これをホットキー呼び出しのフォーカス設定の前に追加。
これにより、ホットキー呼び出しで、どのような時でも、無事(?)コマンドボックスにキーワードが入力されるようになりました。
勝手に実行される問題
これは、急いでキーワードを入力したつもりが、間違って存在しないキーワードを入力し、ENTERを押してしまったとき発生します。
その場合、キーワードがないため、キーワード補完に時間がかかる時があるため、一定時間の待ちを入れています。
そのため、待ち時間の間に存在するキーワードが入力された場合、すでにENTERが押されていると判断して実行してしまいます。
ウェイトを短くすると、補完未完了時にENTERを押した場合に反応しなくなります。
しかし、ウェイトは2.5秒と長めに設定していました。(実際は他の処理に時間がかかるため+1秒ぐらい)
補完待ちにはもっと短くても問題がないことが分かりましたので、500msに変更(実際には1秒ぐらい)しました。
このあたりのバランスは難しいですが、これで短すぎるなら再度調整が必要かもしれません。
最後に
今回の修正で、TriceLauncherは、バージョンが、1.0.3になりました。
機能追加ではないのですが、アクティブにならない問題は、急いで起動するときに他の文書にキーワードが入力されてイラっとすることがあったので、使用されている皆さまにはご迷惑をおかけしていたと思います。
これからも、不具合には対応していきたいとおもいます。
また、機能追加についても便利になりそうなことがありましたら検討します。(シンプルさがウリですので複雑なものは追加しないですが・・・)
これからも、「TriceLauncher」をよろしくお願いします。