マスター、皆様こんちは
ちょっとお知恵をお借りしたいと思います。
とあるプログラム(A)は他のプログラムを起動した際に非表示になります。
が、再度プログラム(A)を起動しようとすると、先程のプログラム(A)が
再表示され前面に現れます。
何故、消す必要があるの?ってのは無しにして下さい。
消す時の処理
//フォームの非表示とタスクバーからアイコンを消す。
ShowWindow(Self.Handle,SW_HIDE);
ShowWindow(Application.Handle,SW_HIDE);
プログラム(A)の起動時処理
(略)
HWHD := FindWindow(nil,PChar(MutexName));
if HWHD <> 0 then //おなじみの既に起動済み場合
begin
//アプリケーションのハンドルを取得(前回起動済みのプログラム(A))
HAPP := FindWindow(PChar(ClassName), PChar(WindowName));
//アプリケーションがアイコン化されていたら元のサイズに戻す
if (IsIconic(HAPP)) then
begin
OpenIcon(HAPP);
end;
//前面に移動させる
SetForegroundWindow(HAPP);
if IsWindowVisible(HAPP) = False then //表示されているウィンドウを対象。
begin
AppHwnd := GetWindowLong(HAPP, GWL_HWNDPARENT);//
ShowWindow(AppHwnd,SW_SHOW); //ウィンドウを表示する
ShowWindow(HAPP,SW_SHOWDEFAULT);//タスクバーにアイコンを表示する
end;
AppRunFlg := True; //Trueだとこのプログラムは起動されない。
end;
(略)
ほんで、課題は再表示された時のイベントを捕まえるのはどうするんじゃろ?
って事です。
よろしくお願いします。<m(__)m>
|