如何从 Pascal 程序中 运行 命令提示符?

How to run command prompts from a pascal program?

我需要使用 pascal 程序中该文件类型的默认程序打开文件(特别是音乐文件)。到目前为止,我认为最好的方法是使用命令行 运行 命令:

open C:/Users/defaultuser0/Music/filename.wav

但我不确定如何告诉 cmd 在 pascal 中执行某些操作。

假设您正在使用 Windows,您需要使用过程 ShellExecute(并包含 shellapi 单元)。命令可能是

ShellExecute (application.handle, 'open', 
'C:/Users/defaultuser0/Music/filename.wav', nil, nil, SW_MAXIMIZE)

但您可能需要 fiddle 略微考虑一下。阅读系统程序的文档。

在 Lazarus 中有一个 "OpenDocument" 调用抽象了这个功能。在 Windows 上,它重新路由到 ShellExecuteW 函数,在 *nix 上,它尝试将它传递给相关的桌面打开程序(如 Windows 上的 Open/start)。

实现也是可插拔的,所以如果你想以不同的方式打开某个文档(例如直接在 adobe 而不是浏览器中打开 PDF),你可以编写一个拦截器。

此代码可以帮助您:

swapvectors;
exec('cmd','/c open "C:/Users/defaultuser0/Music/filename.wav"');
swapvectors;

您必须使用 DOS 单元才能使用该代码:

uses dos,...;

(对不起我的英语)