`
lengyue
  • 浏览: 144518 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

delphi调用dos命令

 
阅读更多

unit RunDos;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
Type
   TRunDos=class(TObject)
   public
   procedure CheckResult(b:Boolean);
   function RunDOS(CommandLine:   String):   String;
end;
implementation

{ TRunDos }

procedure TRunDos.CheckResult(b: Boolean);
begin
   if   not   b   then
    Raise   Exception.Create(SysErrorMessage(GetLastError));
end;

function TRunDos.RunDOS(CommandLine: String): String;
var
      HRead,HWrite:THandle;
      StartInfo:TStartupInfo;  
      ProceInfo:TProcessInformation;  
      b:Boolean;  
      sa:TSecurityAttributes;  
      inS:THandleStream;  
      sRet:TStrings;  
  begin  
      Result   :=   '';  
      FillChar(sa,sizeof(sa),0);  
      //设置允许继承,否则在NT和2000下无法取得输出结果  
      sa.nLength   :=   sizeof(sa);  
      sa.bInheritHandle   :=   True;  
      sa.lpSecurityDescriptor   :=   nil;  
      b   :=   CreatePipe(HRead,HWrite,@sa,0);  
      CheckResult(b);   
      FillChar(StartInfo,SizeOf(StartInfo),0);  
      StartInfo.cb   :=   SizeOf(StartInfo);  
      StartInfo.wShowWindow   :=   SW_HIDE;  
      //使用指定的句柄作为标准输入输出的文件句柄,使用指定的显示方式  
      StartInfo.dwFlags         :=   STARTF_USESTDHANDLES   or   STARTF_USESHOWWINDOW;  
      StartInfo.hStdError     :=   HWrite;  
      StartInfo.hStdInput     :=   GetStdHandle(STD_INPUT_HANDLE);//HRead;  
      StartInfo.hStdOutput     :=   HWrite;   
      b   :=   CreateProcess(nil,
                  PChar(CommandLine),
                  nil,
                  nil,
                  True,        
                  CREATE_NEW_CONSOLE,  
                  nil,                  
                  nil,  
                  StartInfo,  
                  ProceInfo         );  
   
      CheckResult(b);  
      WaitForSingleObject(ProceInfo.hProcess,INFINITE);  
      inS   :=   THandleStream.Create(HRead);  
      if   inS.Size>0   then  
      begin  
          sRet   :=   TStringList.Create;  
          sRet.LoadFromStream(inS);
          showmessage(sRet.Text); 
          Result   :=   sRet.Text;  
          sRet.Free;  
      end;  
      inS.Free;
   
      CloseHandle(HRead);  
      CloseHandle(HWrite); 

end;

end.

分享到:
评论

相关推荐

    在delphi中运行dos命令

    标题 "在Delphi中运行DOS命令" 涉及的是如何在Delphi编程环境中执行控制台(DOS)命令。Delphi是一个基于Object Pascal语言的集成开发环境(IDE),它提供了丰富的功能来与操作系统进行交互,其中之一就是执行外部...

    DELPHI在视窗里执行DOS命令并返回结果.rar

    DELPHI在Windows环境下执行DOS命令并获取返回结果是一个常见的需求,这通常涉及到系统交互和进程控制。在Delphi编程中,我们可以使用内置的`ShellExecute`函数或者通过创建进程对象来实现这一功能。本项目提供的代码...

    delphi执行dos程序并回显

    为了在不显示CMD窗口的情况下执行DOS命令,我们需要使用 `CreateProcess` API 函数,它允许我们创建进程并控制其标准输入、输出和错误流。 以下是一个简单的示例,展示了如何使用 `CreateProcess` 来执行 DOS 命令...

    可以在XE下使用的DosCommand,捕获控制台输出(XE-XE5)

    DosCommand 的主要功能是调用操作系统内置的 DOS 命令,比如 `dir`、`copy`、`ping` 等,并且能够捕获这些命令的控制台输出。这对于需要与操作系统交互或者自动化某些任务的应用程序来说非常有用。例如,开发者可以...

    Dos32 返回执行DOS命令的信息

    - Dos32.pas很可能是包含主要功能的源代码文件,"32"可能暗示它是为32位操作系统设计的,或者与DOS命令执行有关的32位API调用有关。在这个文件中,可能会有函数或过程用于启动DOS命令,捕获输出,以及与用户界面交互...

    dos.rar_DOS delphi_delphi_me4x7

    1. DOS编程基础:学习DOS命令、中断调用、内存管理等基础知识。 2. Delphi for DOS:了解如何在Delphi IDE中配置和编译DOS应用程序。 3. Object Pascal语法:复习或学习Delphi的基础语法,包括类、对象、方法和属性...

    StdIORedirectdelphi执行DOS命令行的控件

    标签“StdIORedirect delphi执行DOS命令行 的控件”再次强调了这个控件的主要功能,即在Delphi环境中执行DOS命令并进行I/O重定向。I/O重定向意味着可以将命令的标准输入、输出和错误流连接到其他地方,例如文件或...

    Delphi7实现管道方式操作控制台

    总的来说,通过使用Delphi7和Windows API,我们可以构建一个能够通过管道与控制台交互的程序,实现对DOS命令的执行和结果的获取,从而在图形界面中模拟命令行操作。这不仅扩展了Delphi应用程序的功能,还为用户提供...

    delphi cmd 管道

    这种技术允许开发者在Delphi程序中执行DOS命令,获取命令的输出结果,或者将数据传递给命令进行处理。在Delphi中,可以通过创建进程(process)对象来实现与CMD的交互。 描述提到的"在Delphi下像CMD里处理DOS命令...

    doscommand

    然而,需要注意的是,由于`DOSCommand`组件是通过系统API来调用DOS命令的,因此它的可用性和效果可能受到操作系统版本的影响。 总的来说,`DOSCommand`组件是Delphi开发中一个实用的工具,它简化了DOS命令的调用...

    DosCommand组件

    在 Delphi 的 Form 中添加 DosCommand 组件,设置其属性,例如命令字符串(Command)、工作目录(WorkingDir)等。然后编写事件处理程序,如 OnExecute 或 OnOutput,来响应命令执行和输出事件。通过组件的属性和...

    delphi7按回车自动跳行不需编程

    关于“dosmove”这个文件名,它可能是一个与DOS命令相关的工具,如“DOSMOVE”命令,它在MS-DOS系统中用于移动文件或目录。然而,由于它并不直接关联到标题和描述中的主题,我们主要关注的是Delphi IDE的编辑器设置...

    delphi关闭本地网络 网卡连接

    总结来说,通过Delphi调用Windows API或执行DOS命令,我们可以轻松地在应用程序中实现关闭本地网络连接的功能。根据项目需求和个人偏好,可以选择适合的方法来实现。记得在实际应用中,确保处理好错误情况,并考虑...

    执行dos实时回显控件

    这个控件专门设计用于在DelphiXE10.2.3版本中使用,其核心功能是能够执行DOS命令,并且在界面上实时显示命令的执行结果。 首先,我们需要理解什么是DOS命令。DOS是一个命令行接口,用户可以通过输入特定的指令来...

    [SketBook] DosCommand.rar_Delphi_

    【SketBook】DosCommand是针对Delphi编程环境的一个组件或工具集,...不过,由于直接调用DOS命令可能存在一定的局限性和风险,所以在使用时应当谨慎,并尽量利用Delphi的内置函数和类库来实现功能,除非有特别的需求。

    Delphi提取PDF文本实例

    在 Delphi 中,我们使用 RunDOS 函数来执行 DOS 命令,以便调用 pdfBox 库来解析 PDF 文本。RunDOS 函数使用 CreateProcess 函数来创建一个新的进程,以便执行 pdfBox 命令。 ```delphi function RunDOS(const ...

    持回车键及游标键,利于键盘输入,无须再编程...

    在Delphi编程中,开发者可能会编写程序来模拟或扩展DOS的文件操作,例如通过PInvoke调用系统API来实现文件移动,或者使用Delphi的TProcess组件来执行DOS命令。 综上所述,这个主题可能涵盖以下几个Delphi编程的知识...

    58mmPOS打印机调用驱动打印源码

    Delphi中,可以通过`WinApi.DOS`单元的`Int21h`函数来操作并口。 7. **源码解析** - `CreateFile`用于打开打印机设备,返回一个句柄。 - `DeviceIoControl`发送控制代码到设备,如设置打印参数。 - `WriteFile`...

    Delphi联机手册.txt

    - **启动命令行编译器:** 在 DOS 命令提示符下使用 `dcc32` 命令来启动编译器。 - **语法格式:** `dcc32 [options] filename [options]`,其中 `[options]` 可以是零个或多个参数,用于向编译器提供信息;`...

    DELPHI技巧集(集合各种开发源码)

    62 Loadfunc.htm Delphi3.0函数调用模式 3K 63 Look_pm.htm 用Delphi开发windows95屏幕保护预览程序 8K 64 M_dbgrid.htm Delphi如何实现在一个Dbgrid中显示多数据库 2K 65 Makevcl.htm DELPHI构件制作方法 11K...

Global site tag (gtag.js) - Google Analytics