自分のPCにWindowsSP3をインストールした。再起動直後は不安定だったがログインしなおしてからはちゃんと動いている。SP3インストール後にWindowsUpdateを覗いたら2つの重要な更新があった。LinuxとWindowsのハイパフォーマンス・プログラミング手法LinuxとWindowsのプロセス/スレッドの扱い方の比較かな。ApplicationColdFusionで実装したペットマーケット。Javaの真似ではないのかしら。日本語だし役に立つのは確かだろう。高本吉田水野兒玉と打ち合わせ。30日に行うデモについての打ち合わせのようであったが色々な話をごっちゃにしたので結局よく分からなくなってしまった。プログラムを直したりしていた。朝から監視の続きなどKばかり。これからメイル書くのだ。一時間以上経っているではないか。バグっぽいエラーが出ていたのを調べないと。(Microsoft)MDAC2.8の英語版が出ていたのだ。早く日本語版出ないかなあ。家計簿ソフト復活への一抹の希望なのだ。家計簿はとりあえずOpenOficceOffice.orgで「現金主義」を使ってみている。LIFE)絵が分かりやすかったのでメモ。fj.questions.miscより。パンク修理したことない。自転車全然乗ってない。Forums)以前、Javaで一時ディレクトリを簡単に作るにはどうしたらいいのだろうとぼやいたけれど、それへの回答があった。directoryだって。結局お手軽な方法はないのかな。ネバーバード日記より。柳沢ころころ転ぶフリーで決められない、ジーコ交代枠使わない。しないつまらない試合だった。Windowsでアクティブウィンドウのタイトルを取得MinGW-w64を使って、初めてWindowsプログラミングをしてみる。手始めにアクティブウィンドウのタイトルを取得してみた。JNIから使えるライブラリとして実装する。frameworkを使えばきっともっと簡単なんだと思う。APIのリファレンスAPIの一覧を知りたいのだけれど、それが分かるページがよく分からない。こっちの方が見やすい。項目が少し違っているなあ。)から辿れそうなんだけど、APIリファレンスじゃないページも混じっていて頑張らないと見つけられない。2000」の下をよく探すとカテゴリ毎にリファレンスが見つかる。アクティブウィンドウを得るGetForegroundWindowという関数でアクティブウィンドウのハンドルを得られる。ウィンドウタイトルを得るGetWindowTextという関数でウィンドウのタイトルを得られる。ウィンドウタイトルを保存する領域が必要になるので、事前にGetWindowTextLengthで文字数を調べる必要がある。GetWindowText()の引数の型がLPTSTRとなっていて、これが難しかった。WindowsのAPIの実装というのはワイド文字版とマルチバイト文字版の2種類があって、その違いを意識しないために文字にはTCHARという型を使っているようである。TCHARがワイド文字(wchar_t)なのかマルチバイト文字(char)なのかは、UNICODEというマクロが定義されているかどうかで決まっている模様。書いてみたら難しくなかった。LPTSTRをJavaの文字列へ変換JNIを使うので、GetWindowText()で得た文字列をJavaの文字列へ変換しないといけない。このときに、TCHARがワイド文字なのかマルチバイト文字なのかで処理を分ける必要がある。Javaの文字列生成にはNewStringを使う。Unicode文字列ってのはUTF16のことなのかなあ。理解していないのだけれど、Windowsのwchar_tはUTF16のようで、TCHARがワイド文字を表す場合はLPTSTRをjchar*へキャストしたものをNewString()へ渡すことでちゃんと文字列を得られた。TCHARがマルチバイト文字を表す場合はMultiByteToWideCharというWindowsのAPIでワイド文字に変換すれば、上と同じくjchar*へキャストすることでJavaの文字列を得られた。linking.とあった。-DUNICODE」を、リンク時に「-municode」をg++のオプションとして与えればよさそう。これらをしないとマルチバイト文字モードになるようだ。ソースコードアクティブウィンドウのタイトルを取得するJNI関数を書いたのでメモしておく。やっつけなので醜いです。あー、このままだとC++の例外発生時にJVMが終了してしまうので、せめて例外をcatchしておく処理が必要だ。2.3.8-p459。