用C++ Builder获取应用程序图标

c++ builder 知识积累 1、根据控件名称获取控件指针 TLabel  *p = NULL; p = dynamic_cast(FindComponent("控件名称")); p->Caption = "OK"; 2、dynamic_cast类型转换及枚举控件 dynamic_cast(ptr) T为一个指针、void*、或是一精定义过的类型; ptr 必须是一个指针(pointer)或是一个参考(refe 阅读详情
我们经常在网上看到有关提取图标的共享软件或免费软件。喜欢编程的朋友们都在梦想自己能够动手做一个!使用可视化编程利器C++Builder可使你制作这样的软件变得非常轻松。

  建立工程文件

  首先启动C++Builder,新建一工程,在窗体上放置两个控件:“抽取”按钮SpeedButton1、“退出”按钮SpeedButton2。设一个ListView控件用来浏览抽取的图表信息、一个Image控件用来显示当前的图标信息和一个OpenDialog控件用来打开被选文件,它们的名称均不必改动。为了美观,读者还可以根据需要增加其它控件,做适当的润色。

  取得和显示图标

  双击SpeedButton控件,在Click事件中写如下代码:

   void_fastcall TForm1::SpeedButton1Click(TObject

  Sender)

  {

   TListItemLst;

   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(TObjectSender)

  {

   Close();

  }

  在编辑文档的头文件中定义:AnsiString TempFile,FileName;TiconIcon;运行程序时,你所选定的程序的全部图标就在ListView控件中显示出来,最后一个图标在Image控件中显示出来,此时如果在ListView中单击图标,相应的信息也将在Image控件中显示。

  经过以上的操作,被选文件的图标信息就被显示出来了。下面,我们讨论如何存储被选定的图标。

  存储图标

  为了不影响整个界面的美观,我们在Form上建立一个快捷选单,并在“存储图标”的Click事件中书写如下代码:

  void_fastcall TForm1::N1Click(TObjectSender)

  {

   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应用程序的开发过程都是统一在一个项目之下,所以每个应用程序都是以项目为单位。        新建的项目初始项目文件如下图:                        产生的实际文件如下图:                 下面将介绍六个文件的各自作用: Project1.bpr  -----这个是C++ 阅读详情

相关推荐

C++Builder 实现功能比较完整的托盘程序

.h file        void __fastcall TForm1::WndProc(Messages::TMessage& Message);//回调函数        void __fastcall TForm1::AddTrayIcon();//添加托盘        void __fastcall TForm1::RemoveTrayIcon();//移除托盘        voi

tony_ht的专栏 1477

使用C++获取系统文件的图标 CSHGetFileInfo类

整理网上的资源 .h #pragma once class CSHGetFileInfo { public: /// 获取系统图像列表 /// @param[in] bSmallIcon ture则为小图标,false则为大图标 static HIMAGELIST GetSystemImageListHandle( BOOL bSmallIcon = TRUE); /// 获取系...

qq_42972267的博客 1027

Delphi/C++ Builder中cxGrid列关联图标的实现与应用

在现代企业级Delphi应用开发中,数据的高效展示与直观理解至关重要。cxGrid作为DevExpress组件库中最强大的数据表格控件之一,凭借其卓越的性能、灵活的定制能力以及对复杂业务场景的深度支持,已成为企业系统界面构建的首选工具。其中,“列关联图标”功能通过将图形元素与数据字段动态绑定,显著提升了信息传达效率。相比纯文本显示,图标能在有限空间内表达更丰富的语义,如状态标识(启用/禁用)、操作提示或优先级等级,极大增强用户的视觉识别速度与交互体验。// 示例:在列中启用图标显示的基本设置。

weixin_36073714的博客 1126

用C++Builder获取应用程序图标

用C++Builder获取应用程序图标 首先启动C++Builder,新建一工程,在窗体上放置一个Button控件,一个Image控件,和一个OpenDialog控件,它们的名称均不必改动。双击Button控件,写如下代码: if (OpenDialog1->Execute()){FileName = OpenDialog1->FileName;HICON...

weixin_30723433的博客 258

C++ Builder更改生成的EXE文件图标

C++ Builder更改生成的EXE文件图标

远程桌面项目

远程桌面项目

weixin_41560737的博客 1934

BCB中嵌入资源文件的研究

资源文件是一个以.rc结尾的文本文件,RC是资源脚本(Resource Script)的意思,它的格式很简单,每行一个资源,按如下格式定义:  资源标识符 资源类型 资源的路径 RC文件用来描述各种系统资源,包括: ACCELERATORS 菜单快捷键 BITMAP 位图 CURSOR 光标 DIALOG 对话框模板 ...

weixin_33995481的博客 379

3DGS-to-PC实战指南:零代码实现3D高斯场景到点云/Mesh的高效转换

本文详细介绍了3DGS-to-PC工具如何实现3D高斯场景到点云/Mesh的高效转换,无需代码即可完成。通过实战案例和参数调优技巧,帮助用户快速掌握这一开源插件的使用方法,提升3D数据处理效率。特别适合建筑扫描、影视特效等领域的专业人士。

q1w3e5r7t9y的博客 273

C++builder资源文件

然后将1.rc添加到Project Manage中,1.bmp在当前工程目录下,编译工程,将在当前目录下产生一个同名的资源文件1.res。pic BITMAP 1.bmp //bmp图片文件资源,与rc文件在同一路径。IDB_BG RCPNG "\\1.png" //PNG文件资源。

chinayu2007的专栏 1388

【浙大翁恺】C语言习题

/* 02-0. 整数四则运算(10) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。 题目保证输入和输出全部整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例: 3 2 输出样例: 3 + 2 = 5 3 - 2 = 1 3 * 2 = 6 3 / 2 =.

qq_43600867的博客 5861

STM32解析航模遥控器的PPM信号

使用STM32对航模遥控器的PPM信号进行解析

qq_44343584的博客 9734

C++Builder 资料库

1.怎样在C++Builder中创建使用DLL 2.用C++Bulider在WIN.INI中保存信息 3.如何在C++Builder中检测硬件 4.C++Builder如何响应消息及自定义消息 5.利用C++ Builder开发动画DLL 6.用C++ Builder 3制作屏幕保护程序 7.TCP/IP头格式 8.UDP 9.判断windows的Desktop及其它目录 10用C++Builde

chiengod(钱神爷)的专栏 2万+

JavaScript实现斗地主(附完整源码)

JavaScript实现斗地主(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1503

[C++] C++ Builder 下开发具有Windows任务栏布告区图标的应用程序

 开发具有Windows任务栏布告区图标的应用程序        许多应用程序,如输入法管理器、杀毒软件等均在任务栏布告区中放置一个有自已特色的图标,该图标让用户知道有一个后台程序正在运行,同时也提供了一种修改系统设置的快捷方法,本文将以C++ Builder为例简述它的实现方法。       打开一个新工程,将工程文件取名为test、单元文件取名为main。在窗口上放置二个按钮、一个标签,其属性

shine的现在进行时 1084

LSTM 深度解析从原理推演到现代序列建模的演进

LSTM(Long Short-Term Memory,长短期记忆网络)是一种特殊的递归神经网络(RNN),它通过引入记忆单元(Cell State)来解决普通RNN在长序列数据处理中的梯度消失问题。LSTM可以在长时间的序列中捕捉依赖关系,是一种非常适合处理时间序列、自然语言处理、语音识别等任务的深度学习模型。在LSTM中,记忆单元(Cell State)是一个贯穿整个序列的数据通道,用于存储和传递关键信息。记忆单元在LSTM的时间步之间保持信息的持久性,可以看作是一个长期记忆的“容器”。

hello.reader 3万+

AI智能体丨使用Coze生成自媒体短视频分镜生成器(附保姆级教程)

【短视频分镜脚本生成器】是一款由Coze平台开发出来的智能体,可快速解析某音/某书视频或本地文件,自动生成专业分镜脚本。用户只需输入视频链接或上传文件,系统即会分析镜头节奏、叙事逻辑和画面内容,输出包含画面、模板和话术参考的标准化脚本(支持3分钟内视频)。该工具还能生成HTML网页和可下载图片,提供可视化呈现。工作流程包括视频解析、帧提取、AI画面理解、脚本生成和网页制作,大幅提升短视频创作效率。

李同学Lino的博客 1535

C++Builder开发Web应用程序

摘要:本文通过一个实例详细介绍了Web应用程序的原理,利用C++Builder开发Web应用程序的过程。  Web应用程序是运行在服务器端的可执行程序或动态连接库。它们可以响应用户要求,动态产生超文本页面,并将信息提供给客户浏览器。   一般来说,Web应用程序可分为五种类型,分别是ISAPI、NSAPI、CGI、WinCGI、Activex。这五种不同的方式都有各自的限制,也就是说,这些方式将会

xmzjw的专栏 4324

量化交易 米筐 因子分组打分(成长因子)

分组动手练习 在米筐上因子数据没有处理,提供的很多因子没有默认分类,存在一些因子没有的情况,我们就选择一些常见的因子。 价值因子 质量因子 成长因子(历史名称) pe_ratio return_on_invested_capital in_revenue pcf_ratio du_return_on_equity inc_eps pb_ratio return_on_asset_net_profit inc_total_asset market_cap return_on_equ

廷益_飞鸟的博客 932

C++ Builder高手进阶 (四)动态显示任务栏图标

C++ Builder高手进阶  (四)动态显示任务栏图标nxyc_twz@163.com      在应用程序运行时,有时可能会因为要处理的数据量很大而暂时失去反应,这样给用户的感觉极其不好,影响了软件的更广泛应用。利用多线程技术固然可以解决这个问题,可这里我并想使用多线程,我想示范一下如何编制动态任务栏图标。  我的编程思路是:通过设置Timer时钟控件使应用程序在规定的时间间隔内

开心果的专栏 2551

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C++ Builder 提取窗口图标

有时我们看到某个文件的图标很新颖,有心想保存下来,手头却找不合适的工具,能不能自己编个程序提取文件的图标呢?经过摸索,答案是肯定的,下面以C++ Builder为例,介绍文件图标提取过程。 Windows提供了一个API函数ExtractIcon,它能从指定的exe、dll、icon及其它含有图标的文件中提取图标,其原型如下: HICON ExtractIcon( HINSTAN

RunCode_Drive的专栏 791

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

许多代码段,没准儿有你需要的 C++ Builder

1.怎样在C++Builder中创建使用DLL 2.用C++Bulider在WIN.INI中保存信息 3.如何在C++Builder中检测硬件 4.C++Builder如何响应消息及自定义消息 5.利用C++ Builder开发动画DLL 6.用C++ Builder 3制作屏幕保护程序 7.TCP/IP头格式 8.UDP 9.判断windows的Desktop及其它目录 10用C++Builde

zhangxvpp 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++Builder2022企业版,Windows C++和iOS应用程序

C++Builder2022企业版,Windows C++和iOS应用程序   C++Builder2022企业版使用更少的代码,以 10 倍的速度构建原生 Windows C++ 和 iOS 应用程序。   C++Builder 是一个强大的 C++ IDE,它可以帮助您在将现代应用程序部署到每个平台之前创建和测试一次代码。无论您喜欢简洁的文本编辑器还是快速的 UI 设计,C++ Builder 都能满足您的需求。C++Builder 在整个开发生命周期中为您提供支持,以交付您只需重新编译和重新部署的

q2315702359的博客 5673

C++Builder 资料库 (转载)

C++Builder 资料库 2005-03-03 15:14 13115人阅读 评论(3) 收藏 举报 1.怎样在C++Builder中创建使用DLL 2.用C++Bulider在WIN.INI中保存信息 3.如何在C++Builder中检测硬件 4.C++Builder如何响应消息及自定义消息 5.利用C++ Builder开发动画DLL 6.用C++ Builder

qq_31209383的博客 3374
上一篇: Cisco路由器故障诊断技术
下一篇: 關於 TreeView 得到系統 Icon 的問題
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值