就像一些查看进程的工具一样,列表里进程名前带个图标,怎么获得?应该有API吧?80分求助
解决方案 »
- 有关于 StretchDIBits . StretchBlt等函数的使用问题
- 模拟
- 一个简单的控件问题,回复有分
- 用SendMessage出问题了!!!谢谢解答
- 为什么钩子抓不到WM_QUERYENDMESSION和WM_ENDMESSION消息?
- 我的socket程序在MainFram中可以实现,但为何在Dlg中不能实现呢?有何办法?
- 我机器上有一些.swf的文件用Realplay播放声音出不来,那我该怎么才能播放.swf的文件呢?
- 请教socket编程问题
- 急!请问那里可以找到最新的通信技术的文章??谢谢了!1111
- 如何用图片填充一个圆?
- 多文档界面,是否可以做到有的视图的tab标签右边有关闭X(小叉),而有的没有
- 弹出一个对话框,想让它弹出的时候始终是挨着托盘区域的。
2.Process32First找到当前第一个运行的进程
3.Process32Next找到再一个运行进程
使用以上三个函数需要引入头文件Tlhelp32.h。
4.OpenProcess打开当前进程以便得到进程句柄
5.GetModuleFileNameEx得到指定进程句柄的进程路径
使用上面这个函数需要引入Psapi.lib的链接与Psapi.h头文件。
6.SHGetSpecialFolderPath得到系统特殊路径,第三个参数引入CSIDL_DESKTOPDIRECTORY来获得桌面路径.
使用上面这个函数需要引入shlobj.h头文件
7.SHGetFileInfo得到文件的外壳图标
使用上面这个函数需要引入shellapi.h头文件代码如下:
#pragma comment(lib,"Psapi.lib");
#include "tlhelp32.h"
#include "psapi.h"
#include "shlobj.h"
#include "shellapi.h"BOOL result1;
TCHAR szFile[1024],szDesktop[1024];
int i=0;
HICON hicon;
SHFILEINFO fi;
HANDLE handle,hProcess;
PROCESSENTRY32 proessEntry;
ZeroMemory(&proessEntry,sizeof(PROCESSENTRY32));SHGetSpecialFolderPath(GetSafeHwnd(),szDesktop,CSIDL_DESKTOPDIRECTORY,FALSE);
handle=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(handle==INVALID_HANDLE_VALUE)
return 0;
proessEntry.dwSize=sizeof(PROCESSENTRY32);
result1=::Process32First(handle,&proessEntry);hProcess=OpenProcess (PROCESS_ALL_ACCESS, FALSE, proessEntry.th32ProcessID); if(::GetModuleFileNameEx(hProcess,NULL,szFile,sizeof(szFile)/sizeof(TCHAR)))
{
CString strFile(szFile),strDesk(szDesktop);
if(strFile.Find(szDesktop)==0)
{
SHGetFileInfo(szFile,0,&fi,sizeof(SHFILEINFO),SHGFI_SMALLICON|SHGFI_ICON);
//把图标添加到列表上}
}
CloseHandle(hProcess);
while(result1)
{result1=Process32NextW(handle,&proessEntry);
hProcess=OpenProcess (PROCESS_ALL_ACCESS, FALSE, proessEntry.th32ProcessID);
if(::GetModuleFileNameEx(hProcess,NULL,szFile,sizeof(szFile)/sizeof(TCHAR)))
{
CString strFile(szFile),strDesk(szDesktop);
if(strFile.Find(szDesktop)==0)
{
SHGetFileInfo(szFile,0,&fi,sizeof(SHFILEINFO),SHGFI_SMALLICON|SHGFI_ICON);//必须同时指定SHGFI_SMALLICON与SHGFI_ICON
//把图标添加到列表上}
} CloseHandle(hProcess);
}