Amazon

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

最近のトラックバック

無料ブログはココログ

Amazon2

« 簡易ランチャーの作成 その3 | トップページ | 簡易ランチャーの作成 その5 »

2013年12月 1日 (日)

簡易ランチャーの作成 その4 (C# バックグラウンドでキー入力を取得する)


ランチャー作成の四回目です。今回はランチャーを終了する為の機能を実装する
つもりでしたが、予定を変更してバックグラウンドでキー入力を取得するロジックを
修正してみたいと思います。

・簡易ランチャーの作成シリーズになっています
  簡易ランチャーの作成 その1
  簡易ランチャーの作成 その2
  簡易ランチャーの作成 その3
  簡易ランチャーの作成 その4
  簡易ランチャーの作成 その5
  ソース全体は記事の最後にソリューションごと掲載してあります。




実は当ブログで意外(?)と読んで頂けているのが、バックグラウンドでキー入力を取得する
なのですが、その内容がお粗末なのは以前から気になっていました。
そして、今回そのロジックを自分で使用してみて、本当に何を書いているかさっぱり
判らなかったのでちょっと整理してみたいと思います。(格好良く言うとリファクタリングですね)

今回修正対象のクラスはOrderdKeyWatcherです。まず、何が気に入らないかを確認してみたいと思います。
気に入らないのはOrderdKeyWatcher.WatchKeys()メソッドです。

  ・何をしているのか判らない
    これだけで十分に致命的ですね…。自分で書いたのに…
  ・counterなんて使っている
    今時この手の変数は普通使わないですよね
  ・_keyCodeList[counter].Time の様にインデクサを使っている
    数字では無くて意味で記述したい。_keyCodeList[counter - 1]とか意味不明です。
  ・無駄なTimespanを確認している
    最初と最後を比較すれば十分(厳密には仕様が変わっていますが、気にしない!)
  ・そもそもバグがある…
    論外ですね

そんな訳で書き直す必要性は十分です。早速書き直してみました。書き直したのが以下になります。
自分なりのポイントとしては、

  ・次のキーへ進む/最初のキー/最後のキーが全てメソッド(プロパティ)で表現された
  ・ループ内の処理が減った(無駄なキースキャンとか判定処理とか)
  ・一時変数が減った

こんな所です。ちょっと長いけれど修正後のソースを添付します。プライベートクラスに
KeyStateValueListを作成して、整理したつもりです。今回の動作もWindows7 64bits版で確認しています。



まだまだ問題はあるかもしれませんが、修正前と比べればそれなりに良くなったと思います。
今回のソースはこちらです。



次回こそはランチャーを終了する為の機能を実装して簡易ランチャーを完成としたいと思います。




この冬は一気にWindows8.1のタブレットが発売になりました。値段もそれ程高くないし
ちょっと欲しくなってきました…が。今買うべきか、それとも我慢してWindows9まで待つか。
しかし、Windowsのバージョンがこう入り乱れると、ストアアプリは結局Windwos8に合わせて
書くのでしょうか???






« 簡易ランチャーの作成 その3 | トップページ | 簡易ランチャーの作成 その5 »

C#」カテゴリの記事

コメント

In truth, the area is too small to be a destination, but it is ideal for skiers taking a break from traveling to and from other destinations. For Newport residents, it offers a perfect lunch break or afternoon workout. Avalanche potential: none. India. Indonesia. Iran.

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1680410/54113939

この記事へのトラックバック一覧です: 簡易ランチャーの作成 その4 (C# バックグラウンドでキー入力を取得する):

« 簡易ランチャーの作成 その3 | トップページ | 簡易ランチャーの作成 その5 »