c语言编译 exe图标 resources.h,【C语言】【windows】---EXE程序图标提取器

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

最郁闷的是图标文件的写入,在网上找到MFC的相关代码,修改成SDK后得到:

2f8ea40a7e6712f49a2b325697578d42.gif

void SaveIcon(HICON hIconToSave, LPCTSTR sIconFileName)

{

HANDLE handle;

if(hIconToSave==NULL || sIconFileName==NULL)

return;

PICTDESC picdesc;

picdesc.cbSizeofstruct = sizeof(PICTDESC);

picdesc.picType = PICTYPE_ICON ;

picdesc.icon.hicon = hIconToSave;

IPicture* pPicture=NULL;

OleCreatePictureIndirect(&picdesc, IID_IPicture, TRUE,(VOID**)&pPicture);

LPSTREAM pStream;

CreateStreamOnHGlobal(NULL,TRUE,&pStream);

LONG size;

HRESULT hr=pPicture-> SaveAsFile(pStream,TRUE,&size);

TCHAR pathbuf[1024];

wcscpy_s(pathbuf,sIconFileName);

if((handle=CreateFile (sIconFileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL)) == INVALID_HANDLE_VALUE )

{

MessageBoxA(NULL,"Error Opening File for Writing","",MB_OK);

return ;

}

LARGE_INTEGER li;

li.HighPart =0;

li.LowPart =0;

ULARGE_INTEGER ulnewpos;

pStream-> Seek( li,STREAM_SEEK_SET,&ulnewpos);

ULONG uReadCount = 1;

while(uReadCount> 0)

{

pStream-> Read(pathbuf,sizeof(pathbuf),&uReadCount);

if(uReadCount> 0) if(WriteFile(handle,pathbuf,sizeof(pathbuf),&uReadCount,NULL))

{

MessageBox(NULL,TEXT("图标提取并保存成功!"),TEXT("OK!!!【光影】"),0);

}

else

MessageBox(NULL,TEXT("写入信息失败,请确定该程序是否有图标或用户在选择的目录是否有写入的权限!"),TEXT("Error"),0);

}

pStream-> Release();

CloseHandle(handle);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值