2013-01-29

C#: SetParent関数

新しい親ウィンドウを設定するWin32APIです。
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

SetParent(thisHandle, ParentHandle);
何かの時に役に立つかもしれない関数です。

C#:HWNDをIntPtrに変換する

C#で、HWNDをC++で書かれたDLL関係を操作する際には、C#のポインタ変数IntPtrに変換する必要があります。その方法ですが、、、いたって簡単です。
  IntPtr wptr = (IntPtr)(XXXX.HWND);
のようにキャストするだけでOKです。簡単ですね。

2013-01-24

GWT: Field xxx has no corresponding field in template file

GWTのUiBinderで定義したUIコンポーネントに対してUiFieldを記述してjavaクラスから呼びだそうとしたら、赤いアンダーラインの警告が出て
Field xxx has no corresponding field in template file
みたいなエラーが。。。。記述方法は間違いないのにどういうことか?

結論は、原因はわかりませんが
  • とりあえずコンパイル(F11)してみることで解決
ということに。たんなるバグのようですが、どういう状況でなるのかがちょっと不明。


2013-01-16

Failed to load the JNI shared library "jvm.dll"

JavaのAuto Updateを実行した後にEclipseを起動したら、
Failed to load the JNI shared library "C:\......jvm.dll"
みたいなエラーが出た。これはどうやら、64bit環境に32bitのものが間違って入ってしまった時に起きるらしい。 というわけで、JREの再インストール。。。。

2013-01-14

Java Pluginの脆弱性問題と動作確認の方法

新聞やネットなどで報道されているように、Oracle Java 7 に脆弱性が確認されました。具体的には、
  • ウェブブラウザ上で動作するJava Pluginに脆弱性がある
ということです。(詳細は、JVNサイトへ

これは、Java Appletと呼ばれるブラウザ上で動作するJavaのソフトウェアが対象です。Javaが世間に出た当初は流行りましたが、昨今ではあまり使われていない古い技術(ソフトウェアの種類)です。しかし、Java Appletが使われているサイトも存在し、いつの間にかブラウザのプラグインとしてインストールされている可能性はあります。
この問題を回避するには、「Javaをアンインストールすること」が一番確実ですが、Javaを利用したシステム開発をしている者にとっては、Javaのアンインストールなどは考えられないことです。また、Javaで動作しているアプリケーションも存在しますし、それらには何の害もありません。
この脆弱性の問題はあくまでのJava Appletに対してのものであり、Javaというプログラミング言語やJavaで動いている全てのソフトウェア、システム、サーバに問題があるわけではありません。

プラグインの無効化方法
Javaをアンインストールできない環境の人は、とりあえず下記のサイトを参考にしてプラグインを無効にして下さい。
Pluginの動作確認
ブラウザでJava Pluginが有効であるかどうかは
で、確認することができます。ただし、このサイトにアクセスする際は下記のことに注意して下さい
  • インストールされていない場合 → インストールするようなメッセージが出るのでそれは無視する(ここで入れたら意味が無い)
  • インストールされている場合(マシン情報等が表示された場合) → プラグインが動いているので無効にする
ちなみに、上記サイト自体が正しく動くのかもちょっと微妙なので、いずれにせよPluginをOFFになっているか確認したほうがいいでしょう。

Javaの今後が心配
Java Pluginの脆弱性の問題は実は今回が初めてということではなく、昨年度の夏頃から同様の脆弱性が指摘され続けてきました。気になるのは、日本のメディアが
プログラム言語「Java(ジャバ)」に情報セキュリティー上の弱点があることがわかり、米国土安全保障省などが使用を控えるよう警告を出した。(朝日新聞
という類の報道をしていること。「Javaというプログラム言語を使うな」とは、CERTも言ってないです。Javaは、サーバ系、組み込み系、Android等、いろいろな用途で使われており、それを使用禁止にするなんてことは現実的にはありえないですし、またその必要もありません(問題があるのはAppletだけですから)。

今後の流れとして、Appletというのは廃止になるかもしれませんね。今はFlashやHTML5もありますし。個人的にはAppletにはちょっとした期待感を持っていたので、そうなると少し残念です。