C++通过进程名获得进程PID

C++通过进程名获得进程PID,第1张

进程快照是可以的,以下代码你自己看着选你所需

void CLoaderDlg::UpdateProcessList()

{

UpdateData(TRUE);

m_ProcListDeleteAllItems();

MYHOOKSTRUCT ProcHookArry[20];

memset(ProcHookArry,0,20sizeof(MYHOOKSTRUCT));

int nCount = 0;

CString str="";

//Second=1;

PROCESSENTRY32 pe32;//进程信息结构体

pe32dwSize = sizeof(pe32);//必须先填充大小。

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

if(hProcessSnap == INVALID_HANDLE_VALUE)

{

MessageBox("CreateToolhelp32Snapshot调用失败","Warning");

return;

}

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

while(bMore)

{

//注意:当列表框控件中选中了排序(sort)时会出现ID与程序名不一致。

if(strcmp(strupr(pe32szExeFile),"NOTEPADEXE")==0)

{

ProcHookArry[nCount]ProcessID=pe32th32ProcessID;

ProcHookArry[nCount]ThreadID=GetThreadId(pe32th32ProcessID);

ProcHookArry[nCount]hWnd=myGetWindowByProcessId(pe32th32ProcessID);

strcpy(ProcHookArry[nCount]Name,pe32szExeFile);

ProcHookArry[nCount]hHook=0;

ProcHookArry[nCount]HookFlag=0;

nCount++;

}

bMore = ::Process32Next(hProcessSnap,&pe32);

}

::CloseHandle(hProcessSnap);

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

{

for(int j=0;j<m_HookArryLen;j++)

{

if(ProcHookArry[i]ThreadID==m_ProcHookArry[j]ThreadID)

{

ProcHookArry[i]hHook=m_ProcHookArry[j]hHook;

ProcHookArry[i]hWnd=m_ProcHookArry[j]hWnd;

ProcHookArry[i]ProcessID=m_ProcHookArry[j]ProcessID;

ProcHookArry[i]HookFlag=m_ProcHookArry[j]HookFlag;

strcpy(ProcHookArry[i]Name,m_ProcHookArry[j]Name);

break;

}

}

}

memcpy(m_ProcHookArry,ProcHookArry,nCountsizeof(MYHOOKSTRUCT));

m_HookArryLen=nCount;

int index=0;

for(int n=0;n<m_HookArryLen;n++)

{

strFormat("%d",m_ProcHookArry[n]ThreadID);

index=m_ProcListGetItemCount();

m_ProcListInsertItem(index,str);

m_ProcListSetItemText(index,1,m_ProcHookArry[n]Name);

if(m_ProcHookArry[n]HookFlag)

{

str="已加载";

m_ProcListSetItemText(index,2,str);

}

else

{

str="未加载";

m_ProcListSetItemText(index,2,str);

}

char buf[100]={0};

::GetWindowText(m_ProcHookArry[n]hWnd,buf,100);

str=buf;

m_ProcListSetItemText(index,3,str);

//::SendMessage(m_ProcHookArry[n]hWnd,WM_CLOSE,0,0);

}

UpdateData(FALSE);

}

getpid(取得进程识别码

相关函数 fork,kill,getpid

表头文件 #include<unistdh>

定义函数 pid_t getpid(void);

函数说明 getpid()用来取得目前进程的进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。

返回值 目前进程的进程识别码

范例 #include<unistdh>

main()

{

printf(“pid=%d\n”,getpid());

}

执行 pid=1494 /每次执行结果都不一定相同/

以上就是关于C++通过进程名获得进程PID全部的内容,包括:C++通过进程名获得进程PID、linux除了popen外,获取其它进程PID的方法有哪些、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/10038194.html

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

发表评论

登录后才能评论

评论列表(0条)

保存