久世さん
こんにちは。
細川です。
旧 Delphi-ML は新 Delphi-ML である Google Groups に移行しています。
今後は新 ML をご利用ください。
今回は、このまま続けます。
> 同一アプリを複数起動する際、重ならないように少し右下に表示したいのですが、良い方法はありますでしょうか?
TForm.Position を poDefaultPosOnly にする、という方法では上手くいかないという
ことですよね?
VCL:
http://docwiki.embarcadero.com/Libraries/Rio/ja/Vcl.Forms.TForm.Position
FMX:
http://docwiki.embarcadero.com/Libraries/Rio/ja/FMX.Forms.TForm.Position
OS に任せず自分で作る場合は、いくつか方法が考えられますが Windows だけで良い場
合は
・最後に起動したアプリの内まだ起動しているアプリの Window Handle を取得する
・GetWindowRect API を使ってウィンドウの位置を取る
・取得した位置から少しずらした位置に自分を移動する
という流れになると思います。
じゃあ「最後に起動したアプリの内まだ起動しているアプリの Window Handle を取得
する」っていうのはどうやるのかというと、これもいくつかやり方がありますね。
一例を示すと、
1.ユーザー定義メッセージを作成
2.ユーザー定義メッセージを受け取ったら起動時間を返すようにしておく
3.EnumWindows API でウィンドウを列挙して GetClassName API を使って自分と同じ
クラス名の物を見つける
4.見つかった Window Handle に対して SendMessage でユーザー定義メッセージを投
げて、起動時間を取得
5.起動時間が一番新しい Window Handle を使って位置を取得する
となるでしょうか。
よろしくお願いいたします。
Regards,
HOSOKAWA Jun
Application Division 3 Manager
embarcadero MVP for Delphi
[S/G] SERIALGAMES Inc.
TEL: 03-5812-4368
FAX: 03-5812-0970
---------------------------------------------------------------
このメールには、本来の宛先の方のみに限定された機密情報が含まれて
いる場合がございます。お心あたりのない場合は、送信者にご連絡のうえ、
このメールを削除してくださいますようお願い申し上げます。
PLEASE READ:This e-mail is confidential and intended for
the named recipient only. If you are not an intended recipient,
please notify the sender and delete this e-mail.
---------------------------------------------------------------
MLホームページ:
https://www.freeml.com/delphi-users
----------------------------------------------------------------------
スマホアプリ版で100万ダウンロード突破の
「キャプテン翼ZERO~決めろ!ミラクルシュート~」
HTML5ゲームプラットフォーム「ゲソてん byGMO」にて、
PCブラウザ版を好評配信中!
https://gesoten.com/games/genre/sports/tsubasa-zero
------------------------------------------------------[freeml byGMO]--
「WiMAX(ワイマックス)」ならおトクなGMOとくとくBB。
今なら高額ポイントがもらえます♪
まずはかんたん登録♪ -ポイントタウン-
https://www.pointtown.com/ptu/rd.cgi?cid=9533
----------------------------------------------------------------------