我正在尝试使用 ShellExecute 在 Excel 中打开文件。我在 MSDN 论坛上阅读有关该功能的信息,我找到了有关句柄的以下信息,这是第一个参数:

“hwnd [in] 用于显示用户界面 (UI) 或错误消息的所有者窗口的句柄。如果操作与窗口无关,则此值可以为 NULL。”

我也听说这被称为父窗口的句柄。什么是父/所有者窗口?正如您在下面看到的,我使用 NULL 作为句柄,但由于该操作确实与窗口相关联,我可能需要一个句柄,但我不知道该句柄使用什么。

ShellExecute(NULL, "open" ,"Excel.exe",
    "C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls",
    NULL, SW_SHOWNORMAL);

最佳答案

usually 0



它指的是顶层窗口:您打开的窗口没有任何父窗口,是正在执行的应用程序的主窗口。

当您在应用程序之间切换 (ALT-TAB) 时,您将按 z 顺序显示下一个顶级窗口(下一个父句柄等于 0 的应用程序)(例如)。

当然,您的应用 can not be the Desktop Window itself 的父级:



对于路径,我建议在简单引号周围使用双引号:" ' ... ' "

"'C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls'"

也可以使用双双引号(未经测试):" "" ... "" "
"""C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls"""

,如 this thread 所示。

实际上,正如 your other questionAndyMesidin 中提到的,在 ShellExecute Function manual 中,您可以打开文件,并在参数中传递其路径。
ShellExecute( NULL, "open",
              "Test.xls", "C:\\Documents and Settings\\Lab1\\My Documents\\",
              NULL, SW_SHOWNORMAL);

这意味着 Excel 是打开 .xls 扩展文件的默认应用程序。

关于ShellExecute() 的句柄 - 父窗口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/315527/

10-12 17:59
查看更多