gpt4 book ai didi

delphi - Delphi XE5 Shell执行非英文字符

转载 作者:行者123 更新时间:2023-12-03 19:31:04 26 4
gpt4 key购买 nike

我有以下代码:

var
sciezkaDysk : string;
begin
sciezkaDysk :='/c ffmpeg.exe MORE_COMMANDS_HERE -f flv "E:\ół test\test.flv"'
ShellExecute(0, nil, 'cmd.exe', PWideChar(sciezkaDysk), '', SW_HIDE);
end;


问题出在目录名“ółtest”上,当目录名不包含非英文字符时,一切正常。请帮忙。谢谢。

最佳答案

问题不在Delphi代码中。您的ffmpeg可执行文件很可能使用GetCommandLineA而不是GetCommandLineW来读取命令行,并且从UTF-16到ANSI的转换失败。

有多种选择,但我怀疑最简单的方法是将新进程的工作目录指定为包含文件的目录。这样,ffmpeg无需查看麻烦的字符– ShellExecuteW处理它们:

ShellExecute(
0,
nil,
'ffmpeg.exe',
'MORE_COMMANDS_HERE -f flv test.flv',
'E:\ół test',
SW_HIDE
);


也就是说,我建议 CreateProcess是启动外部进程的更好方法。这样您将获得更多控制。您可以更干净地确保未显示控制台窗口。

关于delphi - Delphi XE5 Shell执行非英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20705390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com