我正在尝试使用 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 question 和 Andy 在 Mesidin 中提到的,在 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/