Windows 如何终止使用winexec()创建的进程?

Windows 如何终止使用winexec()创建的进程?,windows,delphi,pascal,Windows,Delphi,Pascal,例如,我想用WinExec()启动cmd,大约10秒后终止它,我为此编写了一些小代码,但它不起作用。为什么它不起作用,我如何修复它 这是我的密码: program Project2; uses Windows; var hProcess: THandle; begin hProcess := WinExec('C:\Windows\System32\cmd.exe', SW_SHOW); Sleep(10000); TerminateProcess(hProcess, 0); en

例如,我想用WinExec()启动cmd,大约10秒后终止它,我为此编写了一些小代码,但它不起作用。为什么它不起作用,我如何修复它

这是我的密码:

program Project2;

uses
  Windows;

var
  hProcess: THandle;

begin
hProcess := WinExec('C:\Windows\System32\cmd.exe', SW_SHOW);
Sleep(10000);
TerminateProcess(hProcess, 0);
end.

WinExec
不返回进程句柄。事实上,它的文档清楚地表明,您根本不应该使用这个函数。它的存在只是为了向后兼容


改用
CreateProcess
,它通过process information参数返回一个进程句柄

文档中没有任何内容表明返回的值是进程句柄:。我建议(根据文档)在
WinExec
docs的顶部使用CreateProcess(以及读取该链接)。。。“
注意:此功能仅为与16位Windows兼容而提供。应用程序应使用CreateProcess功能。
“我非常怀疑您是否打算支持16位应用程序。您到底为什么希望它工作?没有说明返回值是进程句柄。Jerry Dodge是对的:按照文档中的建议,使用
CreateProcess