C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[70957] Re:[질문] TTrayIcon을 이용하여 SystemTray에 넣었을 때 프로그램 강제 종료 어떻게?
memi [j00nh0] 3262 읽음    2014-02-25 12:47
고수는 아니지만..
저는 클로즈전에 쿼리 이벤트를 이용합니다..
디자인타임에 tapplicationevent를 드래그 해놓으시면 편하게 코딩할수 있습니다(미니마이즈 이벤트등)
기본적인 것들은 ttrayicon 도움말을 참조했고요.. F1맹신자입니다;
ms-help://embarcadero.rs_xe4/codeexamples/TTrayIcon_(C++).html
bool CloseFlag;
void __fastcall TForm_Main::FormCloseQuery(TObject *Sender, bool &CanClose)
{
	// Hide the window and set its state variable to wsMinimized.
	if(!CloseFlag) {
		Hide();
		WindowState = wsMinimized;
		CanClose = false;

		// Show the animated tray icon and also a hint balloon.
		TrayIcon->Visible = true;
		TrayIcon->Animate = true;
		if(DS->Connection->Connected)
			TrayIcon->BalloonHint = "백그라운드에서 프로그램이 실행중입니다.\n종료하려면 아이콘을 우클릭 후 종료하세요.";
		else
			TrayIcon->BalloonHint = "백그라운드에서 프로그램이 실행중입니다.\n데이터베이스에 접속되지 않았습니다.";

		TrayIcon->ShowBalloonHint();
	}
	else {
		CanClose = true;
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::FormClose(TObject *Sender, TCloseAction &Action)
{
	CloseFlag = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Main::ApplicationEventsMinimize(TObject *Sender)
{
	// Hide the window and set its state variable to wsMinimized.
	Hide();
	WindowState = wsMinimized;

	// Show the animated tray icon and also a hint balloon.
	TrayIcon->Visible = true;
	TrayIcon->Animate = true;
	TrayIcon->ShowBalloonHint();
}
//---------------------------------------------------------------------------






땅주인 님이 쓰신 글 :
: 개발 환경: C++ Builder XE5
:
: 24시간, 365일 운영되어야할 S/W라서,
: TTrayIcon을 이용해서 프로그램을 SystemTray에 넣었습니다.
:
: SystemTray로 들어가지 않은 상태(화면에 보이는 상태)에서는
: 작업관리자의 작업 목록에서 강제 종료를 해버리면, 종료되지 않고 SystemTray로 들어가 버리내요.
:
: SystemTray에 들어간 상태에서는 작업관리자의 작업목록에 보이지 않네요
: (프로세스 목록에는 보이네요.)
:
: 소스코드는 아래와 같이 같은데,.. .
: 아마도 강제로 죽이는 것이 해당 프로그램에 WM_CLOSE 이벤트를 보내서 그런것인가 싶습니다.
:
:
// Form Close Event
: void __fastcall TFormMain::FormClose(TObject *Sender, TCloseAction &Action)
: {
: 	if ( !m_bExit ) {
: 		Action = caNone;
: 		GoSystemTray();
: 		return;
: 	} else {
: 		Action = caFree;
: 		return;
: 	}
: }

:
: 사용자가 프로그램의 X버튼을 누르면, SystemTray로 이동하고,
: 작업관리자나 외부에서 프로그램을 종료시키면 그냥 자동으로 종료하게끔 하고 싶은데..
:
: 어떻게 해야 할 지?
:
: 고수님들의 조언을..
: 감사합니다.
:

+ -

관련 글 리스트
70955 [질문] TTrayIcon을 이용하여 SystemTray에 넣었을 때 프로그램 강제 종료 어떻게? 땅주인 2929 2014/02/25
70958     Re:[질문] TTrayIcon을 이용하여 SystemTray에 넣었을 때 프로그램 강제 종료 어떻게? 주누 2891 2014/02/25
70957     Re:[질문] TTrayIcon을 이용하여 SystemTray에 넣었을 때 프로그램 강제 종료 어떻게? memi 3262 2014/02/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.