델파이

어플리케이션 윈도우 맨 앞에 나타내기

미스터몽키 2019. 9. 4. 00:23

윈도우 화면의 여러 어플리케이션 화면 중에 내 앱을 화면의 맨 앞에 표시해야 하는 경우가 있다.

출결카드 리더기를 체크했을 때나 푸시 메시지가 도착했을 때 등

그런데 앱이 작업표시줄에 최소화되어 있는 경우도 있고 다른 앱에 가려서 뒤에 숨어 있는 경우도 있다.


과거 윈도우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