Capturing an Icon from an EXE (Visual C++ 5 and later)

Take the following steps to add some code that will let you capture icons from EXEs.

1.

Start with the project you created in Capturing an Active Window.

2.

Add a command button and set the ID and Caption properties as follows:

 

ID

Caption

 

IDC_CAPEXE

Capture EXE

 

3.

Back in MFC Class Wizard, do the following:

 

a.

Click the Message Maps tab.

 

b.

In the Class Name combo box, select CScrCapDlg.

 

c.

In the Object IDs list box, select IDC_CAPEXE.

 

d.

In the Messages list box, select BN_CLICKED.

 

e.

Click the Add function button. Choose OK for the default function name (OnCapexe).

 

f.

Click the Edit Code button and code the OnCapexe procedure as follows:

void CScrCapDlg::OnCapexe() 
{
   short nCount = 0;

   m_pLEADRasterScr->CaptureGetResourceCount ("c:\\win98\\calc.exe", SCR_CAP_ICON);
   nCount = m_pLEADRasterScr->GetCaptureResourceCount();
   if (nCount < 1)
      AfxMessageBox(TEXT("No Icons."));
   else
   {
      m_pLEADRasterScr->PutTransparentColor (RGB(255,255, 255));
      /*capture by string resource id */
      /*Please note that the exe and id may not be the same on your system.*/
      /*Be sure to replace this with a valid exe name and id for your system. */
      m_pLEADRasterScr->CaptureEXE ("c:\\win98\\calc.exe", SCR_CAP_ICON, "sc", FALSE, FALSE);
      m_LEADRasterView1.GetRaster().SetBitmap(m_pLEADRasterScr->GetBitmap ());
 

      m_LEADRasterView1.GetRaster().SetBitmapTransparentColor (RGB(255, 255, 255));
      m_LEADRasterView1.GetRaster().SetBitmapEnableTransparency (TRUE);
      AfxMessageBox(TEXT("Wait"));
   }

   nCount = 0;

   m_pLEADRasterScr->CaptureGetResourceCount ("c:\\win98\\defrag.exe", SCR_CAP_ICON);
   nCount = m_pLEADRasterScr->GetCaptureResourceCount ();

   if (nCount < 1)
      AfxMessageBox(TEXT("No Icons."));
   else
   {
      m_pLEADRasterScr->PutTransparentColor (RGB(255,255, 255));
      /* now, capture by numeric resource id */
      /*Please note that the exe and id may not be the same on your system.*/
      /*Be sure to replace this with a valid exe name and id for your system. */
      m_pLEADRasterScr->CaptureEXE ("c:\\win98\\defrag.exe", SCR_CAP_ICON, "113", TRUE, FALSE);
      m_LEADRasterView1.GetRaster().SetBitmap(m_pLEADRasterScr->GetBitmap ());
      m_LEADRasterView1.GetRaster().SetBitmapTransparentColor (RGB(255, 255, 255));
      m_LEADRasterView1.GetRaster().SetBitmapEnableTransparency (TRUE);
      AfxMessageBox(TEXT("Wait"));
   }

   nCount = 0;

   m_pLEADRasterScr->CaptureGetResourceCount ("c:\\win98\\Explorer.exe", SCR_CAP_ICON);
 nCount = m_pLEADRasterScr->GetCaptureResourceCount ();

   if (nCount < 1)
      AfxMessageBox(TEXT("No Icons."));

   else
   {
      m_pLEADRasterScr->PutTransparentColor (RGB(255,255, 255));
      /* finally, capture by resource index */
      /*Please note that the exe and id may not be the same on your system.*/
      /*Be sure to replace this with a valid exe name and id for your system. */
      m_pLEADRasterScr->CaptureEXE ("c:\\win98\\Explorer.exe", SCR_CAP_ICON, "0", TRUE, TRUE);
      m_LEADRasterView1.GetRaster().SetBitmap(m_pLEADRasterScr->GetBitmap ());
      m_LEADRasterView1.GetRaster().SetBitmapTransparentColor (RGB(255,255, 255));
      m_LEADRasterView1.GetRaster().SetBitmapEnableTransparency (TRUE);
      AfxMessageBox(TEXT("Wait"));
   }
}

4.

On the main menu, select Build> Build ScrCap.exe to build the project.

5.

On the main menu, select Build> Execute ScrCap.exe to run the project.