°Á Àü Å¿ÀÀÇ Àâ´ã>
À̹ø °Á´ °½ÂÈ£´ÔÀÌ º¸³»ÁֽŠVS.NET 2003 Add-in¿¡ °üÇÑ ³»¿ëÀÔ´Ï´Ù.
¾Ë¾ÆµÎ¸é ¿©·¯¸ð·Î À¯¿ëÇÑ ³»¿ëÀ» °Á·Πº¸³»ÁֽнÂÈ£´Ô²² °¨»çÀÇ ¸»¾¸µå¸³´Ï´Ù
Ãß°¡±â´É(Add-in) Ȱ¿ë
Visual Studio .Net 2003 Add-In °Á 1À» Àоú´Ù´Â °¡Á¤ÇÏ¿¡ ÁøÇàÇϵµ·Ï ÇϰڽÀ´Ï´Ù.
À̹ø °Á¿¡¼´Â Ãß°¡±â´ÉÀ» Ȱ¿ëÇØ¼ VS .NET¿¡ »õ·Î¿î ±â´ÉÀ» Ãß°¡ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
À̸§ÇÏ¿© Clipboard ManagerÀÔ´Ï´Ù.
½Ç¹«¿¡¼ ÀÏÀ» ÇÏ´Ù º¸¸é º¹»ç & ºÙ¿©³Ö±â¸¦ ¸¹ÀÌ »ç¿ëÇÏ°Ô µË´Ï´Ù. ¼ö ¾øÀÌ º¹»ç & ºÙ¿©³Ö±â¸¦ ÇÏ´Ùº¸¸é Á» Àü¿¡ º¹»çÇß¾ú´ø ³»¿ëÀ» ´Ù½Ã ã¾Æ¼ º¹»çÇØ¾ß ÇÏ´Â °æ¿ì°¡ Á¾Á¾ Àִµ¥¿ä. Âü ±ÍÂúÀº ÀÏÀÌÁÒ.
±×·¡¼ Clipboard Manager¶ó´Â ³ðÀ» ÅëÇØ¼ ±× µ¿¾È º¹»çÇß´ø ³»¿ëÀ» °ü¸®ÇÏ´Â ±â´ÉÀ» VS .NET¿¡ Ãß°¡ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. MS OFFICE¿¡µµ ÀÖ´Â ¹¹ ±×·± ±â´ÉÀÔ´Ï´Ù.
Clipboard ManagerÀÇ ±â´ÉÀ» Á¤ÀÇÇØ º¸¸é ´ÙÀ½°ú °°½À´Ï´Ù.
1. °³¹ßÀÚ°¡ Ctrl + C ¸í·ÉÀ» ½ÇÇàÇßÀ» ¶§ º¹»çÇÑ ³»¿ëÀ» ÀúÀåÇÕ´Ï´Ù.
2. º°µµÀÇ UI¸¦ ÅëÇØ ÀúÀåÇÑ ¸ñ·ÏÀ» º¸¿©ÁÖ°í °³¹ßÀÚ°¡ ¼±ÅÃÇØ¼ ¿øÇÏ´Â °÷¿¡ ºÙ¿©³Ö±â¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Clipboard Manager°¡ ½ÇÇàµÈ ¸ð½ÀÀÔ´Ï´Ù.
°£´ÜÇÏÁÒ? ±¸Çöµµ ±×¸® ¾î·ÆÁö ¾ÊÀ¸´Ï ±Ý¹æ µû¶ó ÇÒ ¼ö ÀÖÀ»°Ì´Ï´Ù.
ÀÚ! ½ÃÀÛÇϰڽÀ´Ï´Ù.
1. ÆÄÀÏ > »õ·Î¸¸µé±â > ÇÁ·ÎÁ§Æ® > ±âŸ ÇÁ·ÎÁ§Æ® > È®À强 ÇÁ·ÎÁ§Æ® > Visual Studio.NET Ãß°¡ ±â´É ¼±ÅÃ
À̸§, À§Ä¡¸¦ ÀÔ·Â ¶Ç´Â ¼±ÅÃÇϰí "È®ÀÎ" Ŭ¸¯.
2. ¸¶¹ý»ç°¡ ³ªÅ¸³³´Ï´Ù.
ÇÁ·Î±×·¡¹Ö ¾ð¾î ¼±ÅÃ, ÀÀ¿ëÇÁ·Î±×·¥ È£½ºÆ® ¼±Åà À» ÀûÀûÇÏ°Ô ¼±ÅÃÇϰí "´ÙÀ½" Ŭ¸¯
3. À̸§ ¹× ¼³¸í ÀÔ·Â
4. Ãß°¡ ±â´É ¿É¼Ç ¼±ÅÃ
Á¦ÀÏ Áß¿äÇÑ ºÎºÐÀÔ´Ï´Ù. À§ µÎ °¡Áö ¿É¼ÇÀ» ¼±ÅÃÇÑ ÀÌÀ¯´Â ´ÙÀ½°ú °°½À´Ï´Ù.
- ¿ì¸®´Â Ãß°¡±â´ÉÀÇ UI¸¦ ¸¸µé¾î¼ »ç¿ëÀÚ°¡ º¹»çÇÑ ¸ñ·Ï Áß¿¡¼ ¿øÇÏ´Â Ç׸ñÀ» ¼±ÅÃÇϰí "ºÙ¿©³Ö±â"¸¦
Ŭ¸¯Çϵµ·Ï ÇÒ °ÍÀÔ´Ï´Ù.
- Ãß°¡±â´É UI °¡ ½ÇÇàµÇÁö ¾Ê¾ÒÀ» ¶§µµ ¿ì¸®´Â Clipboard Manager¿¡ º¹»çÇÑ ³»¿ëÀ» Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù.
±×·¯±â À§Çؼ´Â VS .NET°¡ ½ÇÇàµÉ ¶§ Clipboard Managerµµ ·ÎµåµÅ¾ß ÇÕ´Ï´Ù.
5. ³ª¸ÓÁö ȸéÀº ÀûÀýÇÏ°Ô ¼±ÅÃÇϰí "´ÙÀ½" ¶Ç´Â "¸¶Ä§"À» Ŭ¸¯ÇÕ´Ï´Ù.
6. ¸¶¹ý»ç¿¡ ÀÇÇØ »ý¼ºµÈ ÇÁ·ÎÁ§Æ®ÀÔ´Ï´Ù.
¸¶¹ý»ç°¡ »ý¼ºÇÑ ¼Ò½º¿¡ Clipboard Manager¸¦ ±¸ÇöÇϱâ À§ÇÑ Äڵ带 Ãß°¡ÇØ º¸°Ú½À´Ï´Ù.
±â´ÉÀ» ±¸ÇöÇϱ⿡ ¾Õ¼ ¾Ë·Áµå¸®ÀÚ¸é Ãß°¡±â´ÉÀÇ ¸íĪÀÌ Clipboard Manager ÀÌÁö¸¸ »ç½Ç Clipboard¸¦ °ü¸®Çϰųª ÂüÁ¶ÇÏÁö ¾Ê½À´Ï´Ù.
Á¦°¡ È®ÀÎÇÑ ¹Ù·Î´Â .Net Framework¿¡¼ Á¦°øÇÏ´Â Clipboard Ŭ·¡½º´Â ¸¶Áö¸·¿¡ º¹»çµÈ Ç׸ñ¸¸ °¡Áö°í ÀÖ´õ±º¿ä. µû¶ó¼ ¿ì¸®°¡ ±¸ÇöÇÏ·Á°í ÇÏ´Â ±â´É°ú °Å¸®°¡ ¸Ö±â ¶§¹®¿¡ ÀÌ Å¬·¡½º¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
ÀÌÁ¦ Clipboard Manager¸¦ ±¸ÇöÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
º¹»ç ¸í·ÉÀÌ ½ÇÇàµÇ¸é º¹»çµÈ ³»¿ëÀ» ÀúÀåÇØ¾ß Çϴµ¥ ¾î¶»°Ô ±¸ÇöÇØ¾ß ÇÒ±î¿ä? º¹»ç ¸í·ÉÀÌ ½ÇÇàµÇ´Â °ÍÀ» ¾î¶»°Ô ¾Ë ¼ö ÀÖÀ»±î¿ä?
´ÙÇàÈ÷ VS .NET ¿¡¼ ÀÚµ¿È Ŭ¶óÀÌ¾ðÆ®¿¡ ´ëÇØ ¿©·¯ °¡Áö À̺¥Æ®¸¦ Á¦°øÇϰí ÀÖ½À´Ï´Ù. ±× Áß¿¡ CommandEvents¸¦ »ç¿ëÇϸé VS .NET¿¡¼ ÀϾ´Â ¸í·É À̺¥Æ®¸¦ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¼³¸íÀº ÄÚµå·Î ´ë½ÅÇϰڽÀ´Ï´Ù.
//¸â¹ö º¯¼ö ¼±¾ðºÎ¿¡ CommandEvents º¯¼ö ¼±¾ð
private CommandEvents copyEvents;
//OnConnection ¸Þ¼µå¿¡ Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
applicationObject = (_DTE)application;
addInInstance = (AddIn)addInInst;
//Copy ¸í·É: Guid: {5EFC7975-14BC-11CF-9B2B-00AA00573819}, ID: 15
//Events.get_CommandEvents(Guid, ID)¸¦ »ç¿ëÇØ¼ º¹»ç ¸í·É¿¡ ´ëÇØ¼¸¸
//CommandEvents °³Ã¼¿¡ ÇÒ´çÇÏ¿´½À´Ï´Ù.
this.copyEvents = (EnvDTE.CommandEvents)applicationObject.Events.get_CommandEvents("{5EFC7975-14BC-11CF-9B2B-00AA00573819}", 15);
//CommandEvents ÀÇ AfterExecute À̺¥Æ®¿¡ À̺¥Æ®¸¦ ó¸®ÇÒ ¸Þ¼µå¸¦ µî·ÏÇÕ´Ï´Ù.
//AfterExecute : ¸í·ÉÀ» ½ÇÇàÇÑ ´ÙÀ½¿¡ ¹ß»ýÇÕ´Ï´Ù.
this.copyEvents.AfterExecute += new _dispCommandEvents_AfterExecuteEventHandler( copyEvents_AfterExecute );
if(connectMode == Extensibility.ext_ConnectMode.ext_cm_UISetup)
{
object []contextGUIDS = new object[] { };
Commands commands = applicationObject.Commands;
_CommandBars commandBars = applicationObject.CommandBars;
try
{
Command command = commands.AddNamedCommand(addInInstance, "ClipboardManager", "ClipboardManager", "Executes the command for ClipboardManager", true, 59, ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported+(int)vsCommandStatus.vsCommandStatusEnabled);
CommandBar commandBar = (CommandBar)commandBars["Tools"];
CommandBarControl commandBarControl = command.AddControl(commandBar, 1);
}
catch(System.Exception /*e*/)
{}
}
}
|
À̺¥Æ®¸¦ ó¸®ÇÒ ¸Þ¼µå¸¦ Ãß°¡ÇÕ´Ï´Ù. ³»¿ëÀº ÁøÇàÇÏ¸é¼ Ã¤¿ö³ª°¡µµ·Ï ÇϰڽÀ´Ï´Ù.
private void copyEvents_AfterExecute(string Guid, int ID, object CustomIn, object CustomOut)
{
}
|
Ãß°¡ÇÑ ÄÚµå Áß¿¡ "º¹»ç" ¸í·É ¶Ç´Â ´Ù¸¥ ¸í·ÉÀÇ Guid, ID ¸¦ ¾î¶»°Ô ¾Ë¾Æ³»´ÂÁö ±Ã±ÝÇÏ½Ç °Å¶ó »ý°¢µË´Ï´Ù.
ÇÏÁö¸¸ ¿©±â¿¡¼ ¼³¸íÇÏÁö´Â ¾Ê°Ú½À´Ï´Ù. À§ ÄÚµå¿Í À¯»çÇÑ ¸éµµ ÀÖ°í ±×¸® ¾î·ÆÁö ¾ÊÀ¸´Ï ÷ºÎÇÑ ¼Ò½º·Î ´ë½ÅÇÏ·Á ÇÕ´Ï´Ù.(Clipboard Manager ¼Ò½º¿¡ ÷ºÎ)
Áö±Ý±îÁö ÁøÇàÇØ¿Â ³»¿ëÀÌ Clipboard Manager¿¡¼ °¡Àå Áß¿äÇÑ ºÎºÐÀ̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½À¸·Î ³Ñ¾î°¡¼ UI¸¦ ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
¼Ó¼º ¹× À̺¥Æ®¸¦ ´ÙÀ½Ã³·³ Á¤ÀÇ ÇÕ´Ï´Ù.
1. ListBox
lstClipboardList.Name = "lstClipboardList";
lstClipboardList.SelectedIndexChanged += new System.EventHandler(this.lstClipboardList_SelectedIndexChanged);
2. TextBox
txtDetail.Multiline = true;
txtDetail.Name = "txtDetail";
txtDetail.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
txtDetail.Text = "";
3. Button
btnPaste.Name = "btnPaste";
btnPaste.Text = "ºÙ¿©³Ö±â";
btnPaste.Click += new System.EventHandler(this.btnPaste_Click);
4. Button
btnClose.Name = "btnClose";
btnClose.Text = "´Ý±â";
btnClose.Click += new System.EventHandler(this.btnClose_Click);
5. Form
ControlBox = false;
Name = "ClipboardList";
ShowInTaskbar = false;
Text = "Clipboard List";
TopMost = true;
ÀÚ~ UI µðÀÚÀÎÀÌ ³¡³µÀ¸¸é Äڵ带 Ãß°¡ÇØ º¼±î¿ä.
//using Áö½Ã¹® Ãß°¡
using EnvDTE;
//¸â¹ö º¯¼ö Ãß°¡
private _DTE applicationObject;
//»ý¼ºÀÚ Ãß°¡
public ClipboardList(EnvDTE._DTE applicationObject) : this()
{
//Ȱ¼ºÈµÈ ¹®¼ÀÇ ¼±ÅÃµÈ ºÎºÐÀ» °¡Á®¿À±â À§Çؼ DTE °³Ã¼ ÇÒ´ç
this.applicationObject = applicationObject;
}
//Clipboard List¿¡ º¹»çÇÑ ³»¿ëÀ» Ãß°¡ÇÏ´Â public ¸Þ¼µå Ãß°¡
public void AddClipboard(string strText)
{
//Connect.copyEvents_AfterExecute ¿¡¼ È£Ãâ
//Ŭ¸³º¸µå ¸ñ·Ï¿¡ º¹»çÇÑ ÅØ½ºÆ®¸¦ Ãß°¡ÇÔ
lstClipboardList.Items.Insert(0, strText);
}
//Clipboard List SlectedIndexChanded À̺¥Æ® ó¸® ¸Þ¼µå Ãß°¡
private void lstClipboardList_SelectedIndexChanged(object sender, System.EventArgs e)
{
txtDetail.Text = lstClipboardList.Items[lstClipboardList.SelectedIndex].ToString();
}
//ºÙ¿©³Ö±â Click À̺¥Æ® ó¸® ¸Þ¼µå Ãß°¡
private void btnPaste_Click(object sender, System.EventArgs e)
{
try
{
//ÇöÀç Ȱ¼ºÈµÈ ¹®¼ÀÇ ¼±ÅÃµÈ ºÎºÐÀ» °¡Á®¿È.
TextSelection sel = (TextSelection)applicationObject.ActiveDocument.Selection;
//ÁöÁ¤µÈ ¹®ÀÚ¿À» ÇöÀç »ðÀÔ Æ÷ÀÎÆ®¿¡ »ðÀÔ
sel.Insert(txtDetail.Text, 2);//vsInsertFlags.vsInsertFlagsCollapseToStart
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
//´Ý±â Click À̺¥Æ® ó¸® ¸Þ¼µå Ãß°¡
private void btnClose_Click(object sender, System.EventArgs e)
{
this.Hide();
}
|
¿©±â±îÁö UI ¿¡ ´ëÇÑ ÄÚµå´Â ¿Ï¼ºµÆ½À´Ï´Ù.
ÀÌÁ¦ Connect.cs ¿¡¼ UI¸¦ ÀûÀýÇÏ°Ô È£ÃâÇÏ´Â Äڵ带 Ãß°¡ÇÏ¸é µË´Ï´Ù.
//¸â¹ö º¯¼ö Ãß°¡
ClipboardList oClipboardList = null;
//µµ±¸ ¸Þ´º¿¡¼ Clipboard Manager ¸Þ´º¸¦ Ŭ¸¯ÇßÀ» ¶§ ½ÇÇàÇÒ ÄÚµå
public void Exec(string commandName, EnvDTE.vsCommandExecOption executeOption,
ref object varIn, ref object varOut, ref bool handled)
{
handled = false;
if(executeOption == EnvDTE.vsCommandExecOption.vsCommandExecOptionDoDefault)
{
if(commandName == "ClipboardManager.Connect.ClipboardManager")
{
if(oClipboardList == null)
oClipboardList = new ClipboardList(applicationObject);
oClipboardList.Show();
handled = true;
return;
}
}
}
//"º¹»ç" ¸í·ÉÀÌ ½ÇÇàµÈ ÈÄ¿¡ ó¸®ÇÒ ÄÚµå
private void copyEvents_AfterExecute(string Guid, int ID, object CustomIn, object CustomOut)
{
string strText = "";
if(oClipboardList == null)
oClipboardList = new ClipboardList(applicationObject);
strText = ((TextSelection)applicationObject.ActiveDocument.Selection).Text;
if(strText.Length > 0)
oClipboardList.AddClipboard(strText);
}
|
µåµð¾î Clipboard Manager ±¸ÇöÀ» ¸¶ÃƳ׿ä. ÀÌÁ¦ ½ÇÇàÀ» ½ÃÄѺÁ¾ß °ÚÁÒ?
¼³Ä¡ÇÁ·ÎÁ§Æ®¸¦ ºôµåÇÕ´Ï´Ù.
ÀÌÁ¦ ¿©·¯ºÐÀÇ Ãß°¡±â´É ¼³Ä¡ÇÁ·ÎÁ§Æ®ÀÇ Ãâ·Â°æ·Î(Ãß°¡±â´ÉÇÁ·ÎÁ§Æ®¸í\¼³Ä¡ÇÁ·ÎÁ§Æ®¸í\debug)·Î °¡¼ Setup.exe¸¦ ½ÇÇàÇØ¼ Ãß°¡±â´ÉÀ» ¼³Ä¡ÇÕ´Ï´Ù. (VS .NETÀº ¸ðµÎ ´Ý°í ¼³Ä¡Çϼ¼¿ä.)
VS .NET¸¦ ¿°í µµ±¸ ¸Þ´º¸¦ È®ÀÎÇØ º¸¸é ¸Þ´º°¡ Ãß°¡µÅÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
¿ì¸®°¡ ±¸ÇöÇÏ·Á°í Çß´ø ±â´ÉµéÀÌ Àß µ¿ÀÛÇÏ´ÂÁö Å×½ºÆ®¸¦ ÇØº¸½Ã±â ¹Ù¶ø´Ï´Ù.
ºÎÁ·ÇÑ°Ô ¸¹Áö¸¸ ±×·±´ë·Î ¾µ¸¸ÇÑ Ãß°¡±â´É(add-in)ÀÌ ¸¸µé¾îÁ³´Ù°í »ý°¢µÇ´Âµ¥ ¿©·¯ºÐÀº ¾î¶²Áö ¸ð¸£°Ú³×¿ä. ºÎÁ·ÇÑ ºÎºÐÀ» ä¿ö³ª°¡´Â °ÍÀº ¿©·¯ºÐÀÇ ¸òÀ¸·Î ³²±â¸é¼ °Á¸¦ ¸¶Ä¥±î ÇÕ´Ï´Ù.
´õ¿î ¿©¸§ °Ç° Á¶½ÉÇϼ¼¿ä.
p.s
Ãß°¡±â´É Á¦°Å´Â "ÇÁ·Î±×·¥ Ãß°¡/Á¦°Å"¿¡¼ ÇÏ¸é µË´Ï´Ù.(VS .NET ´Ý¾Æ¾ß ÇÔ.)
MSDN(Ãß°¡±â´É °ü·Ã url)
Visual Studio ȯ°æ È®Àå
ÀÚµ¿È ¹× È®À强 ÂüÁ¶
DOWNLOAD : °Á¿¡¼ »ç¿ëµÈ ¼Ò½º¸¦ ´Ù¿î·Îµå ¹ÞÀ¸½Ã·Á¸é Ŭ¸¯Çϼ¼¿ä
°Á ¸ñ·ÏÀ¸·Î..
|