DirectInputたぶん完全解説・メソッド・・・中枢
コード中枢(値の取得)
やってきました!ちゅーす〓(頭逝ってます
うっ、またしても解説の必要が・・・・ない
平常時の頭が睡魔に捲かれた頭とPen4とcleくらいの差があることを実感中
というわけで、まんまペタ
bool Whatkeypush() //何が押されたか { string textnow = String.Empty; //String変数初期化 KeyboardState state = null; //キーボード状態初期化 if (null == applicationDevice) //デバイス初期状態 return true; //返り値true戻す InputException ie = null; //DirectInput例外 ie値無し try { state = applicationDevice.GetCurrentKeyboardState(); //stateにデバイスから直接データを取得 } catch (DirectXException) //↑が失敗した場合 { bool loop = true; //trueの場合ループ do //falseになるまで繰り返す { try { applicationDevice.Acquire(); //デバイス占用 } catch(InputLostException) //アクセス権を失った場合 { loop = true; //ループ再実行 } catch(InputException inputException) //新規デバイス初期化占用 { ie = inputException; //ieにinputExceptionを入れる loop = false; //ループ終了可能 } }while (loop); //ループfalseのため終了 //↓例外発生 他のアプリケーションが完全占用状態又は占用不能 if (ie is OtherApplicationHasPriorityException || ie is NotAcquiredException) label1.Text = "キーボードを占用できません。他のアプリケーションを終了してください"; return true; //返り値true戻す } for (Key k = Key.Escape; k <= Key.MediaSelect; k++) //falseになるまで繰り返す(MediaSelectの方が優先度高) { if (state[k]) //デバイスより直接得たデータをkとする textnow += k.ToString() + " "; //kの後にスペースを入れたものをtextnowに追加 //ToStringはバイナリを文字にしている・・・だったはず。 } if (label1.Text != textnow) //もしtextnowとlabel1.textが等しくない場合 label1.Text = textnow; //label1.textにtextnowを入れる return true; //戻す }
一応説明足りない部分書き足して、これで完了かな?前も述べたとおりlabel1に結果をだすプログラム