MFC获取主exe路径、启动另一个进程、关闭另一个进程、使同時只有一個進程在運行
2012-08-22 17:55
441 查看
启动另一个进程
STARTUPINFO startupInfo; CString strStartPath1 = GetMainExeDir() + _T("xxxx\\xxxx.exe"); ZeroMemory( &startupInfo, sizeof( startupInfo ) ); startupInfo.cb = sizeof( startupInfo ); startupInfo.dwFlags = STARTF_USESHOWWINDOW; // 使特定成员有效 startupInfo.wShowWindow = (WORD)SW_SHOW; PROCESS_INFORMATION processInfo; DWORD dwErr = 0; if (!CreateProcess(strStartPath1, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfo/*processInfo*/)) { dwErr = GetLastError(); }
关闭另一个进程sItemText为进程名称
PROCESSENTRY32 pe; HANDLE hProcess; CString filepath; HANDLE hShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); pe.dwSize=sizeof(PROCESSENTRY32); if(Process32First(hShot,&pe)) { do { if(wcscmp(pe.szExeFile,sItemText)==0) { hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID); TerminateProcess(hProcess,0); } } while(Process32Next(hShot,&pe)); } CloseHandle(hShot); return 0;
获取主exe路径
CString path; GetModuleFileName(NULL,path.GetBufferSetLength(MAX_PATH+1),MAX_PATH); path.ReleaseBuffer(); int pos = path.ReverseFind('\\'); path = path.Left(pos);
使同時只有一個進程在運行
CString name = _T("yourProcess.exe"); //進程名稱 CreateMutex(NULL, TRUE, MutexGUID); if (GetLastError() == ERROR_ALREADY_EXISTS) { //HWND hRet = FindWindow(NULL, _T("BEProjectUpload.exe")); PROCESSENTRY32 pe; DWORD processID = 0; //snap快照 HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); pe.dwSize = sizeof(PROCESSENTRY32); //减速上一步获得的windows的快照的每个进程,first,next函数 if (!Process32First(hSnapshot, &pe)) { return 0; } CString name1, name2; do { pe.dwSize = sizeof(PROCESSENTRY32); name1 = pe.szExeFile; name2 = name; name1.MakeUpper(); name2.MakeUpper(); //FindWindow() if (name1 == name2) { processID = pe.th32ProcessID; break; } if (Process32Next(hSnapshot, &pe) == FALSE) { break; } } while (1); CloseHandle(hSnapshot); return FALSE; }
相关文章推荐
- C++/MFC如何启动另一个应用程序并获取其进程 ID
- MFC启动其他MFC进程,并传递参数,同时获取参数
- MFC启动进程和关闭进程
- 2014-04-30工作日志:提取文件的路径及使用createprocess时,要用getmodulename获取要执行的模块的路径及调用createprocess时要记得关闭新建的进程
- MFC 关闭另一个指定的进程问题
- windows server 2003更新后 启动网站提示另一个程序正在使用此文件,进程无法访问 关闭phpstudy全部停止再启动OK
- MFC中获取进程名、PID及进程所在路径
- C#获取程序的当前路径,启动和关闭一个Process
- Linux下Tomcat的启动、关闭、杀死进程以及查看日志
- c# 进程获取与关闭操作
- [转载]在2000下获取进程的全路径
- iis启动不了,报错: 另一个程序正在使用此文件,进程无法访问
- MFC获取系统的进程及列表控件使用
- ubuntu12.04中OpenSSH守护进程sshd关闭和启动的方法
- MFC获取系统的进程及列表控件使用
- jobTracker进程在启动后很快就自动关闭(前面两篇博客的方法都无法解决)
- android 获取指定路径下所有文件,将文件从一个目录copy到另一个目录,执行linux命令
- 简单介绍Linux进程文件路径的获取方法
- C#获取当前活动窗口进程、进程ID、程序路径
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法