아래 방법외에.. 다른 방법입니다.
이 방법은 팁 게시판에 조로님께서 올려주신 것인데..
시스템메뉴의 메뉴아이템을 찾아서 강제로 비활성화시키는 것입니다.
아래 소스를 보면, 거의 같은 코드를 두번 실행시키는데, 첫번째 것은 메인폼의 Close 메뉴를
비활성화시키는 것이고, 두번째 것은 델파이 프로그램에서 숨겨진 진짜 메인윈도우의 Close 메뉴를
비활성화시키는 것입니다.
참고로, 폼의 Close 메뉴를 비활성화시키면 폼 상단의 닫기 버튼(X)도 함께 비활성화됩니다.
다시 활성화시키려면, EnableMenuItem() 함수만 다음과 같이 바꾸어서 실행해주면 됩니다.
EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND&~MF_GRAYED);
그럼...
procedure TForm1.Button1Click(Sender: TObject);
var
hMenu : HMENU;
begin
hMenu := GetSystemMenu(Handle, false);
EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
DrawMenuBar(Handle);
hMenu := GetSystemMenu(Application.Handle, false);
EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
DrawMenuBar(Handle);
end;
Feelguy 님이 쓰신 글 :
: * 사용환경 : 델파이6 / Windows 98
: * 에러 메시지 :
:
: 현재 폼을 종료를 막고 싶은데.. 키값으로 alt + f4는 잡았는데..
:
: 정작 중요한 Task Bar의 닫기를 어떻게 해야할지 모르겠습니다.
:
: 노턴 안티바이러스는 그냥 닫기 popup 메뉴를 선택하니깐..
:
: 그냥 Systray로 이동하던데.. 어떻게 하는 거죠..
:
: 한 1주전에 alt+f4 막어놓고.. 이제 끝났겠지.. 하고..
:
: 잃어 버리고 있었는데.. 오늘 Task bar에서 닫기를 클릭하니깐..
:
: 기양 종료 되어 버리네요..
:
: 고수님들 좀알려주세요.. ^^
:
: 모두들 즐코하세요..
:
: 읽어주신분께 감사 꾸벅.. ^^
|