【问题标题】:How to kill a process from VC++如何从 VC++ 中杀死一个进程
【发布时间】:2011-02-15 19:18:12
【问题描述】:

我正在使用 VC++ 编译器,我想知道如何杀死一个进程。有什么功能吗?

我尝试使用 TerminateProcess();但我做不到……

【问题讨论】:

  • 您能否向我们展示您的代码并更明确地说明出了什么问题?

标签: c++ windows process kill


【解决方案1】:

我不知道你到底想做什么,但你必须知道TerminateProcess() 只是杀死进程而没有给他正确关闭的机会。

您可能希望首先向应用程序发送WM_CLOSE 消息,然后,如果它没有响应,则使用TerminateProcess() 将其终止。

Dobbs 博士有一篇很棒的文章(附样本)here

你可能想看看。

【讨论】:

    【解决方案2】:

    只是为了确保你做对了:

    • 使用OpenProcess从进程ID获取进程句柄(请求PROCESS_TERMINATE访问权限)
    • 在这个句柄上调用TerminateProcess

    这种方法到底出了什么问题?

    【讨论】:

      【解决方案3】:

      TerminateProcess 需要PROCESS_TERMINATE 权限。如果您从OpenProcess 获取进程句柄,则dwDesiredAccess 参数必须至少包含PROCESS_TERMINATE

      如果您尝试终止提升的进程,那么您的应用(执行终止的应用)也必须提升。

      你从GetLastError()得到什么错误代码?

      【讨论】:

        猜你喜欢
        • 2013-04-13
        • 1970-01-01
        • 2014-10-03
        • 1970-01-01
        • 2014-02-01
        • 2015-03-12
        • 2018-06-09
        • 2011-05-28
        相关资源
        最近更新 更多