100顶!怎么判断另一个程序exe在运行中?
时间:2011-12-15
来源:互联网
作者: xuchengwu123456 发布时间: 2011-12-15
void CloseProgram(CString strProgram) { HANDLE handle; //定义CreateToolhelp32Snapshot系统快照句柄 HANDLE handle1; //定义要结束进程句柄 handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得系统快照句柄 PROCESSENTRY32 *info; //定义PROCESSENTRY32结构字指 //PROCESSENTRY32 结构的 dwSize 成员设置成 sizeof(PROCESSENTRY32) info = new PROCESSENTRY32; info->dwSize = sizeof(PROCESSENTRY32); //调用一次 Process32First 函数,从快照中获取进程列表 Process32First(handle, info); //重复调用 Process32Next,直到函数返回 FALSE 为止 while(Process32Next(handle, info) != FALSE) { CString strTmp = info->szExeFile; //指向进程名字 //strcmp字符串比较函数同要结束相同 //if(strcmp(c, info->szExeFile) == 0 ) if (strProgram.CompareNoCase(info->szExeFile) == 0 ) { //PROCESS_TERMINATE表示为结束操作打开,FALSE=可继承,info->th32ProcessID=进程ID handle1 = OpenProcess(PROCESS_TERMINATE, FALSE, info->th32ProcessID); //结束进程 TerminateProcess(handle1, 0); } } delete info; CloseHandle(handle); }
作者: ddszhan 发布时间: 2011-12-15
作者: xuchengwu123456 发布时间: 2011-12-15
作者: shen_wei 发布时间: 2011-12-15
查找b.exe进程,也就是枚举进程。。根据这个来判断。。
这说的......
作者: xuchengwu123456 发布时间: 2011-12-15
#include <windows.h> #include <stdio.h> #include <tchar.h> #include "psapi.h" void PrintProcessNameAndID( DWORD processID ) { TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>"); // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); // Get the process name. if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) ); } } // Print the process name and identifier. _tprintf( TEXT("%s (PID: %u)\n"), szProcessName, processID ); CloseHandle( hProcess ); } void main( ) { // Get the list of process identifiers. DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return; // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name and process identifier for each process. for ( i = 0; i < cProcesses; i++ ) PrintProcessNameAndID( aProcesses[i] ); }
作者: shen_wei 发布时间: 2011-12-15
引用 3 楼 shen_wei 的回复:
查找b.exe进程,也就是枚举进程。。根据这个来判断。。
这说的......
难道提供思路,也不行。。。不动手的人,真难伺候!!!冬天真冷,人更冷。。。
作者: shen_wei 发布时间: 2011-12-15
如果a、b都是你的程序,或者说是单实例程序,就生成一个GUID创建Mutex就是了,只要系统中有进程创建过了,CreateMutex后GetLastError的值就是ERROR_ALREADY_EXISTS
作者: kyotrue 发布时间: 2011-12-15
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28