谢谢 迷糊:<br>ping确实可以,但是我用的是oracle中的imp命令将文件导入数据库。该命令可以在dos窗口中直接运行,但是却无法用重定向的方法(>)输出到文件。至少我目前不知道可以重定向它的输出结果。我试过重定向,但是结果仍然在屏幕显示,文本中没有内容。
<br><br>to whbell:<br>如果命令行下可以重定向,应该可以使用以前帖子中的RunDosInMemo过程。<br>==========================<br>procedure RunDosInMemo(DosApp:String;AMemo:TMemo);<br>const<br> ReadBuffer = 2400;<br>var<br> Security : TSecurityAttributes;<br> ReadPipe,WritePipe : THandle;<br> start : TStartUpInfo;<br> ProcessInfo : TProcessInformation;<br> Buffer : Pchar;<br> BytesRead : DWord;<br> Apprunning : DWord;<br>begin<br> With Security do begin<br> nlength := SizeOf(TSecurityAttributes);<br> binherithandle := true;<br> lpsecuritydescriptor := nil;<br> end;<br> if Createpipe (ReadPipe, WritePipe, @Security, 0) then begin<br> Buffer := AllocMem(ReadBuffer + 1);<br> FillChar(Start,Sizeof(Start),#0);<br> start.cb := SizeOf(start);<br> start.hStdOutput := WritePipe;<br> start.hStdInput := ReadPipe;<br> start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;<br> start.wShowWindow := SW_HIDE;<br> if CreateProcess(nil,PChar(DosApp),@Security,@Security,true,NORMAL_PRIORITY_CLASS,<br> nil,nil,start,ProcessInfo)<br> then<br> begin<br> repeat<br> Apprunning := WaitForSingleObject(ProcessInfo.hProcess,100);<br> Application.ProcessMessages;<br> until (Apprunning <> WAIT_TIMEOUT);<br> Repeat<br> BytesRead := 0;<br> ReadFile(ReadPipe,Buffer[0],ReadBuffer,BytesRead,nil);<br> Buffer[BytesRead]:= #0;<br> OemToAnsi(Buffer,Buffer);<br> AMemo.Text := AMemo.text + String(Buffer);<br> until (BytesRead < ReadBuffer);<br> end;<br> FreeMem(Buffer);<br> CloseHandle(ProcessInfo.hProcess);<br> CloseHandle(ProcessInfo.hThread);<br> CloseHandle(ReadPipe);<br> CloseHandle(WritePipe);<br> end;<br>end;<br>==========================<br>