VC如何强制结束程序进程

VC如何强制结束程序进程,第1张

如果代码实现的话可以这么写:

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++怎样关闭整个程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10001446.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存