VC中枚举进程及获取进程相关信息

2014-06-19 22:00:46|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++, 操作系统|来源:唯设编程网

这些函数在msdn上都有说明的,我记得这些例子也是从上面获得的,呵呵

4.根据可执行文件名,获得这个文件的图标

SHFILEINFO            shFileInfo   = {0};

::SHGetFileInfo(szProcessPath,0,&shFileInfo,sizeof(SHFILEINFO),SHGFI_ICON);

shFileInfo.hIcon保存的,就是这个可执行文件的图标句柄,可以直接拿来用

比如调用CImageList的成员函数int CImageList::Add( HICON hIcon );
插入CImageList


如果想把可执行文件的图标插入listctrl,做了一个类似于任务管理器一样的进程管理器
那么有个更简单的办法

HIMAGELIST hImageList = NULL;

bRetVal = Shell_GetImageLists(&hImageList,NULL);

获取系统的imagelist

CImageList  m_image

if(hImageList != NULL)
    m_image.Attach(hImageList);

然后m_listctrl.SetImageList(&m_image,LVSIL_SMALL);

SHFILEINFO            shFileInfo   = {0};

::SHGetFileInfo(szProcessPath,0,&shFileInfo,sizeof(SHFILEINFO),SHGFI_SYSICONINDEX);

这样,根据shFileInfo.iIcon
可以获得这个图标在imagelist的序号,然后直接调用

CListCtrl::InsertItem

int InsertItem(
    int nItem,
    LPCTSTR lpszItem,
    int nImage );

把带图标的行插入listctrl中,这是个很简单的方法了

关于一般的把图标插入listctrl方法,可以参考博客中的另一文章“VC中使用ListCtrl经验总结(1)”


5、结束进程

可以参考文章“VC程序结束进程的基本方法

<12>
发表评论0条 】
网友评论(共?条评论)..
VC中枚举进程及获取进程相关信息