13,870
社区成员




void __fastcall TForm1::FormCreate(TObject *Sender)
{
GetProcessList();
}
//---------------------------------------------------------------------------
//下面函数实现遍历系统当前运行的全部进程
void __fastcall TForm1::GetProcessList(void)
{
HANDLE hProcessSnap=0;
PROCESSENTRY32 pe32;
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
ShowMessage("snap error!");
return;
}
pe32.dwSize=sizeof(pe32);
BOOL bSnap=Process32First(hProcessSnap,&pe32) ;
TListItem* pItem=0;
pItem=ListView1->Items->Add();
pItem->Caption=IntToStr( pe32.th32ProcessID);
pItem->SubItems->Add(pe32.szExeFile);
pItem->SubItems->Add(IntToStr(pe32.cntThreads));
pItem->SubItems->Add(IntToStr(pe32.cntUsage));
while(bSnap)
{
bSnap=Process32Next(hProcessSnap,&pe32);
pItem=ListView1->Items->Add();
pItem->Caption=IntToStr( pe32.th32ProcessID);
pItem->SubItems->Add(pe32.szExeFile);
pItem->SubItems->Add(IntToStr(pe32.cntThreads));
pItem->SubItems->Add(IntToStr(pe32.pcPriClassBase));
}
CloseHandle(hProcessSnap);
}
//下面是在某个Button中结束选中的进程
void __fastcall TForm1::N1Click(TObject *Sender)
{
HANDLE hThread=NULL;
TListItem*pItem=0;
pItem=ListView1->Selected;
if(pItem==0)
{
ShowMessage("没有选中任何进程!");
return;
}
else
{
int ThreadID=StrToInt(pItem->Caption);
hThread=OpenProcess(PROCESS_ALL_ACCESS,false,ThreadID);
if(hThread==NULL)
{
ShowMessage("打开进程失败!");
return ;
}
else
{
if(TerminateProcess(hThread ,0))
{
CloseHandle(hThread);
ListView1->Items->Clear();
GetProcessList();//刷新列表
ShowMessage("结束进程成功!");
}
else
{
ShowMessage("结束进程失败!");
}
}
}
return ;
}
WinExec("taskkill /F /IM IEXPLORE.exe",SW_HIDE);///////关闭IE
ShellExecute(NULL,"open","IEXPLORE.exe",NULL,NULL,SW_SHOWNORMAL);////////启动IE
bool __fastcall TfrmMain::IsMainAppRunning()
{
if(FAppProcessName == "")
return false;
AddReMessage("检查当前系统进程\t ……",clBlue, "[进行中……]", clRed);
bool ret = false;
sz = 0;
if(EnumProcesses(lpidProcess, 500, &sz))
{
ReplaceReMessage("检查当前系统进程\t ……",clBlue, "共发现"+IntToStr(sz)+"个", clGreen);
HANDLE hProcess;
HMODULE lphModule;
DWORD cbNeeded;
for(int i=0;i<int(sz);i++)
{
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, false, lpidProcess[i]);
if(hProcess!=NULL)
{
cbNeeded = 0;
if(!EnumProcessModules(hProcess, &lphModule, sizeof(HMODULE), &cbNeeded))
{
continue;
}
char lpBaseName[255]="unknown";
if(GetModuleBaseName(hProcess, lphModule, lpBaseName, sizeof(lpBaseName)))
{
if(AnsiString(lpBaseName) == FAppProcessName)
{
ret = true;
AddReMessage("系统正在运行",clRed, NULL, TColor(NULL));
break;
}
}
}
CloseHandle(hProcess);
}
}
else
{
ReplaceReMessage("检查当前系统进程\t ……",clBlue, "失败", clRed);
}
return ret;
}