以前、こちらの記事でご報告させていただきました不具合の原因が分かりましたので、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
→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
こういう記事が残ってると、他の草の根プログラマーの方々に参考になると思いますので、ぜひ今後ともお願いいたしますです。
そう言っていただけると励みになりますm(__)m
私もアプリを作る際に分からないことが出てきた時にいろいろなサイトの情報を元に推測したり検証しながら作っているので、そういう情報を公開して下さっている方々にはいつも感謝しているんです♪
なので、私が気付いた点や検証して分かったことなどをこうやってまとめておけば、もし他の方が同じところで躓いた際のお役に立てるかなと思いまして。。
私の場合、技術的にはまだ低レベルなため、その分を経験でカバーしている状態なので大した情報ではないかもしれませんけどね^^;
ありがとうございました。
早速お試しいただきありがとうございます。
大丈夫だったようで安心しました☆