mfc显示进程名和进程图标

mfc显示进程名和进程图标,第1张

在MFC中显示进程名和进程图标,需要使用Windows API函数来获取进程信息和图标资源,然后将信息和图标显示在MFC界面上。具体步骤如下:

获取进程信息:使用Windows API函数EnumProcesses枚举系统中所有进程的ID,然后使用OpenProcess函数打开进程句柄,调用GetModuleFileNameEx函数获取进程名。

获取进程图标:使用Windows API函数ExtractIconEx获取进程程序文件的图标资源,然后使用GetIconInfo函数获取图标信息,使用CreateIconIndirect函数创建图标。

在MFC界面上显示进程名和图标:在对话框中添加一个列表框控件,使用InsertItem函数向列表框中添加项,然后使用SetItemText函数设置项的文本,使用SetItemImage函数设置项的图标。

示例代码如下:

C++

Copy code

// 遍历进程

void CProcessDlg::EnumerateProcesses()

{

DWORD aProcesses[1024], cbNeeded, cProcesses;

if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))

return;

cProcesses = cbNeeded / sizeof(DWORD);

for (int i = 0; i < cProcesses; i++)

{

// 打开进程句柄

HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i]);

if (!hProcess) continue;

// 获取进程名

TCHAR szProcessName[MAX_PATH] = { 0 };

if (GetModuleFileNameEx(hProcess, NULL, szProcessName, MAX_PATH))

{

// 获取进程图标

HICON hIcon = NULL;

int nIcons = ExtractIconEx(szProcessName, -1, NULL, &hIcon, 1);

if (nIcons == 1 && hIcon)

{

ICONINFO info;

GetIconInfo(hIcon, &info);

// 创建图标

HICON hNewIcon = CreateIconIndirect(&info);

if (hNewIcon)

{

// 添加项到列表框

int nIndex = m_listProcessInsertItem(0, szProcessName);

m_listProcessSetItemText(nIndex, 1, _T("描述信息"));

m_listProcessSetItemImage(nIndex, (LPARAM)hNewIcon);

}

DestroyIcon(hIcon);

DestroyIcon(hNewIcon);

}

}

CloseHandle(hProcess);

}

}

这段代码会遍历系统中所有进程,获取进程名和图标信息,并将它们添加到对话框的列表框中。注意需要在对话框的OnInitDialog函数中调用此函数,以便在对话框初始化时显示进程信息。

1、查看进程号

ps -ef | grep 进程名

2、查看端口被哪个进程监听

sudo lsof -i :端口

3、查看进程监听的端口

sudo lsof -nP -p 进程号 | grep LISTEN

sudo lsof -nP | grep LISTEN | grep 进程号

4、查看监听端口的进程

sudo lsof -nP | grep LISTEN | grep 端口号

————————————————

示例:

查看3306端口号被占用情况

sudo lsof -nP | grep LISTEN 3306

VC中使用GetModuleFileName()函数来获取当前应用程序路径。具体实现代码如下:

CString

g_AppPath;

char

cIniFileName[MAX_PATH];

GetModuleFileName(NULL,cIniFileName,sizeof(cIniFileName))

;

char

p

=

strrchr(cIniFileName,'\\')

;

g_AppPathFormat("%s",cIniFileName);

其中MAX_PATH是系统的一个

宏定义

,表示数组最长长度,为260。

没事做,写个详细代码给你吧

#include<windowsh>

#include<tlhelp32h>//声明快照函数的头文件

int main(int argc,char argv[])

{

PROCESSENTRY32 pe32;

//在使用这个结构之前,先设置它的大小

pe32dwSize=sizeof(pe32);

//给系统内的所有进程拍一个快照

HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

//遍历进程快照,轮流显示每个进程的信息

BOOL bMore=::Process32First(hProcessSnap,&pe32);

while(bMore)

{

if(strcmp("abcexe",pe32szExeFile)==0)//如果找到进程名为abcexe

{

HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32th32ProcessID);//获取句柄

/这里已经打开那个进程的句柄了/ }

bMore=::Process32Next(hProcessSnap,&pe32);//寻找下一个

}

return 0;

}

Process p = ProcessGetProcessById(id)

设p为指定id的进程

那么,Process类有 属性

MainWindowHandle 获取关联进程主窗口的窗口句柄。

MainWindowTitle 获取进程的主窗口标题。

也就是

pMainWindowHandle

pMainWindowTitle

到于主程序类名,不好意思,windows可执行程序不一定是用C#写的哦,所以“不存在”主程序类名这种东西。

以上就是关于mfc显示进程名和进程图标全部的内容,包括:mfc显示进程名和进程图标、mac查看端口、进程号、进程名的命令、VC中有直接获得当前进程名的函数吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9754119.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存