我想搜索机器的进程表看是否存在某个进程,如存在则作进一步的操作,请问应该怎么取得
解决方案 »
- CFile类能够读取utf8和unicode类型的文件吗?
- mfc中datagrid显示数据库左上角数据总是null
- MFC基于对话框编程中自定义的类中如何访问对话框类的成员变量?
- ProEssentials 的问题
- 在 vs.net里面使用mfc 给类添加构造函数 为什么使用的时候不能识别?
- 安装 visual studio 6 输入序列号后,弹出对话框"can not find acme setup"请问如和解决.谢谢了先!
- 关于对具体某个文件夹的加密
- 如何学习WINDOWS程序设计~?急切期待中~感谢
- 如何获得创建模式对话框的视图的指针?
- 初学者遇到的问题。。。。 散分了
- 一个很急而有奇怪的问题?
- SOS, .NET问题
net 框架有个什么叫 thhread 的类 看一下msdn就会了。
OK?
{
public:
JProcessInfo();
virtual ~JProcessInfo();
BOOL FindProcessInfo(const CString& cstrProcessName);
BOOL NeedTerminateProcess();
void GetUpdateSystemName(const CString&);
void ClearProcessInfo();
private:
HANDLE m_hProcessSnap;
PROCESSENTRY32 m_pe32;
HANDLE m_hProcess;
HANDLE m_hRealProcess;
CString m_cstrSystemName;
};JProcessInfo::JProcessInfo():m_hProcessSnap(NULL),m_hProcess(NULL),m_hRealProcess(NULL)
{
memset(&m_pe32,0,sizeof(m_pe32));
m_pe32.dwSize = sizeof(PROCESSENTRY32);
m_hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
}JProcessInfo::~JProcessInfo()
{
try
{
if (m_hRealProcess)
::CloseHandle(m_hRealProcess);
::CloseHandle(m_hProcessSnap);
}
catch (...)
{
0;
}
}BOOL JProcessInfo::FindProcessInfo(const CString& cstrProcessName)
{
if (m_hProcessSnap != INVALID_HANDLE_VALUE)
{
if (::Process32First(m_hProcessSnap,&m_pe32))
{
do
{
HANDLE m_hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,m_pe32.th32ProcessID);
CString cstrAppName(m_pe32.szExeFile);
if (cstrAppName == cstrProcessName)
{ if (m_pe32.th32ProcessID != ::GetCurrentProcessId() && m_cstrSystemName != cstrProcessName)
{
::TerminateProcess(m_hProcess,0);
if (::WaitForSingleObject(m_hProcess,INFINITE) == WAIT_OBJECT_0)
{
return TRUE;
}
}
else
m_hRealProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,m_pe32.th32ProcessID);
}
}
while (::Process32Next(m_hProcessSnap,&m_pe32));
if (m_hRealProcess)
return TRUE;
return FALSE;
}
}
return FALSE;
}BOOL JProcessInfo::NeedTerminateProcess()
{
if (!m_hRealProcess)
return FALSE;
return ::TerminateProcess(m_hRealProcess,0);
}void JProcessInfo::GetUpdateSystemName(const CString& pm)
{
m_cstrSystemName = pm;
}void JProcessInfo::ClearProcessInfo()
{
m_cstrSystemName.Empty();
}
GetAllCurrentProcess()
{
HANDLE h_SnapShot;
h_SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 processListStr;
processListStr.dwSize = sizeof(PROCESSENTRY32); BOOL ret = false; ret = Process32First(h_SnapShot, &processListStr); CListBox *lstBox; lstBox = (CListBox *)GetDlgItem(IDC_LIST1);
lstBox->ResetContent(); int i = 0; while(ret)
{
lstBox->InsertString(i, processListStr.szExeFile);
processID[i] = processListStr.th32ProcessID;
ret = Process32Next(h_SnapShot, &processListStr);
i++;
}
}