2012-02-24 37 views
10

我有一个Delphi控制台应用程序,最终需要启动两个应用程序之一。是否可以将空窗口句柄传递给ShellExecute?

我有一些问题让ShellExecute无误地工作,我认为这个问题与没有控制台应用程序的句柄相关联。

,是造成我的悲伤该生产线是:

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

我认为,在手柄上的0是问题,因为它编译OK并在调试正常运行,但如果我尝试运行可执行文件我得到一个未处理的错误(控制台应用程序认为它已经完成了)。

+0

我认为你需要在IDE中禁用“调试产生的进程”,按F6键并输入“调试产生的进程”,如果是这样的检查,取消选中它,然后再试一次 – ComputerSaysNo 2012-02-24 11:20:40

+0

HWND(0)是HWND_DESKTOP,供您参考。 – OnTheFly 2012-02-24 16:58:10

回答

11

传递hwnd参数的值为0。 documentation由此描述参数:

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

你的错误是由于别的。

+0

谢谢 - 事实证明我没有手动发布我的数据模块! – 2012-02-24 11:29:44