掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
既に起動されているプログラムを前面に表示でききません。 (ID:20433)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
初歩的は質問ですが... 重複チェックはうまく行くのですが、 起動プログラムが前面に表示されませんがなぜでしょう?? conExeName = 'MainMenu' var Atm : TAtom; {アトム値} hApp : THandle; {アプリケーションのハンドル} begin {GlobalFindAtomでアプリケーション名が登録済みか調べる} Atm := GlobalFindAtom(PChar(ExtractFileName(Application.ExeName))); {戻り値が0以外ならすでに登録されている=起動されている} If 0 <> Atm Then Begin {自分と同じタイトルのアプリケーションを探す} hApp := FindWindow(nil, conExeName); If 0 <> hApp Then Begin {既に起動されている場合は前面に表示するのみ} SendMessage(hApp, WM_SYSCOMMAND, SC_RESTORE, 0); SetForeGroundWindow(hApp); ShowMessage('重複起動はできません!!'); Exit; End; End Else Begin {起動されていない場合はアトム値を登録する} {GlobalAddAtomで新規のアトム値を登録する} Atm := GlobalAddAtom(PChar(ExtractFileNAme(Application.ExeName))); {Atm が0ならアトム値が登録できなかったのでエラーにする} If 0 = Atm Then Begin ShowMessage('起動できません!!'); Exit; End; End; Application.Initialize; Application.CreateForm(TFMenu, FMenu); Application.Run; GlobalDeleteAtom(Atm); {アプリケーションが終了したらアトム値を削除する}
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.