我正尝试使用 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的是

是否有任何具体的原因,你正在使用的ShellExecute?

可以使用打开xls文件[System.Diagnostics程序。]的Process.Start [文件的名称],点击 我很抱歉,我没有看标签及假设您正在使用.NET

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top