Winapi Pascal中的System()函数? 我需要PASCAL程序中C++函数“Sype()”的功能。 有什么可能的使用方法吗 例如,我想模仿C++函数: System("COLOR fc"); > C++库函数系统< /> >启动一个新进程。在我看来,FreePascal函数SysUtils.ExecuteProcess将执行您想要的操作
如果您真正想做的只是更改控制台上的背景颜色,那么另一种选择是调用Windows API函数。Winapi Pascal中的System()函数? 我需要PASCAL程序中C++函数“Sype()”的功能。 有什么可能的使用方法吗 例如,我想模仿C++函数: System("COLOR fc"); > C++库函数系统< /> >启动一个新进程。在我看来,FreePascal函数SysUtils.ExecuteProcess将执行您想要的操作,winapi,pascal,freepascal,fpc,Winapi,Pascal,Freepascal,Fpc,如果您真正想做的只是更改控制台上的背景颜色,那么另一种选择是调用Windows API函数。system()调用特定于平台的命令行处理器。例如,在Windows上,system(“command”)调用CreateProcess()调用%COMSPEC%/C“command”,其中%COMSPEC%是command.com或cmd.exe,具体取决于Windows版本。问题有点复杂。有几种方法可以做到这一点 在*nix上,系统以unix.fpsystem()的形式提供。(虽然严格来说与libc系
system()
调用特定于平台的命令行处理器。例如,在Windows上,system(“command”)
调用CreateProcess()
调用%COMSPEC%/C“command”
,其中%COMSPEC%
是command.com
或cmd.exe
,具体取决于Windows版本。问题有点复杂。有几种方法可以做到这一点
请注意,我将命令(color fd)作为一个参数传递,但在*nix情况下,afaik更为重要。。请注意,您可能需要执行“cmd/c color fc”。@JimMischel我不想创建外部进程。我想在我的程序控制台中执行命令。我正在使用SetConsoleTextAttribute。但是这个函数不能像“COLOR arg”那样将控制台背景设置为纯白色。@Hooch:“不适合我”并不能给我们提供太多的信息。我建议您在这里更新您的问题,或者提出一个新问题,显示您正在使用的代码,以及您收到的错误消息。executeprocess是createprocess派生,而不是shellexecute派生。如果它只执行二进制文件,并且只有完整路径,请参阅我的另一个答案。这个答案失败:ExecuteProcess('command.com','C COLOR fd');使用command.com的完整路径,或者更好的getEnvironmentVariable('COMSPEC');你能告诉我更多关于如何使用方法2吗?我只想使用“COLOR arg”命令将控制台背景更改为纯白色。Pascal颜色更改函数使背景为灰色,而不是白色。请在问题中添加不使背景为白色的代码。我为方法5.2添加了代码。您的代码给出了错误:为调用“GetEnvironmentVariable”指定的参数数量错误。但用“cmd.exe”替换GetEnvVar会执行。但它什么也没做。ExecuteProcess('cmd.exe',['/C','COLOR fd']);很奇怪。这适用于我在2.6.0和trunk上的工作,包括win32和win64。此外,我真的无法想象为什么它不能工作(因为所有使用的函数都至少是2.2.0+,这已经被认为是石器时代的版本。我看到你在Pascal方面很好。你能帮我解决这个问题吗?我能通过邮件联系你吗?
uses
Sysutils;
begin
ExecuteProcess(getenvironmentvariable('COMSPEC'), ['/C','COLOR fd']);
end.