息子の成長のためか、最近、仕事から帰るとニコニコしてくれ、その笑顔につられて、たかいたかいをサービスするからなのか、理由ははっきりしませんが、とにかく全身筋肉痛の@kjunichiです。
Windowsキー等の無効化とIE9コンポーネントの利用でだいたい出来そう
さて、息子はパパやママのパソコンを使う姿を見ているせいか、キーボードを自分で叩きたがります。 そんな訳で、jsdoitでProcessing.jsをつかって、キーボードを押すとカラフルな文字が表示されるソフトを作りました。
しかし、まだ0才の息子なわけで、キーボードの片っ端から叩くので、すぐに、ブラウザ以外の画面に 移ってしまい、なかなか上手く遊べません。そんな訳でIEコンポーネントを利用して、キーボード入力の制御機能をもったアプリを作りましょう!
Windowsキー等の無効化
まぁ、数字と、アルファベットだけ、入力を許せば良いのですが、ちょっとネットを漁ると、グローバルフックというキーワードが出てきました。
後で参考サイトに挙げるサイトのやり方で、WPFなアプリでも有効でした。
IE9のコンポーネントを互換モードではなく、通常モード?で使うには
そうなんです、最近のWindows FormやWPFではWebBrowserが用意されているのですが、 こいつをそのまま使うと、互換モードで動いてしまい、Processin.jsが動かないんです。
IE9を使うにはレジストリを変更する必要がある
ということで、仕方ない、regeditなのか?と思っていましたが、 プログラムで動的に変更できるのが分かったので、この方法にしました。
string rKeyName = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; string rSetValueName = "WpfApplication1.exe"; string rKeyName2 = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_USE_LEGACY_JSCRIPT"; string rSetValueName2 = "WpfApplication1.exe"; RegistryKey rKey = Registry.CurrentUser.CreateSubKey(rKeyName); rKey.SetValue(rSetValueName, 0x2328) RegistryKey rKey2 = Registry.CurrentUser.CreateSubKey(rKeyName2); rKey2.SetValue(rSetValueName2, 0x0);
参考サイト
- Windowsキー押下を無効にする キーボードの制御
- キーコード、キーText一覧表 キーボードのコード表
- Thread: WebBrowserでIEの互換表示のON/OFF又は他のエンジン(FireFox)を使用することはできますか?
- IE9コンポーネントを使用するためのレジストリ情報その1
- IE9エンジンをIEコンポーネントブラウザで使う IE9コンポーネントを使用するためのレジストリ情報その2
- レジストリの値を設定するには? レジストリを変更するAPI
肝心のきーぼーど練習ソフト本体
Processing.jsで実装した本体?