传递一个空的窗口句柄给ShellExecute是否可行?

11

我有一个 Delphi 控制台应用程序,在最后需要启动两个应用程序中的一个。

我在尝试使用 ShellExecute 时遇到了一些问题,而且我认为问题与没有控制台应用程序的句柄有关。

导致问题的行是:

ShellExecute(0, 'open', 'someapplication.exe', nil, nil, SW_SHOWNORMAL);

我认为句柄中的0是问题所在,因为它可以正常编译运行调试器,但如果尝试运行可执行文件,则会出现未处理的错误(控制台应用程序认为它已经顺利完成)。


我认为你需要在IDE中禁用“调试生成的进程”,按F6并输入“debug spawned processes”,如果已选中,请取消选中并重试。 - user497849
HWND(0) 是 HWND_DESKTOP,供您参考。 - OnTheFly
1个回答

13
传递0作为hwnd参数是可以的。documentation描述了该参数如下:

用于显示UI或错误消息的父窗口的句柄。如果操作未与窗口关联,则此值可以为NULL。

你的错误是由其他原因引起的。

谢谢 - 原来我没有手动释放我的数据模块! - Dan Kelly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接