题
我正尝试使用 ShellExecute 打开文件,在Excel。我在读关于功能上MSDN论坛上,我发现的以下信息有关的处理,这是第一个参数:
"hwnd[在]一个处理所有者窗口,用以显示用户接口(UI)或错误信息。这个值可以NULL,如果操作不相关的一个窗口"。
我也听到这个称为处理父窗口。什么是母/主窗口?正如你看到下面我使用空对把手,但是由于操作确实是相关的窗口,我可能需要处理,但我不知道使用什么样的处理。
ShellExecute(NULL, "open" ,"Excel.exe",
"C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls",
NULL, SW_SHOWNORMAL);
解决方案
它是 通常为0
hwnd:父窗口,就会收到一个可能的消息框.这一参数通常为0.
它指的是顶级别窗口:窗户你开口没有任何父母,并且是主要窗口的应用程序正在执行。
当你开关的应用程序之间(ALT-卡)中,你们展示下一个顶级窗口(未来的应用程序的父母一方处理equals0)在z以(例如)。
当然,父给你的程序 不能桌面窗口:
如果创建一个孩子窗口,其父母是GetDesktopWindow(),您的窗现在是粘在桌面上的窗口。如果你的窗口,然后叫什么样的消息框(),以及这一模式对话,然后上述规则踢和桌面得到无障碍和机是烤面包。
路径,我建议双引号周围的简单行情: " ' ... ' "
"'C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls'"
可能的工作也(未经测试)与双双引号 " "" ... "" "
"""C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls"""
, 就说明 这个线程.
实际上,如前所在 你的其它问题 通过 安迪 而通过 Mesidin, ,并在 ShellExecute功能手册, 你可以打开文件,并通过其路径参数。
ShellExecute( NULL, "open",
"Test.xls", "C:\\Documents and Settings\\Lab1\\My Documents\\",
NULL, SW_SHOWNORMAL);
这意味着Excel是默认的用于开口。xls扩展文件虽然。
其他提示
当你看到它描述为“处理对父窗口,”这意味着它是窗口将是的任何UI功能选择父窗口中显示。你通过手柄可能会或可能不会已经在调用ShellExecute
的一些其他时间窗口的父,但不要紧。
你为什么要专门ShellExecuting的Excel?如果他们有OpenOffice.org,他们被打破 - 你真的应该被调用的电子表格文件“打开”动词,你不需要硬编码在“创先争优”的名字,这就是ShellExecute的是。 p>
是否有任何具体的原因,你正在使用的ShellExecute?
可以使用打开xls文件[System.Diagnostics程序。]的Process.Start [文件的名称],点击 我很抱歉,我没有看标签及假设您正在使用.NET