VC 如何根据进程名称找程序的目录

VC 如何根据进程名称找程序的目录,第1张

你首先需要为VC下载一个Microsoft

Platform

SDK

for

Windows

XP

SP2,有了这个包以后,将psapih和psapilib拷贝到VC的include和lib目录,采用PSAPI编程:

1、用EnumProcesses函数列出当前所有进程

2、用OpenProcess打开进程

3、用GetProcessImageFileName函数就可以获取程序的完整目录

上面三个函数的资料在互联网上很完整,你可以用函数名作为关键字搜索一下就知道了。

下面举个例子:

#include

<windowsh>

#include

<stdioh>

#include

<tcharh>

#include

<psapih>

#pragma

comment(lib,

"psapilib")

void

PrintProcessNameAndID(

DWORD

processID

)

{

TCHAR

szProcessName[MAX_PATH]

=

TEXT("<unknown>");

TCHAR

szProcessPath[MAX_PATH]

=

TEXT("<unknown>");

//

获取进程句柄

HANDLE

hProcess

=

OpenProcess(

PROCESS_QUERY_INFORMATION

|

PROCESS_VM_READ,

FALSE,

processID

);

//

获取进程名称和路径

if

(NULL

!=

hProcess

)

{

HMODULE

hMod;

DWORD

cbNeeded;

if

(

EnumProcessModules(

hProcess,

&hMod,

sizeof(hMod),

&cbNeeded)

)

{

GetModuleBaseName(

hProcess,

hMod,

szProcessName,

sizeof(szProcessName)/sizeof(TCHAR)

);

}

GetProcessImageFileName(hProcess,

szProcessPath,

MAX_PATH);

}

//

打印进程名、进程号和路径地址

_tprintf(

TEXT("%s

(PID:

%u)

<%s>\n"),

szProcessName,

processID,

szProcessPath

);

CloseHandle(

hProcess

);

}

void

main(

)

{

//

获取进程列表

DWORD

aProcesses[1024],

cbNeeded,

cProcesses;

unsigned

int

i;

if

(

!EnumProcesses(

aProcesses,

sizeof(aProcesses),

&cbNeeded

)

)

return;

//

计算当前一共多少个活动进程

cProcesses

=

cbNeeded

/

sizeof(DWORD);

//打印进程信息

for

(

i

=

0;

i

<

cProcesses;

i++

)

if(

aProcesses[i]

!=

0

)

PrintProcessNameAndID(

aProcesses[i]

);

}

WIN32_FIND_DATA findFileData;

HANDLE hFind = FindFirstFile(szFileName, &findFileData);

具体的可以参考:

>

以上就是关于VC 如何根据进程名称找程序的目录全部的内容,包括:VC 如何根据进程名称找程序的目录、用VC++如何实现获取指定”文件夹“的句柄,请各位朋友们指教一下,谢谢!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存