non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

#2011aug_baby 息子のきーぼーど練習ソフトをつくる

息子の成長のためか、最近、仕事から帰るとニコニコしてくれ、その笑顔につられて、たかいたかいをサービスするからなのか、理由ははっきりしませんが、とにかく全身筋肉痛の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);

参考サイト

肝心のきーぼーど練習ソフト本体

Processing.jsで実装した本体?

関連記事