列表框显示进程图标

昨天调各种图标调了半了,改bug改到今天凌晨,总结一下昨天。
列表框中能够直接加入图标,但是不可以改变字体颜色、背景颜色等,因此我用了pudn上的一个类CReportCtrl
CReportCtrl
这个类把列表框给重绘了,功能十分强大。
下面说一下如何获取进程图标
.h
CImageList ProcessImg;//这个定义一定要放到头文件中,定义成全局变量,不然不会显示
.cpp
///
//一些初始化工作
SHFILEINFO shfileinfo;
ProcessImg.Create(16,16, ILC_COLOR32, 2, 80);
HIMAGELIST hImageList = NULL;
///
//这个就是要放到进程遍历的循环里面
//lpwzFullString为进程路径,.dll,.exe,.sys无论啥文件都可以
hImageList=(HIMAGELIST)::SHGetFileInfo(lpwzFullString,0,&shfileinfo,sizeof(shfileinfo),SHGFI_ICON);
//增加到CImagelList
ProcessImg.Add(shfileinfo.hIcon);
//m_list为列表框指针,调用CReportCtrl类中函数设置关联
m_list->SetImageList(&ProcessImg);
//i为遍历时的id,调用CReportCtrl类中函数设置关联
m_list->SetItemImage(i,0,i);
///
简单看上去没什么问题,但是有时候会来显示内核驱动一些信息,有些是已经被删除的,没有路径,提取不到图标,有些是有。
如何做到只在有路径的地方显示图标,做到一一对应。
我的方法是在资源管理器中自己画一个白色图标,设置一个是否有路径的BOOL变量,没有路径的,在CImageList加入白色图标。
有人可能会说,可以使用CreateIcon来创建,我试过这个函数,但不知道为什么,创建黑色图标加入可以,白色图标加入CImageList失败。
也试过其它几种方法,比如如果没有路径就跳过,但总是不可以,我觉得可能是这个不允许有些加入图标,有些不加。
写出来就这些东西,但是实际来解决的时候,却没有这么简单,因为你并不清楚问题出的哪,要慢慢去测试。
如果大家有更好的方法,欢迎分享出来,一起进步。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统进程调度是操作系统的核心功能之一,它负责管理和调度进程的执行顺序,以确保系统资源的合理分配和高效利用。在传统的命令行界面下,操作系统进程调度往往通过命令行指令来管理进程,并通常以文本的形式显示。 但是,在图形化界面的开发中,我们可以通过Java语言来实现操作系统进程调度的图形化展示。首先,我们可以使用Java的图形界面编程工具包(JavaFX或Swing)来设计一个用户友好的界面,以便用户能够方便地进行进程调度操作。 在图形化界面中,我们可以通过添加进程列表进程状态指示器、进程调度算法选择框等组件来展示当前系统的进程状况和调度情况。用户可以通过点击按钮或拖动进程图标等方式来创建、启动、停止、删除进程,以及选择不同的调度算法。 在Java中,我们可以使用线程(Thread)类来模拟进程的执行,通过创建多个线程对象来表示多个进程,并通过设置优先级、状态以及执行处理函数等属性来进行进程的调度。当用户选择某种调度算法后,我们可以使用该算法对进程进行排序,并按照排序后的顺序依次执行或切换进程。 另外,图形化界面中我们还可以添加一些其他的功能来增强用户体验,比如实时刷新进程状态、显示进程的执行时间和优先级、提供进程优先级调整的接口等等。 综上所述,通过使用Java编程语言和图形化界面编程工具包,我们可以实现一个功能完善且易于使用的操作系统进程调度图形化界面,通过可视化的方式来展示系统中的进程状态和调度情况,提供方便快捷的操作和调整方式,从而提高系统的性能和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值