【发布时间】:2013-11-16 15:53:56
【问题描述】:
我需要从 Delphi XE2 应用程序启动 MS Window 的 OpenFiles.exe 以将当前打开的文件导出到文本文件。正常的 cmd.exe 语法类似于:
Openfiles.exe /query /s 127.0.0.1 /nh >c:\OpenFilesExport.txt
使用以下代码返回成功退出代码但未生成导出文件:
var
exInfo: TShellExecuteInfo;
exitcode: DWORD;
begin
FillChar(exInfo, Sizeof(exInfo), 0);
with exInfo do
begin
cbSize := Sizeof(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
lpVerb := 'open';
lpFile := Pchar('Openfiles.exe');
lpParameters := PChar('/query /s 127.0.0.1 /nh >c:\OpenFilesOutput.txt');
nShow := SW_SHOWNORMAL
end;
if ShellExecuteEx(@exInfo) then
begin
while GetExitCodeProcess(exInfo.hProcess, exitcode)
and (exitcode = STILL_ACTIVE) do
Application.ProcessMessages();
CloseHandle(exInfo.hProcess);
end
else
ShowMessage(SysErrorMessage(GetLastError));
我还尝试将 cmd.exe 语法放在一个 bat 文件中并从 shellexecute 启动它,它确实会生成文件但没有内容。从资源管理器运行相同的 bat 文件会按预期生成文件。
如何从 ShellExecute 成功启动 Openfiles.exe?
【问题讨论】:
标签: delphi winapi delphi-xe2