#include<iostream>
#include<windows.h>
#include<TLHelp32.h>
using namespace std;
bool KillProcessor(LPCTSTR ProcessName)
{
bool KillSuccess=false;
PROCESSENTRY32 PE32;
PE32.dwSize=sizeof(PE32);
HANDLE hProcSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcSnap!=NULL)
{
bool HasTheProc=Process32First(hProcSnap,&PE32);
if (HasTheProc)
{
while (HasTheProc)
{
if ((LPCTSTR)PE32.szExeFile==ProcessName)
{
HANDLE hProcessor=OpenProcess(PROCESS_ALL_ACCESS,false,PE32.th32ProcessID);
KillSuccess=TerminateProcess(hProcessor,0);
CloseHandle(hProcessor);
cout<<"adlkajsldjlkajslkfjlkasjkdljasd"<<endl;
}
HasTheProc=Process32Next(hProcSnap,&PE32);
}
CloseHandle(hProcSnap);
}
}
CloseHandle(hProcSnap);
return KillSuccess;
}int main ()
{
cout<<KillProcessor("notepad.exe")<<endl;
}
**********************************************************************没法结束进程if ((LPCTSTR)PE32.szExeFile==ProcessName)
{
HANDLE hProcessor=OpenProcess(PROCESS_ALL_ACCESS,false,PE32.th32ProcessID);
KillSuccess=TerminateProcess(hProcessor,0);
CloseHandle(hProcessor);
cout<<"adlkajsldjlkajslkfjlkasjkdljasd"<<endl;
}
if 里面的东西不执行...即 PE32.szExeFile==ProcessName 不成立,
求解.......
#include<windows.h>
#include<TLHelp32.h>
using namespace std;
bool KillProcessor(LPCTSTR ProcessName)
{
bool KillSuccess=false;
PROCESSENTRY32 PE32;
PE32.dwSize=sizeof(PE32);
HANDLE hProcSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcSnap!=NULL)
{
bool HasTheProc=Process32First(hProcSnap,&PE32);
if (HasTheProc)
{
while (HasTheProc)
{
if ((LPCTSTR)PE32.szExeFile==ProcessName)
{
HANDLE hProcessor=OpenProcess(PROCESS_ALL_ACCESS,false,PE32.th32ProcessID);
KillSuccess=TerminateProcess(hProcessor,0);
CloseHandle(hProcessor);
cout<<"adlkajsldjlkajslkfjlkasjkdljasd"<<endl;
}
HasTheProc=Process32Next(hProcSnap,&PE32);
}
CloseHandle(hProcSnap);
}
}
CloseHandle(hProcSnap);
return KillSuccess;
}int main ()
{
cout<<KillProcessor("notepad.exe")<<endl;
}
**********************************************************************没法结束进程if ((LPCTSTR)PE32.szExeFile==ProcessName)
{
HANDLE hProcessor=OpenProcess(PROCESS_ALL_ACCESS,false,PE32.th32ProcessID);
KillSuccess=TerminateProcess(hProcessor,0);
CloseHandle(hProcessor);
cout<<"adlkajsldjlkajslkfjlkasjkdljasd"<<endl;
}
if 里面的东西不执行...即 PE32.szExeFile==ProcessName 不成立,
求解.......
解决方案 »
- 想要一个ini文件解析类,可以解析ini文件,解析完成后,知道该ini文件有多少section,每个section下面有多少key,value
- u_int8_t属于哪个头文件啊
- 请问dns服务器的端口是多少?
- 急:为什么我画的曲线是阶梯形的?
- 怎样通过程序登陆一台计算机
- CRecordset::MoveNext()时出现数据截断,是怎么回事????
- 新手上路,请多关照:怎样能使链接后的exe程序在别的电脑上运行?
- 请问如何去掉框架上的菜单?
- 怎样在全局函数中用GetListCtrl().UpdateWindow();,即在全局函数中更新视图
- 我想在vc++中调试vbscript脚本写的宏,就像vc++的调试那样
- char []转jstring ,请求帮助??
- 用C++做FTP客户端碰到的关于服务器接收数据包的问题
两个指针比较?这个无语。
还是用这个吧:
if (lstrcmpi(PE32.szExeFile, ProcessName) == 0)
{
......
}
怎么能比较两个指针的地址呢,这个肯定是不相等的啊,
用lstrcmp来比较字符串
除了上面说的问题外,还有一个大小写的问题,最好用CharLower将PE32.szExeFile转成小写,然后比较
GetExitCodeProcess(hProcessor, &code);
if (STILL_ACTIVE == code)
{
......
}
else
{
......
}
//终止线程测试
//通过进程的主线程函数返回的退出测试
#include <windows.h>
#include <iostream>
class obj
{
public:
obj() {printf("Constructot\n");Sleep(1000); }
~obj() {printf("Destuctor\n");Sleep(1000); }
};
int gi = 1;
DWORD WINAPI Fun1Proc(LPVOID lpParameter )
{
while(gi)
{
printf("1\n");
Sleep(500);
}
return 0;
}
DWORD WINAPI Fun2Proc(LPVOID lpParameter )
{
while(gi)
{
printf("2\n");
Sleep(500);
}
return 0;
}
int threadtest()
{
obj obj1;
HANDLE hThread1;
HANDLE hThread2;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
Sleep(3000);
gi = 0;//3秒终止该进程
//ExitProcess(1);和exit(1); 无法彻底析构对象
return 0;
}
其次结束不了进程是因为XP SP2之后需要Debug权限.提权吧.代码一大堆
{
HANDLE tokenhandle;
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount=1;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&tokenhandle))
{
MessageBox(_T("OpenProcessToken Failed"),_T("ERROR"));
return FALSE;
}
if (!LookupPrivilegeValue(NULL,PrivilegeName,&tp.Privileges[0].Luid))
{
MessageBox(_T("LookupPrivilegeValue Failed"),_T("ERROR"));
CloseHandle(tokenhandle);
return FALSE;
}
if (!AdjustTokenPrivileges(tokenhandle,FALSE,&tp,sizeof(tp),NULL,NULL))
{
MessageBox(_T("LookupPrivilegeValue Failed")_T("ERROR"));
CloseHandle(tokenhandle);
return FALSE;
}
CloseHandle(tokenhandle);
return TRUE;
}