::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-27 01:02:36, Hit : 5507, Vote : 1331
 DOS 명령어 실행하고 결과 받아오기

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

procedure RunDosInMemo(DosApp:String;AMemo:TMemo);
const
  ReadBuffer = 2400;
var
  Security            : TSecurityAttributes;
  ReadPipe,WritePipe  : THandle;
  start               : TStartUpInfo;
  ProcessInfo         : TProcessInformation;
  Buffer              : Pchar;
  BytesRead           : DWord;
  Apprunning          : DWord;
begin
  With Security do begin
   nlength              := SizeOf(TSecurityAttributes);
   binherithandle       := true;
   lpsecuritydescriptor := nil;
  end;
  if Createpipe (ReadPipe, WritePipe,
                 @Security, 0) then begin
   Buffer  := AllocMem(ReadBuffer + 1);
   FillChar(Start,Sizeof(Start),#0);
   start.cb          := SizeOf(start);
   start.hStdOutput  := WritePipe;
   start.hStdInput   := ReadPipe;
   start.dwFlags     := STARTF_USESTDHANDLES +
                        STARTF_USESHOWWINDOW;
   start.wShowWindow := SW_HIDE;

   if CreateProcess(nil,
          PChar(DosApp),
          @Security,
          @Security,
          true,
          NORMAL_PRIORITY_CLASS,
          nil,
          nil,
          start,
          ProcessInfo)
   then
   begin
    repeat
     Apprunning := WaitForSingleObject
                  (ProcessInfo.hProcess,100);
     Application.ProcessMessages;
    until (Apprunning <> WAIT_TIMEOUT);
     Repeat
       BytesRead := 0;
       ReadFile(ReadPipe,Buffer[0],
                    ReadBuffer,BytesRead,nil);
       Buffer[BytesRead]:= #0;
       OemToAnsi(Buffer,Buffer);
       AMemo.Text := AMemo.text + String(Buffer);
     until (BytesRead < ReadBuffer);
  end;
  FreeMem(Buffer);
  CloseHandle(ProcessInfo.hProcess);
  CloseHandle(ProcessInfo.hThread);
  CloseHandle(ReadPipe);
  CloseHandle(WritePipe);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // 실행할 DOS 명령어
  Edit1.Text := 'netstat.exe -a';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RunDosInMemo(Edit1.Text, Memo1);
end;

end.





731   [COM/OLE] 떠있는 모든 Microsoft Internet Explorer 의 html 불러오기  김영대 2003/03/30 6071 1480
730   [윈도우즈 API] IE의 "즐겨찾기 구성" 화면 띄우기  김영대 2003/03/30 6078 1944
729   [윈도우즈 API] 데스크탑의 현재 커서위치의 타이틀명과 클래스명 구하기  김영대 2003/03/29 4724 1181
728   [윈도우즈 API] 떠있는 모든 Microsoft Internet Explorer 죽이기  김영대 2003/03/29 4974 1383
727   [시스템] 윈도우즈 전체의 마우스/키보드 입력 금지  김영대 2003/03/29 5582 1392
726   [네트웍/인터넷] 인터넷에 접속되어 있는지 검사하기  김영대 2003/03/29 5550 1336
725   [일반/컴포넌트] TMemo 스크롤 다운 시키기  김영대 2003/03/29 4951 1405
724   [윈도우즈 API] 전체 화면(Full Screen) 만들기  김영대 2003/03/29 5361 1363
723   [윈도우즈 API] "시작"->"프로그램" 메뉴에 폴더 추가하기  김영대 2003/03/29 5139 1298
722   [윈도우즈 API] 폼이 Minimized 되었을때 깜박이게 하기  김영대 2003/03/29 6503 1693
721   [일반/컴포넌트] ListBox에서 마우스 이동시 아이템을 힌트로 보여주기  김영대 2003/03/27 4363 1156
  [시스템] DOS 명령어 실행하고 결과 받아오기  김영대 2003/03/27 5507 1331
719   [윈도우즈 API] 액티브 데스크탑에 웹 컨텐트가 표시중인지 알기  김영대 2003/03/27 4541 1240
718   [윈도우즈 API] 작업표시줄의 시계 감추기/보이기  김영대 2003/03/27 7579 2035
717   [일반/컴포넌트] 커서(Cursor)의 이미지 구하기  김영대 2003/03/27 4796 1329
716   [윈도우즈 API] 스크린 세이버 On/Off  김영대 2003/03/27 4302 1075
715   [윈도우즈 API] 휴지통 비우기  김영대 2003/03/27 5550 1374
714   [일반/컴포넌트] IE Toolbar 에 버튼 올리기  김영대 2003/03/26 12646 1252
713   [일반/컴포넌트] 기본 Popup Memu 띄우지 않기  김영대 2003/03/26 3950 1039
712   [윈도우즈 API] "임시 인터넷 파일" 전부 지우기  김영대 2003/03/26 5521 1295
711   [일반/컴포넌트] 설치된 모든 프로그램 읽어오기  김영대 2003/03/26 5835 1513
710   [데이터베이스] DBGrid 의 현재 커서의 행/열 구하기  김영대 2003/03/26 5490 1311
709   [일반/컴포넌트] INF 파일 설치하기  김영대 2003/03/26 5430 1327
708   [데이터베이스] BDE Alias 없이 Database 동적으로 연결하기  신훈재 2003/03/24 12989 1183
707   [COM/OLE] Win2k, Win Xp - Active X - Dax error : Access violation해결(IE상에서)  신훈재 2003/03/20 14638 1274
706   [데이터베이스] ORA-12571: TNS:packet writer failure  김영대 2003/03/19 9891 1409
705   [데이터베이스] DBGrid 의 모든 Row 를 Select 시키기(SelectAll)  김영대 2003/03/18 4566 1073
704   [데이터베이스] index file의 갯수와 성능 문제  김영대 2003/03/17 5475 1408
703   [일반/컴포넌트] ListView에 확장자별 아이콘 넣기  신훈재 2003/03/15 7263 1221
702   [일반/컴포넌트] ScrollBox 에 배경그림 넣기  김영대 2003/03/14 4208 1123
701   [시스템] '응답없음' 프로세서를 감지하는 잼나는 방법  구창민 2003/03/14 10716 1379
700   [윈도우즈 API] 입력을 기다리는 풀스크린 콘솔 윈도우 만들어 보기  구창민 2003/03/14 6759 1187
699   [일반/컴포넌트] 특정 레지스트리 키 의 모든 목록을 한방에! 읽어오기  구창민 2003/03/14 5288 988
698   [일반/컴포넌트] 트레이 아이콘에 풍선 힌트 보여주기  구창민 2003/03/14 7303 1401
697   [윈도우즈 API] 외부 프로그램의 상태표시줄의 Text 가져오기  구창민 2003/03/14 6351 1440
696   [시스템] IP Address 윈도우 폼위에 만들어보기  구창민 2003/03/14 5900 1311
695   [시스템] 특정 DLL 의 함수목록을 구해보자.  구창민 2003/03/14 5996 1259
694   [시스템] 쓰레드 내에서 폼을 생성해보자  구창민 2003/03/14 6058 1241
693   [윈도우즈 API] 외부 프로그램 모달 창처럼 띄워서 종료될때 기다리기(시점 알기)  구창민 2003/03/14 5909 1284
692   [일반/컴포넌트] 컴포넌트에 오픈다이얼로그를 띄우는 속성 만드는 방법  구창민 2003/03/14 4182 1047

[1][2][3][4][5][6] 7 [8][9][10]..[25] [다음 10개]
 

Copyright 1999-2024 Zeroboard / skin by zero