vc++中程序运行后为什么进程没有关闭?能给出正确的完整的程序吗?源代码如下

来源:百度知道 编辑:UC知道 时间:2024/05/16 09:49:47
#include<iostream>

#include<windows.h>
using namespace std;
int main()

{HANDLE hProcessHandle;
ULONG nProcessID;
HWND TheWindow;

TheWindow = ::FindWindow( NULL, "Explorer.EXE" );
::GetWindowThreadProcessId( TheWindow, &nProcessID );
hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE,

nProcessID );
::TerminateProcess( hProcessHandle, 4 );

return 0;

}
为什么我提升了权限也不行?可以给一个可行的代码我看一下吗?麻烦了

}

结束进程需要提升权限,下面是一个结束指定ID进程的程序片段,希望对你又帮助。
这个是完整的代码,pslist函数列出所有进程,killps杀掉指定ID的进程。
#include <windows.h>
#include <stdio.h>
#include <Tlhelp32.h>

void pslist(void);
BOOL killps(DWORD id);
BOOL SetPrivilege(HANDLE hToken,LPCTSTR lpszPrivilege,BOOL bEnablePrivilege);

void pslist(void)
{
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32= {0};
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //创建一个进程快照
if (hProcessSnap == (HANDLE)-1)
{
printf("\nCreateToolhelp32Snapshot() failed:%d",GetLastError());
return ;
}
pe32.dwSize = sizeof(PROCESSENTRY32); //初始化PROCESSENTRY32结构体
printf("\nProcessName ProcessID");
if (Process32First(hProcessSnap, &pe32)) //第一个进程
{
char a[5];
do //开始枚举进程
{
itoa(pe32.th32ProcessID,a,10); //转换进程ID号
printf("\n%-20s%d",p