こんにちは。
現在開いているアプリケーションのウインドウの場所・サイズを取得したいと
思っています。
解像度を一時的に変更したとき等に開いているウインドウの表示位置を記憶
して、解像度を元に戻したときに復元するアプリケーションがありますが、
あれと似たような処理をさせたいのです。
ウインドウの表示位置を設定するのはSetWindowPosでよさそうなのですが・・・
取得するときは、どの様にすればよいのでしょうか?
EnumWindowsを実行して、CALLBACK関数の中でGetWindowText→GetWindowRect
で良いものだと思っていたのですが・・・
ご存じの方いらっしゃいましたら、ご教授いただけませんでしょうか?
GetWindowRect()でデスクトップ座標(スクリーン座標)上の
ウインドウ矩形がとれます。
失礼。全アプリですかっ。
GetWindowPlacement()をEnumWindows()で
まわすしかないかも。
中澤様
ありがとうございます!!
それらしき値と、戻す際の関数もこれでメドがつきました!
ついでに質問なのですが、戻す際に識別するためのものはプロセスIDでいいん
でしょうか?
ご存じでしたら、ご教授いただけると幸いです。
トップレベルのウインドウだけをGetWindowPlacement()で取得して、
この後の処理がどうなっているのかわからないので何ともいえませんが、
取得した全てのウインドウが閉じられていないという条件なら、
一緒に保管しておいたHWNDを指定してSetWindowPlacement()で
十分な気がします。
中澤様
ありがとうございます。
トップレベルのウインドウの取得というところから、GetTopWindow、GetNextWindow、
IsWindowVisibleをつかって、可視状態にあるウインドウのハンドルだけを取
得し、保存することで対応できました!!
本当にありがとうございました!
ツイート | ![]() |