如果代码实现的话可以这么写:
void KillProcess(TCHAR target[]){
DWORD aps[1024], cbNeeded, cbNeeded2, i;
TCHAR buffer[256];
BOOL killed;
HANDLE hProcess;
HMODULE hModule;
killed = FALSE;
EnumProcesses(aps, sizeof(aps), &cbNeeded) for(i = 0; i < cbNeeded/sizeof(DWORD); ++i)
{
if(!(hProcess = OpenProcess(PROCESS_TERMINATE |
PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,FALSE, aps[i])))
continue;
if(!EnumProcessModules(hProcess, &hModule,
sizeof(hModule), &cbNeeded2))
continue;
GetModuleBaseNameA(hProcess, hModule, buffer, 256);
if(lstrcmpi(buffer, target) == 0)
{
if(TerminateProcess(hProcess, 0))
killed = TRUE;
CloseHandle(hProcess);
break;
}
CloseHandle(hProcess);
}
}
你好,唐宗淙,你提出的这个问题,其实有很多种方法解决。
如果你现在初学VC,还连MFC框架结构都还不十分熟练的情况下,代码可以这样编写:
void CLoad::OnCancel()
{
ExitProccess(0);
}
至于原因,你可以自行查询MSDN。
很多问题,都可以通过MSDN找帮助,只是不知道你的英语怎么样。
另外,最好的方法也是用得最普遍的方法是 2 楼说的,也是我经常用的,你可以查找相关书籍。
还有,3 楼说的方法我见得很少,我也试了一下,可以的啊,怎么你试就不行了?可能你要检查你的消息机制,具体我就不讲了。
不知你学VC是怎么的过程,是学校学的?还是自学的?如果是自学,我建议你弄一本孙鑫著的书,叫《VC++深入详解》,我就是由这本书开始学VC的,这本书适合初学者,也适合有一定层次的程序员作为参考之用,讲得比较详细,有很多基础应用方面的东西。
我很欣赏你这种学法,连MFC框架还不十分清楚,就开始编写数据库程序了!学VC,的确要各方面都先涉及,先不要搞清楚原理性的东西,到了能够编写程序了,有些原理性的东西是可以自己理解的,水到渠成。
C++是个好东西,没有它写不出来的程序,(至少有很多人这样讲)。我从VB过渡到用C++,就对C++ 一见钟情,希望能和你交个朋友,我们以后在C++这一块交流经验吧!
其次,请注意,MFC 是微软的基础类库(也有人叫标准类库),而生成框架的是 应用程序向导,概念要弄清。
打开vc++60,新建一个windows
console
application项目,输入名称之后,选着一个“简单的程序”,然后会出现一段代码,都是c语言基本的
你只用添加自己的代码就行了,相信你会看懂的
终止指定进程
#include "tlhelp32h"
void KillExe(const char szExeName)
{
if (szExeName == NULL)
return 0;
int lsr = lstrlen(szExeName);
if (lsr == 0)
return 0;
PROCESSENTRY32 my;
HANDLE l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (((int)l) != -1)
{
mydwSize = sizeof(my);
if (Process32First(l, &my))
{
do
{
if (lstrcmpi(szExeName, myszExeFile + lstrlen(myszExeFile) - lsr) == 0)
{
HANDLE hProcessHandle;
hProcessHandle = OpenProcess(0x1F0FFF, true, myth32ProcessID);
if (hProcessHandle != NULL)
{
if (TerminateProcess(hProcessHandle, 0) != NULL)
{
CloseHandle(hProcessHandle);
}
}
CloseHandle(l);
return;
}
}while (Process32Next(l, &my));
}
CloseHandle(l);
}
}
调用方式
KillExe("c:\\windows\\notepadexe");
完整或部分路径名,不区分大小写
1·老式程序(黑屏),Ctrl+C停止
2·直接右上角X掉
3·任务管理器,强制关闭进程。
当然,如果程序里面停止,只需要在你的while里面加上:if(){break;}
以上就是关于VC如何强制结束程序进程全部的内容,包括:VC如何强制结束程序进程、在VC6中如何实现按下“退出”键销毁整个应用程序、VC++怎样关闭整个程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)