用C++ Builder获取应用程序图标
来源:互联网 发布:python pack 字符串 编辑:程序博客网 时间:2024/05/06 09:58
建立工程文件
首先启动C++Builder,新建一工程,在窗体上放置两个控件:“抽取”按钮SpeedButton1、“退出”按钮SpeedButton2。设一个ListView控件用来浏览抽取的图表信息、一个Image控件用来显示当前的图标信息和一个OpenDialog控件用来打开被选文件,它们的名称均不必改动。为了美观,读者还可以根据需要增加其它控件,做适当的润色。
取得和显示图标
双击SpeedButton控件,在Click事件中写如下代码:
void_fastcall TForm1::SpeedButton1Click(TObject
Sender)
{
TListItemLst;
if(OpenDialog1->Execute())
//打开被提取图标的文件
{
FileName=OpenDialog1->FileName;
FileName=FileName.UpperCase();
TempFile=FileName.SubString(1,FileName.AnsiPos("."))+"ICO";
//产生和备选文件同名的Ico图标文件名
HICON hIcon; //定义抽取的图标句柄
int Total =(int) ExtractIcon( Form1->Handle, FileName.c_str(), -1);
//抽取图标:-1表示抽取所有图标并且将获得的图标总数存入变量Total
ListView1->Items->Clear();
ImageList1->Clear();
for(int i=0;i {
Icon = new TIcon();
hIcon = ExtractIcon( Form1->Handle, FileName.c_str(),i);
Icon->Handle=hIcon;
ImageList1->AddIcon(Icon);
Lst=ListView1->Items->Add();
Lst->Caption="第"+IntToStr(i)+"号图标";
Lst->ImageIndex=i;
}
if(Total>0)
{
Icon->SaveToFile(TempFile);
//将最后一个图标存入文件
Image1->Picture->LoadFromFile(TempFile); //将存入文件的图标显示
}
}
}
以下为退出按钮设置
void_fastcall TForm1::SpeedButton2Click(TObjectSender)
{
Close();
}
在编辑文档的头文件中定义:AnsiString TempFile,FileName;TiconIcon;运行程序时,你所选定的程序的全部图标就在ListView控件中显示出来,最后一个图标在Image控件中显示出来,此时如果在ListView中单击图标,相应的信息也将在Image控件中显示。
经过以上的操作,被选文件的图标信息就被显示出来了。下面,我们讨论如何存储被选定的图标。
存储图标
为了不影响整个界面的美观,我们在Form上建立一个快捷选单,并在“存储图标”的Click事件中书写如下代码:
void_fastcall TForm1::N1Click(TObjectSender)
{
if (InputQuery("提示信息", "存储文件名:", PutFile)) //弹出输入对话框
{
if (PutFile.Length()>0)
{
if(PutFile.AnsiPos(".")<=0)
{
PutFile=PutFile+".Ico" ;
}
if(ListView1->Selected!=NULL)
{
HICON hIcon;
Icon = new TIcon();
hIcon=ExtractIcon(Form1->Handle,FileName.c_str(),ListView1->Selected->Index);
Icon->Handle=hIcon;
Icon->SaveToFile(PutFile);
Image1->Picture->LoadFromFile(PutFile);
delete Icon;
}
}
}
}
Windows下的执行文件,大部分都是资源信息与应用代码单独存放的,从这些资源文件中抽取图标信息只是很小的一个实例。如果要获取更多的信息,就需要调用API函数SHGetFileInfo。有兴趣的朋友可以用本文类似的思路进行更深一步的探讨,我想,编写一个汉化软件并非难事。
- 用C++ Builder获取应用程序图标
- 用C++ Builder获取应用程序图标
- 用C++ Builder获取应用程序图标
- C#获取应用程序图标
- 获取应用程序图标
- [C++] C++ Builder 下开发具有Windows任务栏布告区图标的应用程序
- C++Builder开发Web应用程序
- c++builder隐藏程序任务栏图标
- c++builder隐藏程序任务栏图标 .
- C++Builder 获取MAC地址
- BCB获取应用程序图标并显示
- 获取自己应用程序的名称和图标
- ImageLoader 根据包名获取应用程序图标
- C++BUILDER 获取文件版本号的源代码
- 36、获取应用程序图标和相应的软件名,用GridView方式展现
- 用C++ Builder开发多层数据库应用程序
- 用C# Builder建数据库应用程序
- 使用C#Builder开发简单的数据库应用程序
- 获得焦点
- 子窗体返回主窗体
- 判断是否为数字
- Cisco路由器故障诊断技术
- MS一技术高官对.net提出批评,不过他走并不代表.net会死
- 用C++ Builder获取应用程序图标
- #ifdef __cplusplus
- Dreams
- VB.NET中制作图片按钮
- 管理CVS服务器
- 關於 TreeView 得到系統 Icon 的問題
- SQL注入与ASP木马上传
- 星座们适合的英文名字
- 如何通过WEB入侵获得freebsd 4.0