ÀÏ¹Ý ÆäÀÌÁöÀÇ bExplorerPopup ¿É¼ÇÀº Ž»ö±âÀÇ Æ˾÷¸Þ´º¿¡ ¡®DangeunÀ¸·Î ÆíÁý¡¯ Ç׸ñÀ» Ç¥½ÃÇÒ °ÍÀΰ¡ ¾Æ´Ñ°¡¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ¿É¼ÇÀÌ ¼³Á¤µÇ¾î ÀÖÀ¸¸é Ž»ö±â¿¡¼ ÆíÁýÆÄÀÏÀ» ¼±ÅÃÇÑ ÈÄ °ð¹Ù·Î DangeunÀ» È£ÃâÇÒ ¼ö ÀÖ¾î ¹®¼ Áß½ÉÀÇ ÆíÁýÀ» ÇÒ ¼ö ÀÖ´Ù. ÆíÁý±â¸¦ ½ÇÇàÇسõ°í ÆíÁýÇÒ ÆÄÀÏÀ» ¿©´Â °ÍÀÌ ¾Æ´Ï¶ó ÆÄÀÏÀ» ¸ÕÀú ¼±ÅÃÇسõ°í ÆíÁý±â¸¦ °í¸¦ ¼ö ÀÖÀ¸¸ç »ç¿ëÀÚ ÇàÀ§¸¦ Áß½ÉÀ¸·Î ÇÏ´Â ¾ÆÁÖ ÈǸ¢ÇÑ ¹æ¹ýÀÌ´Ù.
Ž»ö±âÀÇ Æ˾÷¸Þ´º¿¡ ´ëÇÑ ¼³Á¤Àº ·¹Áö½ºÆ®¸®¿¡ ÀúÀåµÇ¸ç °¢°¢ÀÇ È®ÀåÀÚ¿¡ ´ëÇØ Æ˾÷¸Þ´º¸¦ ºÙÀÏ ¼ö ÀÖ´Ù. ·¹Áö½ºÆ®¸®ÀÇ ¾à¼ÓµÈ À§Ä¡¿¡ Å°¸¦ »ý¼ºÇسõÀ¸¸é Ž»ö±â´Â Æ˾÷¸Þ´º¸¦ ¿ ¶§ ÀÌ °ªÀ» ÂüÁ¶ÇÏ¿© Æ˾÷¸Þ´º¿¡ Ç׸ñÀ» Ãß°¡ÇÑ´Ù. ´ÙÀ½ ÇÔ¼ö´Â ¸ðµç Á¾·ùÀÇ ÆÄÀÏ¿¡ ´ëÇØ Æ˾÷¸Þ´º¸¦ ºÙÀ̰ųª Á¦°ÅÇÑ´Ù. Dangeun.cpp¿¡ ÀÌ ÇÔ¼ö¸¦ ÀÛ¼ºÇÑ´Ù.
void RegisterPopup(BOOL bReg)
{
TCHAR Path[MAX_PATH];
GetModuleFileName(g_hInst,Path,MAX_PATH);
lstrcat(Path, " \"%1\"");
if (bReg) {
SHRegWriteString(SHCR,"*\\shell\\DangeunÀ¸·Î ÆíÁý\\Command",NULL,Path);
} else {
SHDeleteKey(SHCR,"*\\shell\\DangeunÀ¸·Î ÆíÁý");
}
}
ÄÚµå ³»¿ëÀ» º¸¸é ¾Ë°ÚÁö¸¸ HKEY_CURRENT_USERÀÇ *¼ºêÅ°¿¡ ¡®shell\DangeunÀ¸·Î ÆíÁý¡¯ ¼ºêÅ°¸¦ ÀÛ¼ºÇسõÀ¸¸é * È®ÀåÀÚ, Áï ¸ðµç È®ÀåÀÚ¿¡ ´ëÇØ ÀÌ Æ˾÷¸Þ´º¸¦ º¸¿©ÁØ´Ù. ÀÌ ¸Þ´º°¡ ¼±ÅõǸé Command ¼ºêÅ°¿¡ ±â·ÏµÈ ½ÇÇàÆÄÀÏÀ» ½ÇÇàÇ쵂 Àμö·Î ¼±Åà ÆÄÀÏÀÇ °æ·Î¸¦ ³Ñ°Ü ÁÖµµ·Ï µÇ¾î ÀÖ´Ù. ¿¹¸¦ µé¾î ReadMe.txt ÆÄÀÏ¿¡¼ ¡®DangeunÀ¸·Î ÆíÁý¡¯À» ¼±ÅÃÇϸé Dangeun.exe ¡®ReadMe.txt¡¯°¡ ½ÇÇàµÈ´Ù. ±ä À̸§À» Áö¿øÇϱâ À§ÇØ Àμö´Â ¹Ýµå½Ã µû¿ÈÇ¥·Î ¹¾î¾ß ÇÑ´Ù.
Æ˾÷¸Þ´ºÀÇ Ç׸ñÀ» »èÁ¦ÇÒ ¶§´Â ·¹Áö½ºÆ®¸®ÀÇ ¼ºêÅ°¸¦ »èÁ¦ÇÏ¸é µÈ´Ù. ÀÌ Äڵ忡¼ »ç¿ëµÈ SHDeleteKey ÇÔ¼ö´Â ÇÏÀ§ Ç׸ñ±îÁö ÇѲ¨¹ø¿¡ »èÁ¦ÇÑ´Ù. RegDeleteKey ÇÔ¼ö´Â 98ÀÌÇÏ¿¡¼´Â ÇÏÀ§ Ç׸ñÀ» Áö¿öÁÖÁö¸¸ 2000¿¡¼´Â ±×·¸Áö ¾ÊÀ¸¹Ç·Î Àç±Í È£ÃâÀ» »ç¿ëÇؾ߸¸ ÇÏÀ§ Ç׸ñÀ» Áö¿ï ¼ö Àִµ¥ ºñÇØ ÀÌ ÇÔ¼ö´Â ¿î¿µÃ¼Á¦ ¹öÀü¿¡ »ó°ü¾øÀÌ ÇÏÀ§ Ç׸ñÀ» »èÁ¦ÇÑ´Ù. ÀÌ ÇÔ¼ö¸¦ ¾²±â À§Çؼ´Â Shlwapi.h¸¦ ÀÎŬ·çµåÇØ¾ß Çϸç Shlwapi.lib¸¦ ¿¬°áÇØ¾ß Çϴµ¥ ÀÌ ÀÛ¾÷Àº Dangeun1À» ¸¸µé ¶§ ÀÌ¹Ì ´Ù Çسõ¾Ò´Ù.
ApplyNow¿¡¼´Â bExplorerPopup ¿É¼Ç°ªÀÌ º¯°æµÉ ¶§ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© Æ˾÷¸Þ´º¸¦ ¼³Ä¡Çϰųª Á¦°ÅÇÑ´Ù. ÀÌ ¿É¼ÇÀº ApiEdit¿Í´Â »ó°üÀÌ ¾øÀ¸¹Ç·Î while ·çÇÁ ¹Ù±ù¿¡¼ Àû¿ëÇØ¾ß ÇÑ´Ù.
void ApplyNow()
{
HWND hChild;
SInfo *pSi;
HDC hdc;
LOGFONT tFont;
if (Option.bExplorerPopup != NewOption.bExplorerPopup) {
RegisterPopup(NewOption.bExplorerPopup);
}
....
¼³Á¤ ´ëÈ»óÀÚ¿¡¼ ÀÌ ¿É¼ÇÀ» ¼±ÅÃÇÑ ÈÄ Å½»ö±â¸¦ È®ÀÎÇغ¸¸é ´çÀå Æ˾÷¸Þ´º¿¡ ´ç±Ù Ç׸ñÀÌ ³ªÅ¸³¯ °ÍÀÌ´Ù.
ÀÌ ¸Þ´º¸¦ ¼±ÅÃÇÏ¸é ´ç±ÙÀÌ ½ÇÇàµÈ´Ù. ÇÏÁö¸¸ ¾ÆÁ÷±îÁö ÆíÁý ´ë»ó ÆÄÀÏÀ» Àμö·Î Àü´Þ¹Þ´Â ±â´ÉÀ» ÀÛ¼ºÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡ ÆÄÀÏÀº ¿¸®Áö ¾Ê´Âµ¥ ÀÌ ±â´ÉÀº Àá½Ã ÈÄ¿¡ ÀÛ¼ºÇϵµ·Ï ÇÏÀÚ. ÀÌ ¿É¼Ç¿¡ ÀÇÇØ ·¹Áö½ºÆ®¸®¿¡ ±â·ÏµÇ´Â °ªÀº Dangeun.exeÀÇ Àý´ë°æ·Î´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¼³Ä¡¸¦ ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â ´Üµ¶ ½ÇÇàÆÄÀÏÀ̹ǷΠ¾î¶² À§Ä¡·Î³ª ÀÚÀ¯·Ó°Ô ¿Å°Ü¼ ½ÇÇàÇÒ ¼ö ÀÖÀ¸¸ç ¶ÇÇÑ ÈçÇÑ °æ¿ì´Â ¾Æ´ÏÁö¸¸ »ç¿ëÀÚ¿¡ ÀÇÇØ ½ÇÇàÆÄÀÏÀÇ À̸§ÀÌ Baechoo.exe³ª Muoo.exe·Î ¹Ù²ð ¼öµµ ÀÖ´Ù.
±×·¡¼ RegisterPopup¿¡¼ ÇÑ ¹ø µî·ÏÇسõÀº Àý´ë°æ·Î°¡ Ç×»ó Á¤È®ÇÏ´Ù°í º¸ÀåÇÒ ¼ö ¾øÀ¸¹Ç·Î ¸Å ½ÇÇà½Ã¸¶´Ù ½ÇÁ¦ °æ·Î·Î º¯°æÇϵµ·Ï ÇÑ´Ù. OnCreate¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇϵµ·Ï ÇÏÀÚ.
int OnCreate(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
if (SHRegReadInt(SHCU,KEY"Setting","StartAction",1000) == 1000) {
} else {
Option.Load(KEY);
if (Option.bExplorerPopup) {
RegisterPopup(TRUE);
}
}
....
·¹Áö½ºÆ®¸®¿¡¼ ¼³Á¤»óŸ¦ Àоî¿Â Á÷ÈÄ¿¡ bExplorerPopup ¿É¼ÇÀÌ ¼±ÅõǾî ÀÖÀ¸¸é ÀÚ½ÅÀÇ °æ·Î¸¦ °»½ÅÇϵµ·Ï ÇÏ¿´´Ù. ÀÌ·¸°Ô Çϸé À§Ä¡¸¦ ¿Å±â°Å³ª À̸§À» ¹Ù²Ù´õ¶óµµ ÇÑ ¹ø¸¸ ½ÇÇàÇÏ¸é ·¹Áö½ºÆ®¸®ÀÇ Á¤º¸°¡ °»½ÅµÇ¾î Ž»ö±â°¡ Ç×»ó ´ç±ÙÀ»(À̸§ÀÌ ¹»·Î ¹Ù²î¾úµçÁö) Á¦´ë·Î ãÀ» ¼ö ÀÖ´Ù. Ž»ö±âÀÇ Æ˾÷¸Þ´º¿¡ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¸Þ´º¸¦ Ãß°¡ÇÏ·Á¸é ¿øÄ¢ÀûÀ¸·Î Ž»ö±â¿Í Åë½ÅÇÒ ¼ö ÀÖ´Â COM °³Ã¼¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. COM °³Ã¼´Â ¼±ÅÃµÈ ÆÄÀÏ¿¡ µû¶ó ´Ù¸¥ Æ˾÷ Ç׸ñÀ» ¸¸µé ¼ö ÀÖÀ¸¸ç ¸Þ´ºÀÇ Ä¸¼ÇÀ» ½Ç½Ã°£À¸·Î °áÁ¤ÇÒ ¼ö ÀÖ´Â µî ¿©·¯ °¡Áö ÀåÁ¡ÀÌ ÀÖ´Ù.
ÇÏÁö¸¸ COM °³Ã¼´Â ºÐ¸®µÈ DLLÀ̾î¾ß ÇÑ´Ù´Â °ÍÀÌ ºÎ´ã½º·´°í ÀÌ ¿¹Á¦ÀÇ °æ¿ì ¸ðµç ÆÄÀÏ¿¡ ´ëÇØ Æ˾÷¸Þ´º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖÀ¸¸ç ¸Þ´ºÀÇ Ä¸¼ÇÀÌ °íÁ¤µÇ¾î ÀÖÀ¸¹Ç·Î Á» ´õ °£´ÜÇÑ ¹æ¹ýÀ» »ç¿ëÇÏ¿´´Ù. Ž»ö±â¿ÍÀÇ ¿¬°áÀ» ¿Ï·áÇÏ·Á¸é Ž»ö±â°¡ Àü´ÞÇÏ´Â Àμö·ÎºÎÅÍ ÆíÁýÇÒ ÆÄÀϸíÀ» ÃßÃâÇØ ³»°í ±× ÆÄÀÏÀ» Áï½Ã ¿¾î¾ß ÇÑ´Ù. ÃʱâÈ ¿Ï·á ½ÃÁ¡ÀÎ OnTimer¿¡¼ ¸í·ÉÇà Àμö¸¦ Á¶»çÇÏ¸é µÈ´Ù.
void OnTimer(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
int i;
HWND hChild;
TCHAR szKey[16];
int nEditing;
TCHAR Path[MAX_PATH];
switch (wParam) {
case 100:
KillTimer(hWnd,100);
if (__argc > 1) {
OpenFromFile(__argv[1]);
break;
}
switch (Option.StartAction)
....
¸í·ÉÇà Àμö°¡ Àü´ÞµÇ¾úÀ¸¸é OpenFromFile ÇÔ¼ö·Î ÀÌ ÆÄÀÏÀ» ¿¾î ÁÖ¾ú´Ù. Àμö·Î Àü´ÞµÈ ÆÄÀÏÀ» ¿ ¶§´Â ÀÌ ÆÄÀÏÀ» ´çÀå ¿¶ó´Â ¸í½ÃÀûÀÎ ¸í·ÉÀ» ¹Þ¾ÒÀ¸¹Ç·Î StartActionÀ» ó¸®ÇÏÁö ¾Ê´Â´Ù. ÀÌÁ¦ Ž»ö±â¿¡¼ ÆíÁý ´ë»óÀ» ¸ÕÀú °í¸£°í ´ç±ÙÀ» ½ÇÇàÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. Ž»ö±â°¡ ´ç±ÙÀÌ ¼³Ä¡µÈ °æ·Î¸¦ ã¾Æ ½ÇÇàÇÏ°í ÆíÁýÇÒ ÆÄÀÏÀ» Àμö·Î ¾Ë·ÁÁÖ¸ç ´ç±ÙÀº Àμö·Î Àü´ÞµÈ ÆÄÀÏÀ» ¿ ¼ö ÀÖ´Ù.
Â÷ÈÄ¿¡ È®ÀåÀÚ ¿¬°á ±â´ÉÀ» ±¸ÇöÇϸé ÀÌ Äڵ尡 ¶Ç »ç¿ëµÈ´Ù. ÀÚÁÖ »ç¿ëÇϴ ƯÁ¤ È®ÀåÀÚÀÇ ÆÄÀÏÀ» Dangeun.exe¿Í ¿¬°áÇسõÀ¸¸é Ž»ö±â¿¡¼ ÆÄÀÏÀ» ´õºíŬ¸¯Çϱ⸸ Çصµ °ð¹Ù·Î ÀÌ ÆÄÀÏÀ» ÆíÁýÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î txt È®ÀåÀÚÀÇ ÆíÁý ÇÁ·Î±×·¥À» Dangeun.exe·Î ¼³Á¤Çϸé ÅؽºÆ® ÆÄÀÏÀ» ´õºíŬ¸¯ÇÒ ¶§ ¸Þ¸ðÀå ´ë½Å ´ç±ÙÀÌ ½ÇÇàµÉ ¼öµµ ÀÖ´Ù. ÀÌ ±â´ÉÀº 1.0½ºÆÑ¿¡´Â Æ÷ÇԵǾî ÀÖÁö ¾ÊÁö¸¸ ¾ðÁ¨°¡´Â ±¸ÇöÇÒ °ÍÀÌ¸ç ±× Áغñ¸¦ ¿©±â¼ ¹Ì¸® ÇسõÀº ¼ÀÀÌ´Ù.