我ShellExecute用来做某事,第一个参数是HWND ,MSDN上的文档说:
父窗口的句柄,用于显示UI或错误消息.如果操作未与窗口关联,则此值可以为NULL.
但我发现无论哪个HWND值得到相同的结果.
例如 :
ShellExecute(0, 'open', 'c:\', nil, nil, SW_SHOWNORMAL);
ShellExecute(Self.Handle, 'open', 'c:\', nil, nil, SW_SHOWNORMAL);
ShellExecute(123456, 'open', 'c:\', nil, nil, SW_SHOWNORMAL);
只是得到相同的东西(打开磁盘C),所以我想知道使用不同的用途是什么HWND?
顺便说一下,当'HWND = 0'使用DeskTop的Handle时?
Dav*_*nan 12
它HWND用作任何显示为调用结果的UI的所有者窗口ShellExecute.例如,该窗口将拥有任何错误消息对话框.
MSDN文档中描述了所拥有窗口的含义.主要摘录:
拥有在窗口上设置了几个约束.
- 拥有的窗口始终位于z顺序的所有者之上.
- 当系统所有者被销毁时,系统会自动销毁拥有的窗口.
- 拥有的窗口在其所有者最小化时隐藏.
重要的是第一个.如果您ShellExecute使用GUI应用程序进行呼叫,则您希望任何窗口都归您应用中当前处于活动状态的窗口所有.通过MyForm.Handle.
如果您的应用中没有GUI,则传递0.
在代码示例中,调用ShellExecute根本没有显示任何UI.所以你传递的没有任何区别.但是如果您的调用导致显示错误对话框,那么您传递的窗口句柄将变得相关.
| 归档时间: |
|
| 查看次数: |
7981 次 |
| 最近记录: |