いつもお世話になります。
斎藤です
早速ですが、メニュープログラムであるExeを起動させるとき、それが既に起動済みならそれを前面に持ってくる処理を作成しています。
対象Exeが起動中かの判断はうまくいくのですが、それが最小化されている場合元に戻す処理がうまく動作せず苦慮しています。
対象ExeはDelphi製のものなので、GetWindow関数でオーナーウインドウハンドルの取得を試みるのですが取得できず「0」で返ってきます。(GetLastErrorでは結果が0なのでGetWindow自体は正常終了していると思われます)
テスト用に下記のようなサンプルを作成して挙動をテストしました
hW: HWND;
hO: HWND;
hW := FindWindow('hogehoge', nil);
hO := GetWindow(hW, GW_OWNER);
ShowMessage(IntToStr(hO));
分かったこととして、Delphi7で作成したExeは上記サンプルで正常にオーナーハンドルを取得できますが、DelphiXE5で作成したExeはオーナーハンドルが0になってしまいます。
Delphiのバージョンでこのような挙動の違いがあるとは思いにくいのですが、なぜこのような動きをするのか分からずにいます。
何かヒントなどありましたら、ご教示いただければと思い投稿しました。
よろしくお願いいたします
MLホームページ:
https://www.freeml.com/delphi-users
----------------------------------------------------------------------
Powered by freeml --
https://www.freeml.com/ --
------------------------------------------------------[freeml byGMO]--
あなたの街のチラシがいつでも無料で見放題!
チラシをクリックしてチラシが拡大されたらポイントゲット♪
まずはかんたん登録♪ -ポイントタウン-
https://www.pointtown.com/ptu/rd.cgi?cid=8912
----------------------------------------------------------------------