VC进程结速代码

qobin 2010-12-15 05:44:18
#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 不成立,
求解.......
...全文
47 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qobin 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wltg2001 的回复:]
引用 7 楼 qobin 的回复:
引用 2 楼 wltg2001 的回复:
if ((LPCTSTR)PE32.szExeFile==ProcessName)
===========
改为:if(strcmp(PE32.szExeFile,ProcessName)==0)
另外注意大小写,我记得NOTEPAD.EXE这个进程是大小的。

请问如何不区分大小写呢?!

有些EXE……
[/Quote]
明白了。。。太感谢你喇
wltg2001 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qobin 的回复:]
引用 2 楼 wltg2001 的回复:
if ((LPCTSTR)PE32.szExeFile==ProcessName)
===========
改为:if(strcmp(PE32.szExeFile,ProcessName)==0)
另外注意大小写,我记得NOTEPAD.EXE这个进程是大小的。

请问如何不区分大小写呢?!
[/Quote]
有些EXE文件在的进程名是大写的,有的却是小写的,你可以用CharLower将PE32.szExeFile转成小写,然后比较,我在你另一个帖子中回了。
qobin 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wltg2001 的回复:]
if ((LPCTSTR)PE32.szExeFile==ProcessName)
===========
改为:if(strcmp(PE32.szExeFile,ProcessName)==0)
另外注意大小写,我记得NOTEPAD.EXE这个进程是大小的。
[/Quote]
请问如何不区分大小写呢?!
qobin 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 panasonic0804 的回复:]
引用 2 楼 wltg2001 的回复:
if ((LPCTSTR)PE32.szExeFile==ProcessName)
===========
改为:if(strcmp(PE32.szExeFile,ProcessName)==0)
另外注意大小写,我记得NOTEPAD.EXE这个进程是大小的。

这个也是一个问题。不过不是造成楼主所说的循环无法终止的原因。
[/Quote]

原因就是if ((LPCTSTR)PE32.szExeFile==ProcessName)

我改成if(strcmp(PE32.szExeFile,ProcessName)==0)就可以了
wltg2001 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 panasonic0804 的回复:]
引用 2 楼 wltg2001 的回复:
if ((LPCTSTR)PE32.szExeFile==ProcessName)
===========
改为:if(strcmp(PE32.szExeFile,ProcessName)==0)
另外注意大小写,我记得NOTEPAD.EXE这个进程是大小的。

这个也是一个问题。不过不是造成楼主所说的循环无法终止的原因。
[/Quote]
楼主的代码循环是可以终止的。
panasonic0804 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wltg2001 的回复:]
if ((LPCTSTR)PE32.szExeFile==ProcessName)
===========
改为:if(strcmp(PE32.szExeFile,ProcessName)==0)
另外注意大小写,我记得NOTEPAD.EXE这个进程是大小的。
[/Quote]
这个也是一个问题。不过不是造成楼主所说的循环无法终止的原因。
panasonic0804 2010-12-15
  • 打赏
  • 举报
回复
楼主,你所说的无法结束进程,是因为楼主循环里的判断条件不应该是HasTheProc。楼主应该检查ERROR_NO_MORE_FILES这个作为判断条件
wltg2001 2010-12-15
  • 打赏
  • 举报
回复
if ((LPCTSTR)PE32.szExeFile==ProcessName)
===========
改为:if(strcmp(PE32.szExeFile,ProcessName)==0)
另外注意大小写,我记得NOTEPAD.EXE这个进程是大小的。
__Silent 2010-12-15
  • 打赏
  • 举报
回复
PE32.szExeFile==ProcessName
怎么能比较两个指针的地址呢,这个肯定是不相等的啊,
用lstrcmp来比较字符串

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧