Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
dos 실행후 자동으로 닫고 다음 명령실행하기
도스프로그램을 델파이에서 실행후 도스프로그램이 종료후 도스창이 자동으로 닫치고
다음 프로그램을 실행하도자할때 어떤방법으로 프로그램을 해야 하나요.
아시는분이 있으시면 가르처주시면 정말 고맙겠습니다.
제가쓰는 방법을 적어보면
winexec - /c로 도스창이 자동으로 닫치지만 끝나는 시점을 모르고
createprocess - 끝나는 시점을 알지만 도스창이 자동으로 않닫치고 있습니다.
읽어주시고 답장을 주시면 많은 도움이 되겠습니다.
2
COMMENTS
김영대
•
2000.10.14 09:41
rsghhw wrote:
> 도스프로그램을 델파이에서 실행후 도스프로그램이 종료후 도스창이 자동으로 닫치고
> 다음 프로그램을 실행하도자할때 어떤방법으로 프로그램을 해야 하나요.
> 아시는분이 있으시면 가르처주시면 정말 고맙겠습니다.
> 제가쓰는 방법을 적어보면
> winexec - /c로 도스창이 자동으로 닫치지만 끝나는 시점을 모르고
> createprocess - 끝나는 시점을 알지만 도스창이 자동으로 않닫치고 있습니다.
> 읽어주시고 답장을 주시면 많은 도움이 되겠습니다.
>
dos 실행후 값을 return 하는 팁입니다.
참고 하세여...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{32bit 프로그램을 실행시키는 모듈입니다}
function WinExecAndWait32(Path: PChar; Visibility: Word): integer;
var
Msg: TMsg;
lpExitCode : integer;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
with StartupInfo do
begin
cb := SizeOf(TStartupInfo);
dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
wShowWindow := visibility;
end;
if CreateProcess(nil, path, nil, nil, False,
NORMAL_PRIORITY_CLASS OR CREATE_SEPARATE_WOW_VDM,
nil, nil, StartupInfo, ProcessInfo) then
begin
repeat
while PeekMessage(Msg, 0, 0, 0, pm_Remove) do
begin
if Msg.Message = wm_Quit then
Halt(Msg.WParam);
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
GetExitCodeProcess(ProcessInfo.hProcess,lpExitCode);
until (lpExitCode <> Still_Active);
with ProcessInfo do
begin
CloseHandle(hThread);
CloseHandle(hProcess);
end;
Result := 0; {sucess}
end
else
Result := GetLastError; {error occurs during CreateProcess}
end;
function ExecuteDOSCommand(cmdline, logfile:String; hidden: Boolean): integer;
const
flags: array [Boolean] of Integer = (SW_SHOWNORMAL, SW_HIDE);
// array[Boolean] -> array[0..1] 입니다
// 테스트:
// ShowMessage(IntToStr(Ord(False)));
// ShowMessage(IntToStr(Ord(True)));
var
cmdbuffer: array [0..MAX_PATH] of Char;
cmd: String;
begin
// Windows 95/98의 환경변수 COMSPEC는 command.com 입니다
GetEnvironmentVariable('COMSPEC', cmdBUffer, Sizeof(cmdBuffer));
// command.com의 /C 파라미터는 명령 실행 후 되돌아 가라는 옵션입니다
cmd := cmdbuffer + ' /C ' + cmdline + ' > ' + logfile;
// 실행이 종료될때까지 대기
Result := WinExecAndWait32(PChar(cmd), flags[hidden]); // SW_HIDE 로 실행
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if ExecuteDOSCommand('netstat -a', 'netstat.txt', True) = 0 then
Memo1.Lines.LoadFromFile('netstat.txt');
end;
end.
도움이 되셨으면 하네여..
0
0
삭제
수정
댓글
이성훈
•
2000.10.14 03:50
rsghhw wrote:
> 도스프로그램을 델파이에서 실행후 도스프로그램이 종료후 도스창이 자동으로 닫치고
> 다음 프로그램을 실행하도자할때 어떤방법으로 프로그램을 해야 하나요.
> 아시는분이 있으시면 가르처주시면 정말 고맙겠습니다.
> 제가쓰는 방법을 적어보면
> winexec - /c로 도스창이 자동으로 닫치지만 끝나는 시점을 모르고
> createprocess - 끝나는 시점을 알지만 도스창이 자동으로 않닫치고 있습니다.
> 읽어주시고 답장을 주시면 많은 도움이 되겠습니다.
>
제가 옛날에 한 경험이 있는데....
dos프로그램을 실행하여두 caption의 이름은 실행한 파일로 뜰겁니다.
기억이 잘 안는데 findwindow함수가 있을겁니다. 예전에 한 거라서...
함help를 찾아보세요..
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
delpo
•
2000.10.14 06:40
1
COMMENTS
/
0
LIKES
edit에 자동으로 증가하는 숫자를 넣으려고 합니다.
parkisu
•
2000.10.14 09:49
delpo wrote: > > 아래의 예문을 보아 주십시오. > -> 아래의 에디트 박스를 formcreate 이벤트에 넣...
이욱
2000.10.14 06:18
0
COMMENTS
/
0
LIKES
DLL 에서의 배열참조
날라리야
•
2000.10.14 05:54
2
COMMENTS
/
0
LIKES
DBGrid에서 콤보박스처럼 열리면서 입력하는거
김영대
•
2000.10.14 09:13
날라리야 wrote: > 제가 책에서 보니까 DBGrid에서 콤보박스같은게 열리면서 > 선택하면 값이 입력되는게...
날라리야
•
2000.10.14 17:31
picklist 말구 field editor에서 하는거 있자나요. 아니면 picklist에 다른 table의 특정필드어케 연결하...
Kheart
•
2000.10.14 05:50
1
COMMENTS
/
0
LIKES
동적배열에 관한 초보적인 질문좀....
김정
•
2000.10.14 06:54
안녕하세요? 고드름 김정입니다. var myArray : array of integer; yourArray : array of arra...
김찬식
•
2000.10.14 05:06
1
COMMENTS
/
0
LIKES
perform(WM_sysCommand, SC_Move or 2, 0); 설명좀..
김정
•
2000.10.14 06:04
안녕하세요? 고드름 김정입니다. Perform()은 SendMessage( self.handle, ... ) 라고 생각하시면 됩니...
hobakpa
•
2000.10.14 04:15
1
COMMENTS
/
0
LIKES
treeview 질문입니다. 귀엽게 봐주세요 ^^
김정
•
2000.10.14 05:52
안녕하세요? 고드름 김정입니다. TTreeNode는 Level 속성을 가지고 있습니다. 당연히 Top 은 레벨이 0 ...
진성열
•
2000.10.14 03:33
1
COMMENTS
/
0
LIKES
VC++에선 되는데요....???
김현
•
2000.10.14 04:03
음..델파이 슈퍼 페이지나 토리스 델파이 페이지에 가서..Netbios나 MAC address등으로 자료를 찾으시면 Ne...
알고싶은이
2000.10.14 03:01
0
COMMENTS
/
0
LIKES
picklist에 이미지를 넣을수 있나요?
초보 델파이
2000.10.14 03:00
0
COMMENTS
/
0
LIKES
CHILD FORM을 생성시에서 에러가..
알고싶은이
2000.10.14 02:27
0
COMMENTS
/
0
LIKES
<질문>미지리스트에 있는 이미지를 콤보박스에 넣고 db저장하기
바다
•
2000.10.14 02:19
1
COMMENTS
/
0
LIKES
리스트뷰같은 자료형
김현
•
2000.10.14 04:04
이미 알고 계시네요..TStringList가 가장 쉽게 사용할 수 있는 자료형일 듯 합니다..^^ TStringList.Obj...
서일식
•
2000.10.14 02:18
1
COMMENTS
/
0
LIKES
파라독스에서 암호방법
김영대
•
2000.10.14 09:36
서일식 wrote: > 현재 파라독스 테이블을 암호설정했어요.. > > 그래서 Select시에 암호를 물어보는 창...
델초보
•
2000.10.14 02:17
1
COMMENTS
/
0
LIKES
시리얼 통신...
이욱
•
2000.10.14 06:33
델초보 wrote: > > 어떻게 써야할지 갈피를 아예 못잡아서 그러는데여... > > 간단한 소스 볼수 있...
손정현
•
2000.10.14 02:13
2
COMMENTS
/
0
LIKES
움...좀 황당한 질문임다...^^
배준상
•
2000.10.14 02:28
이렇게 해 보세요... for i := 1 to 10 do with TLabel(FindComponent('label' + IntToStr(i))) do ...
손정현
•
2000.10.14 03:27
배준상 wrote: > 이렇게 해 보세요... > > for i := 1 to 10 do > with TLabel(FindComponent('labe...
이재호
•
2000.10.14 02:10
2
COMMENTS
/
0
LIKES
Sub Form에서 Close해서 Main Form이 종료되긴했는데 메모리에는...
장동민
•
2000.11.05 20:47
procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; ...
향기
•
2000.10.17 02:38
저는 빌더 사용자 인데../ form close 시에 Action := caFree; 를 해주어야 함. >
rsghhw
•
•
2000.10.14 02:02
2
COMMENTS
/
1
LIKES
dos 실행후 자동으로 닫고 다음 명령실행하기
도스프로그램을 델파이에서 실행후 도스프로그램이 종료후 도스창이 자동으로 닫치고 다음 프로그램을 실행하도자할때 어떤방법으로 프로그램을 해야 하나요. 아시는분이 있으시면 가르처주시면 정말 고맙겠습니다. 제가쓰는 방법을 적어...
김영대
•
2000.10.14 09:41
rsghhw wrote: > 도스프로그램을 델파이에서 실행후 도스프로그램이 종료후 도스창이 자동으로 닫치고 > ...
이성훈
•
2000.10.14 03:50
rsghhw wrote: > 도스프로그램을 델파이에서 실행후 도스프로그램이 종료후 도스창이 자동으로 닫치고 > ...
질문
2000.10.14 01:54
0
COMMENTS
/
0
LIKES
win2000 에서 mssql7.0 설치에러...
투덜이
•
2000.10.14 01:15
1
COMMENTS
/
0
LIKES
ADO사용시 트랜젝션은 어떻게 해주나요?
강인규
•
2000.10.14 01:38
참고가 되었으면 합니다. ^-^ 한델연( http://www.delphi.or.kr )에 가시면 최근에 ADO트랜젝션 처리에 ...
초보
2000.10.14 01:04
0
COMMENTS
/
0
LIKES
툴바의 도킹에 대해서 궁금한점
이영인
2000.10.14 00:30
0
COMMENTS
/
0
LIKES
시작한지 3일됐더여...알려주세여...
rsghhw
2000/10/14 02:02
Views
608
Likes
1
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 도스프로그램을 델파이에서 실행후 도스프로그램이 종료후 도스창이 자동으로 닫치고
> 다음 프로그램을 실행하도자할때 어떤방법으로 프로그램을 해야 하나요.
> 아시는분이 있으시면 가르처주시면 정말 고맙겠습니다.
> 제가쓰는 방법을 적어보면
> winexec - /c로 도스창이 자동으로 닫치지만 끝나는 시점을 모르고
> createprocess - 끝나는 시점을 알지만 도스창이 자동으로 않닫치고 있습니다.
> 읽어주시고 답장을 주시면 많은 도움이 되겠습니다.
>
dos 실행후 값을 return 하는 팁입니다.
참고 하세여...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{32bit 프로그램을 실행시키는 모듈입니다}
function WinExecAndWait32(Path: PChar; Visibility: Word): integer;
var
Msg: TMsg;
lpExitCode : integer;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
with StartupInfo do
begin
cb := SizeOf(TStartupInfo);
dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
wShowWindow := visibility;
end;
if CreateProcess(nil, path, nil, nil, False,
NORMAL_PRIORITY_CLASS OR CREATE_SEPARATE_WOW_VDM,
nil, nil, StartupInfo, ProcessInfo) then
begin
repeat
while PeekMessage(Msg, 0, 0, 0, pm_Remove) do
begin
if Msg.Message = wm_Quit then
Halt(Msg.WParam);
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
GetExitCodeProcess(ProcessInfo.hProcess,lpExitCode);
until (lpExitCode <> Still_Active);
with ProcessInfo do
begin
CloseHandle(hThread);
CloseHandle(hProcess);
end;
Result := 0; {sucess}
end
else
Result := GetLastError; {error occurs during CreateProcess}
end;
function ExecuteDOSCommand(cmdline, logfile:String; hidden: Boolean): integer;
const
flags: array [Boolean] of Integer = (SW_SHOWNORMAL, SW_HIDE);
// array[Boolean] -> array[0..1] 입니다
// 테스트:
// ShowMessage(IntToStr(Ord(False)));
// ShowMessage(IntToStr(Ord(True)));
var
cmdbuffer: array [0..MAX_PATH] of Char;
cmd: String;
begin
// Windows 95/98의 환경변수 COMSPEC는 command.com 입니다
GetEnvironmentVariable('COMSPEC', cmdBUffer, Sizeof(cmdBuffer));
// command.com의 /C 파라미터는 명령 실행 후 되돌아 가라는 옵션입니다
cmd := cmdbuffer + ' /C ' + cmdline + ' > ' + logfile;
// 실행이 종료될때까지 대기
Result := WinExecAndWait32(PChar(cmd), flags[hidden]); // SW_HIDE 로 실행
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if ExecuteDOSCommand('netstat -a', 'netstat.txt', True) = 0 then
Memo1.Lines.LoadFromFile('netstat.txt');
end;
end.
도움이 되셨으면 하네여..