vista対応・・

今日、休みだったので、この前から気になっていた自分のソフトのvista対応にはまった。
実は、何が原因だったのか、あれくらい必ず私のソフトを立ち上げたjぷたいで、ie7を起動すると、エラーで起動できなかったのに、ある時期を境にぴたりとそれがなくなった。
HeartyLadderだけは、インターネット機能を使うと同じエラーが出るのだが・・・
その間に、windowsの更新もあったようなのでそれで、よくなったのかと思っていたのだが、以前、報告してくださったAgainTyperのユーザーさんに聞いてみたところ、まだ同じという返事があった。
それで、その方に協力してもらって、原因を究明することに。
幸い、原因の箇所はすぐにわかった。が、その対応にちょっと手こずらされた。
それも、今日、1日、じっくり時間がかけられたおかげで、たぶん、対応できたと思う。まだ最終TESTの報告が来ていないからなんともいえないが。たぶん、大丈夫だろう。
これまで、いろんなページで助けられたので、私もここでちょっと恩返し!この情報はどこにもなかったから参考になればと思う。もしかして私のソフトに限ってのことかもしれないが・・・
その原因は、CBTフックのコールバック関数の中で、共有メモリーを使うために、メモリーをマップするといけないようだ。
  HANDLE fp;
HHOOK HHook=CbtHHook;
TagShareData *mp;
fp=OpenFileMapping(FILE_MAP_ALL_ACCESS , FALSE , “map filename”);
mp=(TagShareData *)MapViewOfFile(fp , FILE_MAP_ALL_ACCESS,0,0,sizeof(TagShareData));
  こういうことをやったらいけないようだ。
キーボードなどをフックしたコールバック関数の中だと問題ないみたいだ。
XP以前のOSでは問題ないのも不思議だ。
さて、次はTextClipperだ。原因は同じだが規模が大きいからちょっと大変そう。