在vc中知道其他程序的进程名,如何获得该进程的id,详细点,写成一个函数,要可以运行,多谢。

 我来答
匿名用户
2011-06-21
展开全部
原型:
int WINAPI icePub_getProcessInfo(char *strInfoList ,int maxLen)
输入:maxLen strInfoList最大长度
输出:strInfoList 进程基本信息,name|pid|path,一行一条信息

int recordCounts;
char buff[1024*30+1];

typedef int (WINAPI ICEPUB_GETPROCESSINFO)(char *strInfoList ,int maxLen);
ICEPUB_GETPROCESSINFO *icePub_getProcessInfo = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_getProcessInfo = (ICEPUB_GETPROCESSINFO *)GetProcAddress(hDLLDrv, "icePub_getProcessInfo");
}

if(icePub_getProcessInfo)
recordCounts=icePub_getProcessInfo(buff,1024*30);
if(hDLLDrv)
FreeLibrary(hDLLDrv);

AfxMessageBox(buff);
更多追问追答
追问
大哥 你的程序我不懂 不好意思 我需要的函数是我传给它一个参数是进程名 返回的是该进程的ID,你这种函数我不知道怎么用 那些参数的意思我不是很清楚。
追答
long getPidByName(char *strName)
{
int recordCounts;
char buff[1024*30+1];

typedef int (WINAPI ICEPUB_GETPROCESSINFO)(char *strInfoList ,int maxLen);
ICEPUB_GETPROCESSINFO *icePub_getProcessInfo = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_getProcessInfo = (ICEPUB_GETPROCESSINFO *)GetProcAddress(hDLLDrv, "icePub_getProcessInfo");
}

if(icePub_getProcessInfo)
recordCounts=icePub_getProcessInfo(buff,1024*30);
if(hDLLDrv)
FreeLibrary(hDLLDrv);

CString str1=buff;
CString str2=strName;
int i;
long pid=0;

str2=str2+"|";
i=str1.Find(str2,0);
if(i>=0)
{
str1=str1.Mid(i+str2.GetLenght());
pid=atol(str1);
}

return pid;
}

//dll下载在pdf文档里有

参考资料: http://bbs.icese.net/icepubdll/icePubDLL%bd%d2%c3%d820110518.pdf

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式