<span style="font-size:14px;"><span style="font-size:12px;">CString MyGetProcess()
{
CString csTemp = "", csPid;
HANDLE hSnapshot, mehandle;
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pe;
MODULEENTRY32 me;
pe.dwSize = sizeof(PROCESSENTRY32);
Process32First(hSnapshot, &pe);
do
{
mehandle = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
me.dwSize = sizeof(MODULEENTRY32);
Module32First(mehandle, &me);
csPid.Format("%d", pe.th32ProcessID);
if (pe.th32ProcessID == 0)
{
csTemp = csTemp + pe.szExeFile + "/t" + csPid + "/tSystem" + "/r/n" ;
}
else
{
csTemp = csTemp + pe.szExeFile + "/t" + csPid + "/t" + me.szExePath + "/r/n" ;
}
CloseHandle(mehandle);
}while(Process32Next(hSnapshot, &pe));
CloseHandle(hSnapshot);
return csTemp;
}</span>
以上爲轉載,裝載地址:http://blog.csdn.net/hgreminem/article/details/4305084
就是獲取進程的相關信息。
獲取特定進程命令行:第三個參數爲進程ID
<span style="font-size:14px;">TCHAR szPath[1024];
HANDLE hProcess;
hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID);
GetProcessCommandLine(hProcess, szPath, 1024)
</span>
<span style="font-size:14px;">//獲取進程命令行
BOOL GetProcessCommandLine(HANDLE hProcess, LPTSTR pszCmdLine, DWORD cchCmdLine)
{
BOOL bRet;
DWORD dwPos;
LPBYTE lpAddr;
DWORD_PTR dwRetLen;
bRet = FALSE;
dwPos = 0;
lpAddr = (LPBYTE)GetCommandLine;
Win7:
if(lpAddr[dwPos] == 0xeb && lpAddr[dwPos + 1] == 0x05)
{
dwPos += 2;
dwPos += 5;
Win8:
if(lpAddr[dwPos] == 0xff && lpAddr[dwPos + 1] == 0x25)
{
dwPos += 2;
lpAddr = *(LPBYTE*)(lpAddr + dwPos);
dwPos = 0;
lpAddr = *(LPBYTE*)lpAddr;
WinXp:
if(lpAddr[dwPos] == 0xa1)
{
dwPos += 1;
lpAddr = *(LPBYTE*)(lpAddr + dwPos);
bRet = ReadProcessMemory(hProcess,
lpAddr,
&lpAddr,
sizeof(LPBYTE),
&dwRetLen);
if(bRet)
{
bRet = ReadProcessMemory(hProcess,
lpAddr,
pszCmdLine,
cchCmdLine,
&dwRetLen);
}
}
}
else
{
goto WinXp;
}
}
else
{
goto Win8;
}
return bRet;
}</span>
結束一個進程,在這裏要特別注意一個問題,hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID);第一個參數必須爲獲取所有權限,否則會出現結束進程失敗。這也是很容易犯的一個錯誤!
<span style="font-size:14px;"><span style="font-size:12px;">BOOL nRes = TerminateProcess(hProcess, 999 );
int ierror=GetLastError();
if( nRes == 0 )
{
MessageBox( _T("結束進程失敗!") );
}</span></span>