【问题标题】:Is it OK to pass a null window handle to ShellExecute?可以将空窗口句柄传递给 ShellExecute 吗?
【发布时间】:2012-02-24 11:07:15
【问题描述】:

我有一个 Delphi 控制台应用程序,最终需要启动两个应用程序之一。

我在让 ShellExecute 正常工作时遇到一些问题,我认为问题与没有控制台应用程序的句柄有关。

让我伤心的一句话是:

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

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

【问题讨论】:

  • 我认为你需要在 IDE 中禁用“Debug Spawned Processes”,按 F6 并输入“debug Spawned processes”,如果选中,请取消选中并重试
  • HWND(0) 是 HWND_DESKTOP,供您参考。

标签: delphi console delphi-2010 shellexecute


【解决方案1】:

hwnd 参数传递0 很好。 documentation 是这样描述参数的:

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

您的错误是由于其他原因造成的。

【讨论】:

  • 谢谢 - 原来我没有手动释放我的数据模块!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2015-02-09
  • 1970-01-01
相关资源
最近更新 更多