開発じたばた日誌

前へ●●●次へ
じたばた日誌目次へ戻る
TSUCHY Softへ戻る


えらいぞGetWindowText 編

 GetWindowTextが裏でやっていることを少し想像してみましょう。 この関数で他のアプリのウィンドウテキストを取得すると、なにもしないとクラッシュします。 それは私のアプリの用意したメモリーを参照するポインタが、あなたのアプリでは無意味だからです。 無意味どころか、きわめて危険ともいえます。

 ここからは推測ですが、たぶんWindowsは私がGetWindowTextに渡したポインタをすり替えて、 あなたのアプリがアクセスしても大丈夫なメモリーを用意します。
 あなたのウィンドウはそのメモリーにテキストを書き込みます。 リターンしたところで、Windowsはそのメモリーから、私の用意したメモリーにテキストをコピーします。 そして私がCALLしたGetWindowTextからリターンしたときには、あなたのウィンドウのテキストがコピーされているのです。

 なんてめんどうくさいことをしているのでしょうか。 GetWindowTextのようなポピュラーなAPIですらこのようなトリックが必要なのですね。 WIN32になってアプリの独立性が高められた結果、このようなことをしなくてはいけないのです。 でもそれはしかたがないともいえます。 OSの発売が遅れるのは、このような細かい問題をつぶしていくのに時間がかかるためでもあるのでしょう。 ちょっぴり見直したゼ MS。

 でも私のショートカットモトドーラはどうなるのでしょう。ハイソーデスカってあきらめるのではおもしろくありません。 プロセス境界の荒波を突破できる方法があればいいのです。 そこで思いついたのがメモリーマップドファイル。 これで取得したポインタを渡したらあら不思議、うまくいきました。 Windows95ではメモリーマップドファイルで割り当てられるメモリー空間は全アプリで使えるらしいのです。 めでたしめでたし。でもNTではこの手も失敗します。

 もう疲れたので、ハイソーデスカってあきらめました。

1998.11.23