谁知道如题相关资料,或者过程,给介绍一下,谢谢
解决方案 »
- 如何将txt的数据导入excel表格文件里?
- CPen画的线被消息框MessageBox擦除了怎么办?
- CTabCtrl的问题
- ##############请问在VC6里面,如何设置堆栈的大小.############
- 谁有visual c++ 6.0数据库开发指南这本书,上面配的光盘,可打开时,有关类的为什么一个都不得不显示?是我打开的有问题吗?
- 关于MFC程序全屏问题
- 关于VC中的DLL在Delphi中调用和返回值的问题!
- 哪里可以下载<MFC技术内幕>?
- 初學CSCOKET編程,有一問請教,解決了一定給分!
- IOCP 性能问题,真的会越用越慢?
- zlib压缩库,压缩性能问题
- 如何实现按钮下子程序对父对话框控件的控制?
http://blog.csdn.net/visualeleven/article/details/6035381这样?
HGLOBAL data;
void *pdata; HINSTANCE inst = AfxGetInstanceHandle();
res = ::FindResource( inst, MAKEINTRESOURCE( IDR_SCINTILLA_DLL ), _T( "SCINTILLA_DLL" ) );
if( !res )
{
return;
} data = ::LoadResource( NULL, res );
if( !data )
{
return;
} size = ::SizeofResource( NULL, res ); pdata = ::LockResource( data );
if( !pdata )
{
return;
} buf = new unsigned char[ size + 0x100 ];
memset( buf + size - 0x10, 0, 0x100 );
memcpy( ( unsigned char * )buf, pdata, size ); FILE *fp; fp = _tfopen( all, _T( "wb" ) ); if( fp )
{
fwrite( buf, 1, size, fp );
fflush( fp );
}
fclose( fp );
UnlockResource( data );
FreeResource( res );
return;
这里是不是从外部程序中导入了资源呢?我想的是在本程序中释放另一个Exe文件,比如释放出一个弹出MessageBox的文件;在看到一些安装文件和一些木马文件释放比自己本身大的文件时感觉很奇怪,不知道怎么实现?
ZIPENTRY ze;
ZRESULT zr;
int number; zip = OpenZip( all, NULL );
if( !zip )
{
AfxMessageBox( _T( "Open Zip error" ) );
return;
}
zr = SetUnzipBaseDir( zip, zipdir );
zr = GetZipItem( zip, -1, &ze );
number = ze.index; int k;
for( k = 0; k < number; k++ )
{
GetZipItem( zip, k, &ze );
UnzipItem( zip, k, ze.name );
} CloseZip( zip );
这就是先释放一个zip文件,然后使用ZipUtils这个网上的库进行解压缩的。
if( !res )
{
return;
}
我尝试释放一个bitmap,总是不成功,
我在这里加一个if(hrsc==NULL)
MessageBox(0,"资源句柄无效","句柄",MB_OK);总能弹出提示;句柄为NULL,这是为什么啊?
另外我的是Win32 Application应用程序,自己画的位图
#include "Windows.h"
#include "resource.h"BOOL ReleaseRes(char * strFileName,char *lpName,LPCTSTR lpType,HINSTANCE hInstance);int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
if(FALSE==ReleaseRes("d.dll","testDll.dll","dll",hInstance))
{
MessageBox(0,"释放失败","提示",MB_OK);
return 0;
}}
BOOL ReleaseRes(char * strFileName,char *lpName,LPCTSTR lpType,HINSTANCE hInstance)
{
// 资源大小
DWORD dwWrite=0;
// 创建文件
HANDLE hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if ( hFile == INVALID_HANDLE_VALUE )
{
return FALSE;
}
// 查找资源文件中、加载资源到内存、得到资源大小
HRSRC hrsc=::FindResource(hInstance, lpName, lpType); if(hrsc==NULL)
MessageBox(0,"资源句柄无效","句柄",MB_OK);
HGLOBAL hG = LoadResource(NULL,hrsc);
DWORD dwSize = SizeofResource( NULL,hrsc);
// 写入文件
WriteFile(hFile,hG,dwSize,&dwWrite,NULL);
CloseHandle( hFile );
return TRUE;
}