w-zero3日和

星羽がW-ZERO3、W-ZERO3[es]、その他モバイル端末を設定した時の覚え書きや自作アプリの公開など。

ChgSuisokuとAtokChangerに共通した不具合について(解決編)

2007年07月16日 | 自作アプリ関連
以前、こちらの記事でご報告させていただきました不具合の原因が分かりましたので、ChgSuisokuとAtokChangerのVerUPを行いました。
ChgSuisoku ver1.07
AtokChanger ver1.03

◆不具合の内容について◆
不具合内容ChgSuisoku ver1.06まで、AtokChanger ver1.02までではそれぞれ以下のような不具合が起きていました。
ChgSuisoku又はAtokChangerを常駐させた状態で.Net Compact Frameworkを利用するアプリを起動させると、以後、文字種切り替えバーが表示されなくなり、文字種だけが切り替わるという状態になってしまう。

◆原因と解決策◆
そこでいろいろと原因を調べてみたところ、AtokChanger、ChgSuisoku共に常駐アプリなので、常に画面上に存在しているウィンドウの子ウィンドウとして自分を生成するという方法で常駐を実現する必要があります。
今までは以下のようにして画面上のスタートバーのウィンドウハンドルを取得して、その子ウィンドウとして自分を生成していました。

FindWindow(L"HHTaskBar",NULL);
(HHTaskBarはスタートバーのクラス名です)

ただ、この方法で常駐アプリを作ると上記のような不具合が起こってしまうようです。
おそらく、[文字]キーを押した時に表示される文字種切り替えバーもスタートバーの子ウィンドウとして自分を生成しているせいなのかなと。。
それならばと、スタートバーと同じく起動中ずっと存在しているToday画面の子ウィンドウとして自分を生成するようにすればいいのでは?と試してみたところ、上記の不具合が起こらなくなりました☆

FindWindow(L"DesktopExplorerWindow", L"Desktop");
(DesktopExplorerWindowはToday画面のクラス名です)

念のためこの方法で作ったAtokChangerとChgSuisokuを自分で数週間使ってみたところ、特に不具合は起こらなかったので公開させていただくことにしましたm(__)m


最新の画像もっと見る

4 コメント

コメント日が  古い順  |   新しい順
Unknown (dawnpurple)
2007-07-16 22:15:22
いつも思うんですが、星羽さんはちゃんとこういう試行錯誤も含めて記事に残すのでさすがですね。他の人なら苦労してもその経過をブログ等で残さず、バージョンアップだけしてる人が多いと思います。
こういう記事が残ってると、他の草の根プログラマーの方々に参考になると思いますので、ぜひ今後ともお願いいたしますです。
返信する
お返事です (星羽)
2007-07-17 03:01:21
◆dawnpurpleさんへ◆
そう言っていただけると励みになりますm(__)m
私もアプリを作る際に分からないことが出てきた時にいろいろなサイトの情報を元に推測したり検証しながら作っているので、そういう情報を公開して下さっている方々にはいつも感謝しているんです♪
なので、私が気付いた点や検証して分かったことなどをこうやってまとめておけば、もし他の方が同じところで躓いた際のお役に立てるかなと思いまして。。
私の場合、技術的にはまだ低レベルなため、その分を経験でカバーしている状態なので大した情報ではないかもしれませんけどね^^;
返信する
お疲れ様でした (ゆきさん)
2007-07-17 23:01:54
早速使っていますが、特に不具合はなく、快適に作動しています。文字種切り替えバーも、きちんと表示されるようになりました。

ありがとうございました。
返信する
お返事です (星羽)
2007-07-19 02:33:18
◆ゆきさんへ◆
早速お試しいただきありがとうございます。
大丈夫だったようで安心しました☆
返信する