어플리케이션 윈도우 맨 앞에 나타내기
윈도우 화면의 여러 어플리케이션 화면 중에 내 앱을 화면의 맨 앞에 표시해야 하는 경우가 있다.
출결카드 리더기를 체크했을 때나 푸시 메시지가 도착했을 때 등
그런데 앱이 작업표시줄에 최소화되어 있는 경우도 있고 다른 앱에 가려서 뒤에 숨어 있는 경우도 있다.
과거 윈도우xp 에서는
Application.BringToFront; 로 맨 위로 나타내기 위해 사용했었다.
그러나 윈도우10에서는 작동되지 않는다. 윈도우10에서는 사용자가 화면 보이기 순서 제어하는 것을 막는다.
그래서 다른 방법으로 Minimize, Restore 를 사용할 수 있다.
먼저 작업표시줄에 최소화 되어 있는 경우는
Application.Restore; 메소드로 화면에 복원하면서 화면 맨 앞에 보이게 할 수 있다.
그러나 Restore 는 최소화 되지 않고 다른 앱에 가려져 있는 앱은 화면 맨 앞으로 가져오지 못한다.
Application.Minimize; 를 통해 최소화 했다가 다시
Application.Restore; 하면 화면 맨 앞에 보이게 되긴 하지만...
이것은 이미 화면에 맨 앞에 있는 앱에 대해 실행하면 최소화 되었다가 복원되어 화면이 깜박이게 되어
보기 좋지 않다.
해결 방법은 앱의 메인 폼이 액티브 상태인지 확인한 수 처리하면 된다.
베리 굿~
if Application.MainForm.Active = False then
begin
Application.Minimize;
Application.Restore;
end;
참로로 다음 함수도 윈도우xp에서 화면 맨 앞에 항상 타 프로그램 보다 맨 앞에 위치하게 했었다.
SetWindowPos(handle, HWND_TOPMOST, frmMain_CardReader.Left, frmMain_CardReader.Top,frmMain_CardReader.Width, frmMain_CardReader.Height, 0);
1