WM_QUERYENDSESSION

Àμö

wParam : »ç¿ëµÇÁö ¾Ê´Â´Ù.

lParam : ·Î±×¿ÀÇÁ¸¦ ÇÏ´Â °ÍÀÎÁö ½Ã½ºÅÛ ¼Ë´Ù¿îÀ» ÇÏ´Â °ÍÀÎÁö¸¦ ³ªÅ¸³½´Ù. ÀÌ °ªÀÌ 0ÀÌ¸é ½Ã½ºÅÛÀ» ¿ÏÀüÈ÷ Á¾·áÇÏ´Â °ÍÀ̸ç ENDSESSION_LOGOFF Ç÷¡±×°¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸é ·Î±×¿ÀÇÁ¸¸ ÇÏ´Â °ÍÀÌ´Ù. ÀÌ °ªÀº ºñÆ® ÇʵåÀ̹ǷΠ¹Ýµå½Ã & ¿¬»êÀÚ·Î Ç÷¡±×ÀÇ Á¸Àç À¯¹«¸¦ Á¡°ËÇØ¾ß ÇÑ´Ù.

if (lParam & ENDSESSION_LOGOFF) {
    // ·Î±×¿ÀÇÁ ó¸®
} else {
    // ¼Ë´Ù¿î ó¸®
}

¼³¸í

»ç¿ëÀÚ°¡ ¿î¿µÃ¼Á¦¸¦ Á¾·á ¶Ç´Â ·Î±× ¿ÀÇÁÇÏ°íÀÚ ÇÒ ¶§, ¶Ç´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ExitWindows ÇÔ¼ö·Î ¿î¿µÃ¼Á¦¸¦ Á¾·áÇÏ°íÀÚ ÇÒ ¶§(´Ü, EXW_FORCE Ç÷¡±×°¡ ¾ø¾î¾ß ÇÑ´Ù)¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î ÀÌ ¸Þ½ÃÁö°¡ º¸³»Áø´Ù. ÀÌ ¸Þ½ÃÁö´Â ½ÇÇàÁßÀÎ °¢ ÇÁ·Î±×·¥¿¡°Ô "Áö±Ý ¼Ë´Ù¿îÇҰǵ¥ Çصµ ±¦Âú½À´Ï±î?" ¶ó°í Áú¹®ÇÏ´Â °Í°ú °°´Ù. ÀÀ¿ë ÇÁ·Î±×·¥Àº ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ÀÚ½ÅÀÇ ³»ºÎ »óŸ¦ º¸°í ¿î¿µÃ¼Á¦ÀÇ Á¾·á¸¦ Çã°¡Çϰųª °ÅºÎÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ÇÑ ÇÁ·Î±×·¥ÀÌ¶óµµ 0À» ¸®ÅÏÇÏ¸é ¿î¿µÃ¼Á¦ÀÇ Á¾·á´Â Ãë¼ÒµÈ´Ù.

¹ÌÀúÀå ¹®¼­°¡ Àִٰųª ¶Ç´Â ³×Æ®¿÷ ¿¬°áÀ» ÇԺηΠ²÷À» ¼ö ¾ø´Â »óȲÀ̰ųª ¾Æ´Ï¸é Àý´ë·Î Á¾·áÇؼ­´Â ¾ÈµÇ´Â Áß¿äÇÑ ¼­¹ö ÇÁ·Î±×·¥ÀÎ °æ¿ì´Â ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ¼Ë´Ù¿îÀ» °ÅºÎÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ¸¸¾à TRUE¸¦ ¸®ÅÏÇÏ¿© Á¾·á¸¦ Çã°¡ÇÏ°Ô µÇ¸é ¿î¿µÃ¼Á¦¸¦ Á¾·áÇÑ´Ù´Â WM_ENDSESSION ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù. DefWindowProcÀº ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ TRUE¸¦ ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ Ưº°È÷ ó¸®ÇÏÁö ¾ÊÀ¸¸é ¿î¿µÃ¼Á¦ÀÇ Á¾·á¸¦ Ç×»ó Çã°¡ÇÏ´Â °ÍÀÌ µÈ´Ù.

¿î¿µÃ¼Á¦´Â ¼Ë´Ù¿îÀü¿¡ ½ÇÇàÁßÀÎ ¸ðµç ÇÁ·Î±×·¥¿¡°Ô ÀÌ ¸Þ½ÃÁö¸¦ º¸³» ¼Ë´Ù¿î Çã°¡¸¦ ¹ÞÀº ÈÄ ¸ðµç ÇÁ·Î±×·¥ÀÌ Çã°¡ÇÒ ¶§¸¸ °³º° ÇÁ·Î±×·¥À» Á¾·á½ÃŲ ÈÄ ¼Ë´Ù¿îÇÑ´Ù. À̶§ °³º° ÇÁ·Î±×·¥ÀÇ Á¾·á ½ÃÁ¡Àº ¿î¿µÃ¼Á¦ ¹öÀü¿¡ µû¶ó ´Ù¸£´Ù. 95/98 °è¿­Àº ¸ðµç ÇÁ·Î±×·¥¿¡°Ô ¼Ë´Ù¿î Çã°¡¸¦ ¹ÞÀº ÈÄ °¢ ÇÁ·Î±×·¥À» Á¾·áÇÏÁö¸¸ NT/2000 °è¿­Àº °³º° À©µµ¿ì¿¡°Ô Çã°¡¸¦ ¹ÞÀº ÈÄ °¢°¢ÀÇ ÇÁ·Î±×·¥À» ¼ø¼­´ë·Î Á¾·á½ÃŲ´Ù. ±×·¡¼­ ¸¸¾à A,B,C ¼¼°³ÀÇ ÇÁ·Î±×·¥ÀÌ ÀÖ°í B°¡ Çã°¡¸¦ °ÅºÎÇÒ ¶§ 95/98°è¿­Àº ¸ðµç ÇÁ·Î±×·¥ÀÌ Á¾·áµÇÁö ¾ÊÁö¸¸ NT/2000 °è¿­Àº ÀÏ´Ü A°¡ ¸ÕÀú Á¾·áµÇ°í BÀÇ °ÅºÎ¸¦ ¹Þ¾ÒÀ» ¶§ ¼Ë´Ù¿îÀ» ÁßÁöÇÑ´Ù.

¸®ÅÏ

¿î¿µÃ¼Á¦ Á¾·á¸¦ Çã°¡ÇÏ·Á¸é TRUE¸¦ ¸®ÅÏÇÏ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì´Â FALSE(=0)¸¦ ¸®ÅÏÇÑ´Ù.

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â WM_QUERYENDSESSION ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ¹«Á¶°Ç FALSE¸¦ ¸®ÅÏÇϵµ·Ï ÇÔÀ¸·Î½á ¿î¿µÃ¼Á¦ Á¾·á¸¦ °ÅºÎÇÑ´Ù.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	static TCHAR Mes[256]="ÀÌ ÇÁ·Î±×·¥ÀÌ ½ÇÇàÁßÀÎ µ¿¾È¿¡´Â ¿î¿µÃ¼Á¦ Á¾·á¸¦ ¸øÇÑ´Ù";

	switch(iMessage) {
	case WM_QUERYENDSESSION:
		wsprintf(Mes,"¾ÈµÅ! ³ª´Â Àý´ë·Î Á×À» ¼ö ¾ø¾î");
		InvalidateRect(hWnd,NULL,TRUE);
		return FALSE;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,10,10,Mes,lstrlen(Mes));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

ÀÌ ÇÁ·Î±×·¥À» Á¾·áÇؾ߸¸ ¿î¿µÃ¼Á¦¸¦ Á¾·áÇÒ ¼ö ÀÖ´Ù.

¿¹Á¦ 2

´ÙÀ½ ¿¹Á¦´Â ¿î¿µÃ¼Á¦ Á¾·á½Ã ¹ÌÀúÀå ¹®¼­¿¡ ´ëÇØ »ç¿ëÀÚ¿¡°Ô Áú¹®ÇÏ°í »ç¿ëÀÚÀÇ ÀÀ´ä¿¡ µû¶ó ¹®¼­¸¦ ÀúÀåÇϰųª ¶Ç´Â ¹ö¸°´Ù. Ãë¼Ò¸¦ ¼±ÅÃÇÏ¸é ¿î¿µÃ¼Á¦ Á¾·á¸¦ Ãë¼ÒÇÑ´Ù.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	int Result;
	TCHAR Mes[]="½Ã½ºÅÛ Á¾·á½Ã¿¡ ¹ÌÀúÀå ¹®¼­¸¦ ÀúÀåÇÏ´Â ¿¹Á¦";

	switch(iMessage) {
	case WM_QUERYENDSESSION:
		if (TRUE/*¹ÌÀúÀå ¹®¼­°¡ ÀÖ´Ù Ä¡°í*/) {
			Result=MessageBox(hWnd,"ÀÌ ¹®¼­¸¦ ÀúÀåÇÒ·¡?","Áú¹®",MB_YESNOCANCEL);
			if (Result==IDCANCEL) {
				return FALSE;
			}
			if (Result==IDYES) {
				// ÀúÀåÇß´Ù Ä¡°í
			}
		}
		return TRUE;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,10,10,Mes,lstrlen(Mes));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_CLOSE:
		MessageBox(hWnd,"³ª Áö±Ý ´ÝÇô¿ä","¾ÆÀÌ°í",MB_OK);
		break;
	case WM_DESTROY:
		MessageBox(hWnd,"³ª Áö±Ý Á×¾î¿ä","¾ÆÀÌ°í",MB_OK);
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

ÀÌ ¿¹Á¦¸¦ ½ÇÇàÇØ º¸¸é ½Ã½ºÅÛ Á¾·á½Ã¿¡´Â WM_CLOSE, WM_DESTROY µîÀÇ ¸Þ½ÃÁö°¡ Àü´ÞµÇÁö ¾ÊÀ½À» ¾Ë ¼ö ÀÖ´Ù. ¿Ö³ÄÇÏ¸é ¿î¿µÃ¼Á¦ Á¾·á´Â °ð Àü¿øÀÌ ²¨Áø´Ù´Â Ư¼öÇÑ »óȲÀ̱⠶§¹®¿¡ ¸ÞÀÎ À©µµ¿ì°¡ Æı«µÇÁö ¾Ê±â ¶§¹®ÀÌ´Ù. WM_CLOSE¿¡¼­ ¹ÌÀúÀå ¹®¼­¿¡ ´ëÇÑ Ã³¸®¸¦ ÇÏ°í ÀÖ´õ¶óµµ ½Ã½ºÅÛ Á¾·á½Ã¿¡´Â ÀÌ Ã³¸®°¡ »ý·«µÊÀ¸·Î º°µµÀÇ Ã³¸®°¡ ÀÖ¾î¾ß ÇÑ´Ù.

Ç÷§Æû

95ÀÌ»ó

ÂüÁ¶

WM_ENDSESSION : ¿î¿µÃ¼Á¦ Á¾·á°¡ °áÁ¤µÈ ÈÄ¿¡ º¸³»Áö´Â ¸Þ½ÃÁöÀÌ´Ù.


written by http://www.winapi.co.kr