812 lines
22 KiB
C++
812 lines
22 KiB
C++
// MyToolsKit.cpp : implementation file
|
||
//
|
||
|
||
#include "stdafx.h"
|
||
#include "Client.h"
|
||
#include "MyToolsKit.h"
|
||
#include <Winbase.h>
|
||
#include <assert.h>
|
||
|
||
#ifdef _DEBUG
|
||
#define new DEBUG_NEW
|
||
#undef THIS_FILE
|
||
static char THIS_FILE[] = __FILE__;
|
||
#endif
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CMyToolsKit dialog
|
||
CIcons *pIcons = NULL;
|
||
|
||
CMyToolsKit::CMyToolsKit(CWnd* pParent /*=NULL*/)
|
||
: CDialog(CMyToolsKit::IDD, pParent)
|
||
{
|
||
//{{AFX_DATA_INIT(CMyToolsKit)
|
||
m_Path = _T("");
|
||
m_time = 1;
|
||
//}}AFX_DATA_INIT
|
||
}
|
||
|
||
|
||
void CMyToolsKit::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialog::DoDataExchange(pDX);
|
||
//{{AFX_DATA_MAP(CMyToolsKit)
|
||
DDX_Control(pDX, IDC_SLIDER1, m_Sllider);
|
||
DDX_Control(pDX, IDC_LIST2, m_List);
|
||
DDX_Text(pDX, IDC_EDIT_PATH, m_Path);
|
||
DDX_Text(pDX, IDC_EDIT_TIME1, m_time);
|
||
DDV_MinMaxUInt(pDX, m_time, 1, 100000);
|
||
//}}AFX_DATA_MAP
|
||
}
|
||
|
||
|
||
BEGIN_MESSAGE_MAP(CMyToolsKit, CDialog)
|
||
//{{AFX_MSG_MAP(CMyToolsKit)
|
||
ON_BN_CLICKED(IDC_SELECTICON, OnSelecticon)
|
||
ON_LBN_SELCHANGE(IDC_LIST2, OnSelchangeList2)
|
||
ON_WM_PAINT()
|
||
ON_BN_CLICKED(IDC_BUTTON_SAVEAS, OnButtonSaveas)
|
||
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
|
||
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
|
||
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
|
||
ON_BN_CLICKED(IDC_SELECTFILE, OnSelectfile)
|
||
ON_BN_CLICKED(IDC_START, OnStart)
|
||
ON_BN_CLICKED(IDC_STOP2, OnStop)
|
||
ON_WM_TIMER()
|
||
ON_WM_CLOSE()
|
||
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
|
||
ON_BN_CLICKED(IDC_FILE_PATH, OnFilePath)
|
||
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER1, OnCustomdrawSlider1)
|
||
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
|
||
//}}AFX_MSG_MAP
|
||
END_MESSAGE_MAP()
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CMyToolsKit message handlers
|
||
|
||
BOOL CMyToolsKit::OnInitDialog()
|
||
{
|
||
CDialog::OnInitDialog();
|
||
HINSTANCE hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_MGICON_A),RT_GROUP_ICON);
|
||
HICON m_hIcon = (HICON)::LoadImage(hInstResource,MAKEINTRESOURCE(IDI_MGICON_A),IMAGE_ICON,24, 24, 0);
|
||
if( m_hIcon != 0 )
|
||
{
|
||
SetIcon(m_hIcon,TRUE);
|
||
}
|
||
// TODO: Add extra initialization here
|
||
// SetIcon(AfxGetApp()->LoadIcon(IDI_TOOL),FALSE);
|
||
// SetIcon(AfxGetApp()->LoadIcon(IDI_TOOL),TRUE);
|
||
|
||
//<2F><>ʼ<EFBFBD><CABC>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
|
||
lpIR = (LPICONRESOURCE )malloc(sizeof(ICONRESOURCE));
|
||
lstrcpy( lpIR->szOriginalICOFileName, "Untitled" );
|
||
lstrcpy( lpIR->szOriginalDLLFileName, "" );
|
||
lpIR->nNumImages = 0;
|
||
|
||
GetDlgItem(IDC_BUTTON_SAVEAS)->EnableWindow(FALSE);
|
||
((CButton *)GetDlgItem(IDC_START))->EnableWindow(TRUE);
|
||
((CButton *)GetDlgItem(IDC_STOP2))->EnableWindow(FALSE);
|
||
|
||
|
||
GetDlgItem(IDC_SLIDER1)->EnableWindow(FALSE);
|
||
GetDlgItem(IDC_EDIT5)->EnableWindow(FALSE);
|
||
GetDlgItem(IDC_BUTTON5)->EnableWindow(FALSE);
|
||
|
||
return TRUE; // return TRUE unless you set the focus to a control
|
||
// EXCEPTION: OCX Property Pages should return FALSE
|
||
}
|
||
|
||
|
||
BOOL CALLBACK MyEnumProcedure( HANDLE hModule, LPCTSTR lpszType, LPTSTR lpszName, LONG lParam )
|
||
{
|
||
TCHAR szBuffer[256];
|
||
LONG nIndex = LB_ERR;
|
||
LPTSTR lpID = NULL;
|
||
|
||
// Name is from MAKEINTRESOURCE()
|
||
if( HIWORD(lpszName) == 0 )
|
||
{
|
||
wsprintf( szBuffer, "ͼ<EFBFBD><EFBFBD> [%d]", (DWORD)lpszName );
|
||
lpID = lpszName;
|
||
}
|
||
else
|
||
{
|
||
// Name is string
|
||
//lpID = strdup( lpszName );
|
||
|
||
wsprintf( szBuffer, "ͼ<EFBFBD><EFBFBD> [%s]", lpszName);
|
||
}
|
||
// Add it to the listbox
|
||
nIndex = SendDlgItemMessage( (HWND)lParam, IDC_LIST2, LB_ADDSTRING, 0, (LPARAM)(szBuffer) );
|
||
// Set the item data to be the name of the resource so we can get it later
|
||
SendDlgItemMessage( (HWND)lParam, IDC_LIST2, LB_SETITEMDATA, (WPARAM)nIndex, (LPARAM)lpID );
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
void CMyToolsKit::OnSelecticon()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
TCHAR szFile[MAX_PATH] = {0};
|
||
OPENFILENAME OpenFileName;
|
||
|
||
OpenFileName.lStructSize = sizeof(OPENFILENAME);
|
||
OpenFileName.hwndOwner = m_hWnd;
|
||
OpenFileName.hInstance = AfxGetInstanceHandle();
|
||
OpenFileName.lpstrFilter = _T("PE FILE (*.exe)\0*.exe\0*.dll\0*.ico\0*.bmp\0*.tcl\0\0");
|
||
OpenFileName.lpstrCustomFilter = NULL;
|
||
OpenFileName.nMaxCustFilter = 0;
|
||
OpenFileName.nFilterIndex = 0;
|
||
OpenFileName.lpstrFile = szFile;
|
||
OpenFileName.nMaxFile = sizeof(szFile);
|
||
OpenFileName.lpstrFileTitle = NULL;
|
||
OpenFileName.nMaxFileTitle = 0;
|
||
OpenFileName.lpstrInitialDir = _T(".");
|
||
OpenFileName.lpstrTitle = _T("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>PE<EFBFBD>ļ<EFBFBD>");
|
||
OpenFileName.nFileOffset = 0;
|
||
OpenFileName.nFileExtension = 0;
|
||
OpenFileName.lpstrDefExt = NULL;
|
||
OpenFileName.Flags = OFN_SHOWHELP | OFN_EXPLORER;
|
||
|
||
|
||
if(GetOpenFileName(&OpenFileName))
|
||
{
|
||
|
||
szOpenFileName = szFile;
|
||
|
||
char *Poiner = szFile;
|
||
|
||
WORD i = strlen(szFile);
|
||
|
||
Poiner+=i-3;
|
||
|
||
szOpenFileExtName.Format("%s",Poiner);
|
||
|
||
Poiner=NULL;
|
||
|
||
szOpenFileExtName.MakeLower ();
|
||
|
||
m_List.ResetContent (); //ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
||
|
||
if(szOpenFileExtName == "exe")//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʾEXE<58><45>DLL<4C><4C><EFBFBD><EFBFBD>Դ<EFBFBD>ļ<EFBFBD>
|
||
{
|
||
HINSTANCE hLibrary;
|
||
|
||
// Load the DLL/EXE - NOTE: must be a 32bit EXE/DLL for this to work
|
||
if( (hLibrary = LoadLibraryEx( szOpenFileName, NULL, LOAD_LIBRARY_AS_DATAFILE )) == NULL )
|
||
{
|
||
// Failed to load - abort
|
||
MessageBox( szOpenFileName+ "<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WIN32<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>!", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK );
|
||
return;
|
||
}
|
||
// Store the info
|
||
EDII.szFileName =szOpenFileName;
|
||
EDII.hInstance = hLibrary;
|
||
|
||
// Fill in the listbox with the icons available
|
||
if( ! EnumResourceNames( EDII.hInstance, RT_GROUP_ICON, (ENUMRESNAMEPROC )MyEnumProcedure, (LPARAM)GetSafeHwnd()) )
|
||
{
|
||
MessageBox( "<EFBFBD>о<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>!", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK );
|
||
return;
|
||
}
|
||
|
||
}
|
||
|
||
m_List.SetCurSel (0);
|
||
if( m_List.GetCount() == 0 )
|
||
{
|
||
MessageBox( "<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ!", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK );
|
||
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><CDB8>ư<EFBFBD>ťΪ<C5A5><CEAA>Ч״̬
|
||
GetDlgItem(IDC_BUTTON_SAVEAS)->EnableWindow(FALSE);
|
||
return;
|
||
}
|
||
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><CDB8>ư<EFBFBD>ťΪ<C5A5><CEAA>Ч״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GetDlgItem(IDC_BUTTON_SAVEAS)->EnableWindow(TRUE);
|
||
|
||
//ˢ<>µ<EFBFBD><C2B5><EFBFBD>OnPaint<6E><74><EFBFBD><EFBFBD>ʾͼ<CABE><CDBC>
|
||
InvalidateRect(NULL,TRUE);
|
||
|
||
}
|
||
}
|
||
|
||
void CMyToolsKit::OnSelchangeList2()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
InvalidateRect(NULL,TRUE);
|
||
}
|
||
|
||
void CMyToolsKit::OnPaint()
|
||
{
|
||
CPaintDC dc(this); // device context for painting
|
||
|
||
// TODO: Add your message handler code here
|
||
LPTSTR lpIconID;
|
||
HICON hIcon;
|
||
if((lpIconID=(LPTSTR)m_List.GetItemData(m_List.GetCurSel()))!=(LPTSTR)LB_ERR )
|
||
{
|
||
if(szOpenFileExtName=="exe"||szOpenFileExtName=="dll"||szOpenFileExtName=="icl")
|
||
{
|
||
hIcon=pIcons->GetIconFromInstance(EDII.hInstance,lpIconID);
|
||
CStatic* pStatic = (CStatic*) GetDlgItem(IDC_ICONS);
|
||
pStatic->SetIcon (hIcon);
|
||
}
|
||
}
|
||
// Do not call CDialog::OnPaint() for painting messages
|
||
}
|
||
|
||
|
||
void CMyToolsKit::OnButtonSaveas()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
LPTSTR lpIconID;
|
||
|
||
CFileDialog fileDialog( FALSE,"*.ICO",NULL,NULL,"ͼ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>(*.ICO)|*.ICO|λͼ<EFBFBD>ļ<EFBFBD>(*.BMP)|*.BMP||");
|
||
if (fileDialog.DoModal() == IDOK)
|
||
{
|
||
szSaveFileName=fileDialog.GetPathName();
|
||
szSaveFileExtName= fileDialog.GetFileExt ();
|
||
szSaveFileExtName.MakeLower ();
|
||
|
||
if(szOpenFileExtName=="exe"||szOpenFileExtName=="dll"||szOpenFileExtName=="icl")
|
||
{
|
||
if((lpIconID=(LPTSTR)m_List.GetItemData (m_List.GetCurSel()))!= (LPTSTR)LB_ERR)
|
||
{
|
||
lpIR=pIcons->ReadIconFromEXEFile (szOpenFileName,lpIconID);
|
||
}
|
||
}
|
||
if(szSaveFileExtName=="bmp")
|
||
{
|
||
if(lpIR!=NULL && m_List.GetCount ()>0)
|
||
{
|
||
BeginWaitCursor();
|
||
pIcons->IconImageToBMPFile (szSaveFileName,&lpIR->IconImages [0]);
|
||
EndWaitCursor();
|
||
}
|
||
else
|
||
MessageBox( "û<EFBFBD>пɱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ!", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK );
|
||
}
|
||
else if(szSaveFileExtName=="ico")
|
||
{
|
||
if(lpIR!=NULL && m_List.GetCount ()>0)
|
||
{
|
||
BeginWaitCursor();
|
||
pIcons->WriteIconToICOFile (lpIR,szSaveFileName);
|
||
EndWaitCursor();
|
||
}
|
||
else
|
||
MessageBox( "û<EFBFBD>пɱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ!", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK );
|
||
}
|
||
}
|
||
}
|
||
|
||
void CMyToolsKit::OnButton3()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
TCHAR szFile[MAX_PATH] = {0};
|
||
OPENFILENAME OpenFileName;
|
||
|
||
OpenFileName.lStructSize = sizeof(OPENFILENAME);
|
||
OpenFileName.hwndOwner = m_hWnd;
|
||
OpenFileName.hInstance = AfxGetInstanceHandle();
|
||
OpenFileName.lpstrFilter = _T("PE FILE (*.exe)\0*.exe\0\0");
|
||
OpenFileName.lpstrCustomFilter = NULL;
|
||
OpenFileName.nMaxCustFilter = 0;
|
||
OpenFileName.nFilterIndex = 0;
|
||
OpenFileName.lpstrFile = szFile;
|
||
OpenFileName.nMaxFile = sizeof(szFile);
|
||
OpenFileName.lpstrFileTitle = NULL;
|
||
OpenFileName.nMaxFileTitle = 0;
|
||
OpenFileName.lpstrInitialDir = _T(".");
|
||
OpenFileName.lpstrTitle = _T("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>EXE<EFBFBD>ļ<EFBFBD>");
|
||
OpenFileName.nFileOffset = 0;
|
||
OpenFileName.nFileExtension = 0;
|
||
OpenFileName.lpstrDefExt = NULL;
|
||
OpenFileName.Flags = OFN_SHOWHELP | OFN_EXPLORER;
|
||
|
||
|
||
if(GetOpenFileName(&OpenFileName))
|
||
{
|
||
SetDlgItemText(IDC_EDIT2,szFile);
|
||
}
|
||
}
|
||
|
||
void CMyToolsKit::OnButton1()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
TCHAR szFile[MAX_PATH] = {0};
|
||
OPENFILENAME OpenFileName;
|
||
|
||
OpenFileName.lStructSize = sizeof(OPENFILENAME);
|
||
OpenFileName.hwndOwner = m_hWnd;
|
||
OpenFileName.hInstance = AfxGetInstanceHandle();
|
||
OpenFileName.lpstrFilter = _T("ico FILE (*.ico)\0*.ico\0\0");
|
||
OpenFileName.lpstrCustomFilter = NULL;
|
||
OpenFileName.nMaxCustFilter = 0;
|
||
OpenFileName.nFilterIndex = 0;
|
||
OpenFileName.lpstrFile = szFile;
|
||
OpenFileName.nMaxFile = sizeof(szFile);
|
||
OpenFileName.lpstrFileTitle = NULL;
|
||
OpenFileName.nMaxFileTitle = 0;
|
||
OpenFileName.lpstrInitialDir = _T(".");
|
||
OpenFileName.lpstrTitle = _T("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
|
||
OpenFileName.nFileOffset = 0;
|
||
OpenFileName.nFileExtension = 0;
|
||
OpenFileName.lpstrDefExt = NULL;
|
||
OpenFileName.Flags = OFN_SHOWHELP | OFN_EXPLORER;
|
||
|
||
|
||
if(GetOpenFileName(&OpenFileName))
|
||
{
|
||
SetDlgItemText(IDC_EDIT1,szFile);
|
||
}
|
||
}
|
||
|
||
|
||
#ifndef SAFE_RELEASE
|
||
#define SAFE_RELEASE(x) \
|
||
if(x != NULL) \
|
||
{ \
|
||
x->Release(); \
|
||
x = NULL; \
|
||
}
|
||
#endif
|
||
|
||
#ifndef SAFE_ARRAY_DELETE
|
||
#define SAFE_ARRAY_DELETE(x) \
|
||
if(x != NULL) \
|
||
{ \
|
||
delete[] x; \
|
||
x = NULL; \
|
||
}
|
||
#endif
|
||
|
||
typedef struct tagHEADER
|
||
{
|
||
WORD idReserved;
|
||
WORD idType;
|
||
WORD idCount;
|
||
}HEADER, *LPHEADER;
|
||
|
||
#pragma pack(push)
|
||
#pragma pack(2)
|
||
typedef struct tagGRPICONDIRENTRY
|
||
{
|
||
BYTE bWidth;
|
||
BYTE bHeight;
|
||
BYTE bColorCount;
|
||
BYTE bReserved;
|
||
WORD wPlanes;
|
||
WORD wBitCount;
|
||
DWORD dwBytesInRes;
|
||
WORD nID;
|
||
}GRPICONDIRENTRY, *LPGRPICONDIRENTRY;;
|
||
|
||
typedef struct tagGRPICONDIR
|
||
{
|
||
WORD idReserved;
|
||
WORD idType;
|
||
WORD idCount;
|
||
GRPICONDIRENTRY idEntries[1];
|
||
}GRPICONDIR, *LPGRPICONDIR;
|
||
#pragma pack(pop)
|
||
|
||
|
||
|
||
BOOL ChangeExeIcons(LPCTSTR lpExeName,PBYTE pIconFileData,DWORD dwDataSize)
|
||
{
|
||
LPICONDIRENTRY pIconDirEntry(NULL);
|
||
LPGRPICONDIR pGrpIconDir(NULL);
|
||
LPHEADER pHeader;
|
||
LPBYTE pIconBytes(NULL);
|
||
DWORD nGSize(0);
|
||
HANDLE hUpdate(NULL);
|
||
BOOL bReturn(FALSE);
|
||
do
|
||
{
|
||
BOOL bRet;
|
||
|
||
if(dwDataSize < sizeof(HEADER))break;
|
||
pHeader = LPHEADER(pIconFileData);
|
||
|
||
//<2F><><EFBFBD><EFBFBD>ÿһ<C3BF><D2BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if(dwDataSize <
|
||
(sizeof(HEADER) + sizeof(ICONDIRENTRY) * pHeader->idCount))break;
|
||
pIconDirEntry = LPICONDIRENTRY(pIconFileData + sizeof(HEADER));
|
||
|
||
//<2F><><EFBFBD><EFBFBD>EXE<58>ļ<EFBFBD><C4BC><EFBFBD>RT_GROUP_ICON<4F><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
nGSize = sizeof(GRPICONDIR) + sizeof(GRPICONDIRENTRY) * (pHeader->idCount - 1);
|
||
pGrpIconDir = LPGRPICONDIR(new BYTE[nGSize]);
|
||
ZeroMemory(pGrpIconDir,nGSize);
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>൱<EFBFBD><E0B5B1>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
|
||
pGrpIconDir->idReserved = pHeader->idReserved;
|
||
pGrpIconDir->idType = pHeader->idType;
|
||
pGrpIconDir->idCount = pHeader->idCount;
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿһ<C3BF><D2BB>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ID<49><44>IDΪλ<CEAA><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for(int i = 0;i < pHeader->idCount;i++)
|
||
{
|
||
pGrpIconDir->idEntries[i].bWidth = pIconDirEntry[i].bWidth;
|
||
pGrpIconDir->idEntries[i].bHeight = pIconDirEntry[i].bHeight;
|
||
pGrpIconDir->idEntries[i].bColorCount = pIconDirEntry[i].bColorCount;
|
||
pGrpIconDir->idEntries[i].bReserved = pIconDirEntry[i].bReserved;
|
||
pGrpIconDir->idEntries[i].wPlanes = pIconDirEntry[i].wPlanes;
|
||
pGrpIconDir->idEntries[i].wBitCount = pIconDirEntry[i].wBitCount;
|
||
pGrpIconDir->idEntries[i].dwBytesInRes = pIconDirEntry[i].dwBytesInRes;
|
||
pGrpIconDir->idEntries[i].nID = i+1; //ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ,<2C><><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>Ҫ<EFBFBD><D2AA>֮ǰ<D6AE><C7B0><EFBFBD>ڵ<EFBFBD><DAB5>г<EFBFBD>ͻ,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> FindResource(...,MAKEINTRESOURCE(n),RT_ICON);<3B><><EFBFBD><EFBFBD>
|
||
}
|
||
|
||
hUpdate = BeginUpdateResource(lpExeName, false);
|
||
if (hUpdate)
|
||
{
|
||
//<2F><><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD>RT_GROUP_ICON<4F><4E>Ϣ
|
||
bRet = UpdateResource(
|
||
hUpdate,
|
||
RT_GROUP_ICON,
|
||
MAKEINTRESOURCE(1),//EXE<58><45>ʾΪ<CABE><CEAA>СID<49><44>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
||
MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),
|
||
pGrpIconDir,
|
||
nGSize);
|
||
if (!bRet)break;
|
||
|
||
//<2F><><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>ÿһ<C3BF><D2BB>Icon<6F><6E><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
for(int i = 0;i < pHeader->idCount;i++)
|
||
{
|
||
if(dwDataSize <
|
||
(pIconDirEntry[i].dwImageOffset +
|
||
pIconDirEntry[i].dwBytesInRes))break;
|
||
pIconBytes = pIconFileData + pIconDirEntry[i].dwImageOffset;
|
||
//<><D7BC>pIconBytes<65><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Byte<74><65>Ϣ<EFBFBD><CFA2><EFBFBD>ڸ<EFBFBD><DAB8>µ<EFBFBD>EXE<58>С<EFBFBD>
|
||
|
||
//<2F><><EFBFBD><EFBFBD>ÿһ<C3BF><D2BB>ID<49><44>Ӧ<EFBFBD><D3A6>RT_ICON<4F><4E>Ϣ
|
||
bRet = UpdateResource(
|
||
hUpdate,
|
||
RT_ICON,
|
||
MAKEINTRESOURCE(pGrpIconDir->idEntries[i].nID),
|
||
MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),
|
||
pIconBytes,
|
||
pIconDirEntry[i].dwBytesInRes);
|
||
if(!bRet)break;
|
||
}
|
||
//<2F><><EFBFBD><EFBFBD>EXE<58><45>Դ<EFBFBD>ĸ<EFBFBD><C4B8>²<EFBFBD><C2B2><EFBFBD>
|
||
EndUpdateResource(hUpdate, false);
|
||
bReturn = TRUE;
|
||
}
|
||
}while(false);
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ر<EFBFBD>Icon<6F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SAFE_ARRAY_DELETE(pGrpIconDir);
|
||
return bReturn;
|
||
}
|
||
|
||
BOOL CMyToolsKit::ChangeExeIcon(LPSTR lpIconFile, LPSTR lpExeName)
|
||
{
|
||
HANDLE hIconFile = INVALID_HANDLE_VALUE;
|
||
PBYTE pIconFileData = NULL;
|
||
BOOL bSuceeded = FALSE;
|
||
do
|
||
{
|
||
hIconFile= CreateFile(
|
||
lpIconFile,
|
||
GENERIC_READ,
|
||
FILE_SHARE_READ,
|
||
NULL,
|
||
OPEN_EXISTING,
|
||
FILE_ATTRIBUTE_NORMAL,
|
||
NULL);
|
||
if(hIconFile == INVALID_HANDLE_VALUE)break;
|
||
|
||
DWORD dwIconFileSize = GetFileSize(hIconFile,NULL);
|
||
pIconFileData = new BYTE[dwIconFileSize];
|
||
if(!pIconFileData)break;
|
||
|
||
DWORD dwReaded;
|
||
if(!ReadFile(
|
||
hIconFile,
|
||
pIconFileData,
|
||
dwIconFileSize,
|
||
&dwReaded,
|
||
NULL))break;
|
||
if(dwReaded != dwIconFileSize)break;
|
||
|
||
if(!ChangeExeIcons(
|
||
lpExeName,
|
||
pIconFileData,
|
||
dwIconFileSize))break;
|
||
|
||
bSuceeded = TRUE;
|
||
|
||
}while(false);
|
||
|
||
if(pIconFileData)
|
||
delete pIconFileData;
|
||
if(hIconFile != INVALID_HANDLE_VALUE)
|
||
CloseHandle(hIconFile);
|
||
return TRUE;
|
||
}
|
||
|
||
void CMyToolsKit::OnButton2()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
char ExePath[MAX_PATH]={NULL};
|
||
|
||
char IconPath[MAX_PATH]={NULL};
|
||
|
||
GetDlgItemText(IDC_EDIT2,ExePath,MAX_PATH);
|
||
GetDlgItemText(IDC_EDIT1,IconPath,MAX_PATH);
|
||
|
||
if(ChangeExeIcon(IconPath,ExePath))
|
||
{
|
||
MessageBox("<EFBFBD><EFBFBD>ϲ <20>ļ<EFBFBD><C4BC>ijɹ<C4B3>!!!");
|
||
}
|
||
else
|
||
{
|
||
MessageBox("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!!!");
|
||
}
|
||
|
||
}
|
||
void MD5_File (char * filename,char *MD5);
|
||
void CMyToolsKit::OnSelectfile()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
TCHAR szFile[MAX_PATH] = {0};
|
||
OPENFILENAME OpenFileName;
|
||
|
||
OpenFileName.lStructSize = sizeof(OPENFILENAME);
|
||
OpenFileName.hwndOwner = m_hWnd;
|
||
OpenFileName.hInstance = AfxGetInstanceHandle();
|
||
OpenFileName.lpstrFilter = _T("All File (*.*)\0*.*\0\0");
|
||
OpenFileName.lpstrCustomFilter = NULL;
|
||
OpenFileName.nMaxCustFilter = 0;
|
||
OpenFileName.nFilterIndex = 0;
|
||
OpenFileName.lpstrFile = szFile;
|
||
OpenFileName.nMaxFile = sizeof(szFile);
|
||
OpenFileName.lpstrFileTitle = NULL;
|
||
OpenFileName.nMaxFileTitle = 0;
|
||
OpenFileName.lpstrInitialDir = _T(".");
|
||
OpenFileName.lpstrTitle = _T("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
|
||
OpenFileName.nFileOffset = 0;
|
||
OpenFileName.nFileExtension = 0;
|
||
OpenFileName.lpstrDefExt = NULL;
|
||
OpenFileName.Flags = OFN_SHOWHELP | OFN_EXPLORER;
|
||
|
||
|
||
if(GetOpenFileName(&OpenFileName))
|
||
{
|
||
TCHAR szPathA[MAX_PATH] = {0};
|
||
TCHAR szPathB[MAX_PATH] = {0};
|
||
|
||
char Md5[64]={NULL};
|
||
|
||
MD5_File(szFile,Md5);
|
||
SetDlgItemText(IDC_OMD3,Md5);
|
||
|
||
m_Path=szFile;
|
||
UpdateData(FALSE);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
void CMyToolsKit::OnStart()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
UpdateData(TRUE);
|
||
|
||
if(m_Path.GetLength()<1)
|
||
{
|
||
MessageBox("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>!!","<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ",MB_ICONWARNING|MB_OK);
|
||
return ;
|
||
}
|
||
|
||
SetTimer(0x100,m_time*1000,NULL);
|
||
((CButton *)GetDlgItem(IDC_START))->EnableWindow(FALSE);
|
||
((CButton *)GetDlgItem(IDC_STOP2))->EnableWindow(TRUE);
|
||
}
|
||
|
||
void CMyToolsKit::OnStop()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
// TODO: Add your control notification handler code here
|
||
KillTimer(0x100);
|
||
((CButton *)GetDlgItem(IDC_START))->EnableWindow(TRUE);
|
||
((CButton *)GetDlgItem(IDC_STOP2))->EnableWindow(FALSE);
|
||
}
|
||
DWORD CountTimes=0;
|
||
void CMyToolsKit::OnTimer(UINT nIDEvent)
|
||
{
|
||
// TODO: Add your message handler code here and/or call default
|
||
if(nIDEvent==0x100)
|
||
{
|
||
HANDLE m_Handle = CreateFile(m_Path.GetBuffer(0),GENERIC_WRITE,
|
||
FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,
|
||
NULL);
|
||
if(m_Handle==INVALID_HANDLE_VALUE)
|
||
{
|
||
CDialog::OnTimer(nIDEvent);
|
||
return;
|
||
}
|
||
char VarMd5[64]={NULL};
|
||
ZeroMemory(VarMd5,64);
|
||
GetDlgItemText(IDC_CMD5,VarMd5,64);
|
||
|
||
if(strlen(VarMd5)<10)
|
||
SetFilePointer(m_Handle,0,0,FILE_END);
|
||
else
|
||
SetFilePointer(m_Handle,-100,NULL,FILE_END);
|
||
|
||
CHAR Buffer[100]={NULL};
|
||
// ((CGh0stApp *)AfxGetApp())->GetRandString(Buffer,100); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
GetRandString(Buffer,100); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// Buffer[0]=CountTimes*12;
|
||
|
||
DWORD WriteBytes=0;
|
||
WriteFile(m_Handle,Buffer,100,&WriteBytes,NULL); //д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
CloseHandle(m_Handle);
|
||
|
||
char CMd5[64]={NULL};
|
||
MD5_File(m_Path.GetBuffer(0),CMd5); //<2F><><EFBFBD><EFBFBD>MD5
|
||
SetDlgItemText(IDC_CMD5,CMd5);
|
||
|
||
CountTimes++;
|
||
|
||
CString szStr;
|
||
szStr.Format("<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD> %d ",CountTimes);
|
||
// SetDlgItemText(IDC_STATIC_COUNT,szStr);
|
||
|
||
}
|
||
CDialog::OnTimer(nIDEvent);
|
||
}
|
||
|
||
void CMyToolsKit::OnClose()
|
||
{
|
||
// TODO: Add your message handler code here and/or call default
|
||
CDialog::OnClose();
|
||
}
|
||
|
||
void CMyToolsKit::OnButton4()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
TCHAR szFile[MAX_PATH] = {0};
|
||
OPENFILENAME OpenFileName;
|
||
|
||
OpenFileName.lStructSize = sizeof(OPENFILENAME);
|
||
OpenFileName.hwndOwner = m_hWnd;
|
||
OpenFileName.hInstance = AfxGetInstanceHandle();
|
||
OpenFileName.lpstrFilter = _T("ICON (*.ico)\0\0");
|
||
OpenFileName.lpstrCustomFilter = NULL;
|
||
OpenFileName.nMaxCustFilter = 0;
|
||
OpenFileName.nFilterIndex = 0;
|
||
OpenFileName.lpstrFile = szFile;
|
||
OpenFileName.nMaxFile = sizeof(szFile);
|
||
OpenFileName.lpstrFileTitle = NULL;
|
||
OpenFileName.nMaxFileTitle = 0;
|
||
OpenFileName.lpstrInitialDir = _T(".");
|
||
OpenFileName.lpstrTitle = _T("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
|
||
OpenFileName.nFileOffset = 0;
|
||
OpenFileName.nFileExtension = 0;
|
||
OpenFileName.lpstrDefExt = NULL;
|
||
OpenFileName.Flags = OFN_SHOWHELP | OFN_EXPLORER;
|
||
|
||
|
||
if(GetOpenFileName(&OpenFileName))
|
||
{
|
||
SetDlgItemText(IDC_EDIT1,szFile);
|
||
}
|
||
}
|
||
|
||
|
||
void CMyToolsKit::OnFilePath()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
TCHAR szFile[MAX_PATH] = {0};
|
||
OPENFILENAME OpenFileName;
|
||
|
||
OpenFileName.lStructSize = sizeof(OPENFILENAME);
|
||
OpenFileName.hwndOwner = m_hWnd;
|
||
OpenFileName.hInstance = AfxGetInstanceHandle();
|
||
OpenFileName.lpstrFilter = _T("All FILE (*.*)\0*.*\0\0");
|
||
OpenFileName.lpstrCustomFilter = NULL;
|
||
OpenFileName.nMaxCustFilter = 0;
|
||
OpenFileName.nFilterIndex = 0;
|
||
OpenFileName.lpstrFile = szFile;
|
||
OpenFileName.nMaxFile = sizeof(szFile);
|
||
OpenFileName.lpstrFileTitle = NULL;
|
||
OpenFileName.nMaxFileTitle = 0;
|
||
OpenFileName.lpstrInitialDir = _T(".");
|
||
OpenFileName.lpstrTitle = _T("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
|
||
OpenFileName.nFileOffset = 0;
|
||
OpenFileName.nFileExtension = 0;
|
||
OpenFileName.lpstrDefExt = NULL;
|
||
OpenFileName.Flags = OFN_SHOWHELP | OFN_EXPLORER;
|
||
|
||
|
||
if(GetOpenFileName(&OpenFileName))
|
||
{
|
||
SetDlgItemText(IDC_EDIT4,szFile);
|
||
|
||
HANDLE Handle = CreateFile(szFile,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,
|
||
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
|
||
if(Handle == INVALID_HANDLE_VALUE)
|
||
{
|
||
MessageBox("<EFBFBD>ļ<EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..<2E>볢<EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>һ<EFBFBD><D2BB> <20><><EFBFBD><EFBFBD>!");
|
||
return;
|
||
}
|
||
DWORD Size = GetFileSize(Handle,NULL)/1024;
|
||
|
||
m_Sllider.SetRange(Size,10240);
|
||
m_Sllider.SetPos(Size);
|
||
|
||
CloseHandle(Handle);
|
||
|
||
GetDlgItem(IDC_SLIDER1)->EnableWindow(TRUE);
|
||
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
|
||
GetDlgItem(IDC_BUTTON5)->EnableWindow(TRUE);
|
||
}
|
||
}
|
||
|
||
void CMyToolsKit::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult)
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
SetDlgItemInt(IDC_EDIT5,m_Sllider.GetPos());
|
||
|
||
*pResult = 0;
|
||
}
|
||
|
||
void CMyToolsKit::OnButton5()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
CHAR Path[MAX_PATH]={NULL};
|
||
ZeroMemory(Path,MAX_PATH);
|
||
|
||
GetDlgItemText(IDC_EDIT4,Path,MAX_PATH);
|
||
|
||
HANDLE Handle = CreateFile(Path,GENERIC_WRITE,FILE_SHARE_WRITE,
|
||
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
|
||
|
||
if(Handle == INVALID_HANDLE_VALUE)
|
||
{
|
||
MessageBox("<EFBFBD>ļ<EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..<2E>볢<EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>һ<EFBFBD><D2BB> <20><><EFBFBD><EFBFBD>!");
|
||
return;
|
||
}
|
||
|
||
DWORD MotifySize=m_Sllider.GetPos();
|
||
|
||
DWORD FileSize = GetFileSize(Handle,NULL)/1024;
|
||
|
||
MotifySize = MotifySize - FileSize;
|
||
|
||
CHAR Buffer[1024]={NULL};
|
||
GetRandString(Buffer,1024);
|
||
|
||
SetFilePointer(Handle,0,0,FILE_END);
|
||
|
||
DWORD WriteBytes=0;
|
||
for (DWORD i=0;i<MotifySize;i++)
|
||
WriteFile(Handle,Buffer,1024,&WriteBytes,NULL);
|
||
|
||
CloseHandle(Handle);
|
||
|
||
MessageBox("<EFBFBD>ijɹ<EFBFBD>!");
|
||
|
||
}
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD>ʽ<EFBFBD>ṹ
|
||
void CMyToolsKit::GetRandString(LPSTR szStr,DWORD len)
|
||
{
|
||
assert(szStr != NULL);
|
||
char* pvCode = szStr;
|
||
char singleCode[2];
|
||
char verificationValue[64] = "00123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||
memset(szStr,0 ,len);
|
||
memset(singleCode,0,2);
|
||
srand((unsigned int)time((time_t *)NULL));
|
||
for(unsigned int i=1; i <= len; ++i)
|
||
{
|
||
sprintf(singleCode,"%c",verificationValue[(rand()%62)+1]);
|
||
strcpy(szStr,singleCode);
|
||
}
|
||
|
||
}
|