開発じたばた日誌

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


Win Arrange 窓移動編

 まずほかの窓の存在を知る方法です。Win Arrangeも16ビット版VBで作ったのでAPIの力を借ります。
GetNextWindow(****,****)なる関数を発見しました。

 でもこれにはHWNDなるパラメータが必要です。このHWNDがわからないとこの関数は使えません。 やっとのことでGetDesktopWindow()を発見しました。これはパラメータが不要です!! 最初にこの関数を使って、あとは順次GetNextWindowを使えばいいんだ!! なんて面倒くさいんでしょう。 こんな手続きが必要なんて。

 次の問題です。ウィンドウハンドルHWNDを知ったとしても、どうやってそれが秀丸だとわかるのでしょう? これもヘルプを探しまくってGetWindowTextを発見しました。これでウィンドウのタイトルを知ることができます。


 なんということでしょう!! 秀丸を移動させようをしたら、まずGetDesktopWindowで最初の手がかりを 得、そして順次GetNextWindowで次のウィンドウの手がかりを得、そしていちいちそのウィンドウのタイトルを得、 やっとそれが秀丸かどうかわかるのです。

 このあたりでWindowsのプログラミングをするのはどんなに大変なことかわかってきました。 まず自分のやりたいことがあって、それを実行するときには膨大なAPIのおおよそが頭に入っていないとスムーズに 進みません。現在ではかなりの量が頭に入っており、また必要な関数の名前を推測して 検索することができるようになりましたが、最初の頃はやりたいことができる関数を探すために多くの時間を費やしました。

 また、Windowsではなにかの情報を知りたいとしても、多くの手続きをふんでやっとそこに到達できるのです。 今ではなれてしまってどーってことないのですが、当時は「うへっ、これだけやってやっとわかるのかよ」 とほとんどめげそうでした。

 苦労話が長くなりましたが、次はほかのウィンドウを動かせるのか?です。 これはMoveWindowというAPIを発見し、できることがわかりました。いまでもSetWindowPosよりもMoveWindowを 使う傾向があるのは、先に発見し思い入れのある関数だからでしょう。

 初めてほかのウィンドウを動かしたときはちょっと感動ものでした。他人のウィンドウにちょっかいをだして、 自在にあやつる快感とでもいうのでしょうか、これでがぜんWin Arrangeの開発に気合いが入りました。