2011-12-05 162 views
2

“open -a”不是我们想要的答案,因为我想自动调试Mac OS X应用程序。这意味着如果有人可以提供如[程序] [args]格式的命令行,则会更好。所以ltrace机制可以将[程序]作为调试目标,并以[args]作为输入。如何从命令行启动Mac OS X应用程序?

我尝试过类似“/ Applications/Microsoft Office 2011/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint”/Users/poc.pptx的命令行,只有Microsoft Point进程已启动,但未打开poc.pptx。

打开pptx文件打开Microsoft Point之后,它是这样的:/ Applications/Microsoft Office 2011/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint -psn_0_307275,没有参数“poc.pptx”。

我甚至手动使用“gdb/Applications/Microsoft Office 2011/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint”和“set args /Users/poc.pptx”,然后是“r”,目标应用程序无法打开某些文件运行。

我对此感到困惑,那么,有人可以帮助我解决这个问题吗?

谢谢!

+5

什么让你相信文件名作为参数传递给powerpoint可执行文件? – mouviciel

+0

,因为其他应用程序可以以这种方式启动。 /Applications/Preview.app/Contents/MacOS/Preview /Users/User/Desktop/t.tiff例如。 我是一个Windows用户,Microsoft Office for windows也可以从cmd启动。 –

回答

1

不知道这是否会帮助你(取决于你想如何做你的调试),但你可以使用AppleScript的命令行,像这样:

%osascript <<<EOD 
tell application "Excel" to open "Users:xxx:Documents:sheet.xls" 
EOD 

当进入这个方式,你的脚本可以包含多行,它不必局限于单行。

6

open -b com.microsoft.PowerPoint <filename>似乎适用于我从命令行打开演示文稿。

5

转到文件所在目录,然后输入

open -a "Microsoft PowerPoint" <filename.ppt> 

这里的“Microsoft PowerPoint中”是功率点应用程序的名称,请检查电源点的名字,如果它在你的应用程序目录不同。

这对我的MAC(OSX 10.8)来说工作得很好。

我们也可以给出完整的路径,而不仅仅是文件名。

open -a "Microsoft PowerPoint" <ppt file path> 

这也工作正常。

+0

确认'打开-a“Microsoft Word”'也适用 –

1

如果PowerPoint未打开作为命令行参数传递的文档,那么这反映了PowerPoint如何编码。除了微软之外,没有其他人能做到这一点。

操作系统通常不会使用该技术来告诉应用程序打开文档。相反,它将Apple事件传递给应用程序。 Cocoa默认情况下会接受命令行参数,并将它们与Apple事件类似处理,但显然PowerPoint会覆盖该默认行为。

如果您想调试或跟踪PowerPoint,我建议您分两步进行。首先,在调试器或跟踪程序下无需参数地启动它。然后,告诉它打开一个文件。您可以使用Finder和/或Dock以正常方式执行此操作,也可以使用open -a ...。这样的打开文档的请求不会启动PowerPoint的第二个实例,它会将事件传递到正在运行的PowerPoint,您正在进行调试/跟踪。所以,结果应该与你想要的相似。

相关问题