VC判断进程是否存在?比如我想知道记事本是否运行,要用到哪些函数?

 我来答
那朵花63909
2014-06-23 · 超过66用户采纳过TA的回答
知道答主
回答量:134
采纳率:100%
帮助的人:54.5万
展开全部
const char DESTPROC[19] = "cmd.exe"; DWORD pid = ProcessToPID(DESTPROC); 返回为0就是没有 DWORD ProcessToPID(const char *InputProcessName) { DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; HANDLE hProcess = NULL; HMODULE hMod = NULL; char szProcessName[MAX_PATH] = "UnknownProcess"; AddPrivilege(SE_DEBUG_NAME); // 计算目前有多少进程, aProcesses[]用来存放有效的进程PIDs if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) { return 0; } cProcesses = cbNeeded / sizeof(DWORD); // 按有效的PID遍历所有的进程 for ( i = 0; i < cProcesses; i++ ) { // 打开特定PID的进程 hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i]); // 取得特定PID的进程名 if ( hProcess ) { if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); //将取得的进程名与输入的进程名比较,如相同则返回进程PID if(!stricmp(szProcessName, InputProcessName)) { CloseHandle( hProcess ); return aProcesses[i]; } } }//end of if ( hProcess ) }//end of for //没有找到相应的进程名,返回0 CloseHandle( hProcess ); return 0; } --------- 也可以枚举得到所有进程的应用程序名,然后和知道应用程序名比较判断。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式