Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
dos명령을 델파이에서 실행시킬려고 하는데...netstat -n>a.txt
dos명령을 델파이에서 실행시킬려고 하는데..잘 않되네요..
netstat -n까지는 실행이 되는데..winexec를 써서 했거든요....
netstat -n>a.txt는 실행이 않되요..
dos에서는 위 명령어가 실행이 되거든요...
델파이에서는...다르게 추가해야할 뭔가가 있는건가요??
2
COMMENTS
김영대
•
1999.10.12 23:56
장영선 wrote:
> dos명령을 델파이에서 실행시킬려고 하는데..잘 않되네요..
> netstat -n까지는 실행이 되는데..winexec를 써서 했거든요....
> netstat -n>a.txt는 실행이 않되요..
> dos에서는 위 명령어가 실행이 되거든요...
> 델파이에서는...다르게 추가해야할 뭔가가 있는건가요??
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
삭제
수정
댓글
김의만
•
1999.12.02 19:54
> function WinExecAndWait32(Path: PChar; Visibility: Word): integer;
> var
> Msg: TMsg;
> lpExitCode : integer;
> StartupInfo: TStartupInfo;
> ProcessInfo: TProcessInformation;
저도 비슷한 처리가 필요해서 도움을 받았습니다. 감사합니다.
그런데 위의 변수선언중 lpExitCode를 Integer가 아니라 LongWord로 해야 되더군요..
참고로 하십시요..
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
임태영
1999.10.13 00:25
0
COMMENTS
/
0
LIKES
Win32 API 책 추천 바랍니다.
정은재
•
1999.10.12 10:30
2
COMMENTS
/
0
LIKES
randomize 함수
안치봉
•
1999.10.12 10:56
안녕하세요. 좀 무식한 방법으로 한다면 아래 같이 생각해 볼수 있습니다. 1. 우선 1개의 랜덤숫자를...
고규인
•
1999.10.13 02:16
안치봉 wrote: > 안녕하세요. > > 좀 무식한 방법으로 한다면 아래 같이 생각해 볼수 있습니다. > >...
moon
•
1999.10.12 07:53
1
COMMENTS
/
0
LIKES
화살표를 그려야 하는데......
김영대
•
1999.10.13 01:26
moon wrote: > 저는 유체를 전공하는 대학원생입니다. > 벡터를 표시해야 하는데 잘되지 않군요. > 4사...
미친병아리
•
1999.10.12 02:35
2
COMMENTS
/
0
LIKES
계속 Access Violation이 나며 델파이가 죽습니다..
임성룡
•
1999.10.12 07:29
미친병아리 wrote: > > 예전에 잘 사용하던 델파이4에서 > 이상한 현상이 발생합니다.. > > MS사이...
김 성중
•
1999.12.13 21:55
답변은 아니고요 저도 같은 문제 입니다. 방법을 못찾았는데 저는 windows 2000을 사용하거든요 잘되다가...
이재현
1999.10.12 02:12
0
COMMENTS
/
0
LIKES
분류먼저 해주시길 부탁드립니다.
하남수
1999.10.12 01:50
0
COMMENTS
/
0
LIKES
(시리얼 통신)BAUD RATE변경에 대하여 질문
이대우
1999.10.12 01:35
0
COMMENTS
/
0
LIKES
마우스를 클릭할 때????
정수환
1999.10.12 01:04
0
COMMENTS
/
0
LIKES
델파이에서 사용중인 데이터를 아래한글 파일로 만들수 있나요???
장영선
•
1999.10.12 23:53
2
COMMENTS
/
0
LIKES
dos명령을 델파이에서 실행시킬려고 하는데...netstat -n>a.txt
dos명령을 델파이에서 실행시킬려고 하는데..잘 않되네요.. netstat -n까지는 실행이 되는데..winexec를 써서 했거든요.... netstat -n>a.txt는 실행이 않되요.. dos에서는 위 명령어가 실행이 되거든요... 델파이에서는...다르게 추가해...
김영대
•
1999.10.12 23:56
장영선 wrote: > dos명령을 델파이에서 실행시킬려고 하는데..잘 않되네요.. > netstat -n까지는 실행이 ...
김의만
•
1999.12.02 19:54
> function WinExecAndWait32(Path: PChar; Visibility: Word): integer; > var > Msg: TMsg; > lpE...
고한석
•
1999.10.12 00:29
2
COMMENTS
/
0
LIKES
버튼을 동적으로 생성시....
안치봉
•
1999.10.12 11:04
아래는 제가 해본건데 잘됩니다... 소스를 다시한번 찬찬히 보십시오. 의외로 버그는 간단한 것일수도 있...
이대우
•
1999.10.13 02:13
그런데요 ... 그것이 버튼이나 에디트 박스는 되는데... PANEL과 SHAPE는 그게 안되더라고요.. 왜 그...
수기
•
1999.10.12 00:04
1
COMMENTS
/
0
LIKES
[질문 급급] QuickReport 에서 SubDetail쓰는 방법
이재식
•
1999.10.12 05:40
안녕하십니까? 제가 도와드리죠. 제가 질문과 같은 구조의 테이블를 만들어서 샘플로 간단히 프로그램...
김태균
1999.10.12 00:00
0
COMMENTS
/
0
LIKES
Tprinter사용에 대해서..
손진운
•
1999.10.11 23:14
1
COMMENTS
/
0
LIKES
DBGrid에 있는 내용을 엑셀로 자료변환에 대하여...
김영대
•
1999.10.12 00:17
손진운 wrote: > DBGrid에 있는 데이타 자료들을 엑셀 자료로 변환할려고 합니다. > 어떻게 하면 될 수 ...
유니
•
1999.10.11 23:04
1
COMMENTS
/
0
LIKES
TEditMask의 Font Color
한
•
1999.10.12 01:57
음냐... 질문에 대한 답변이 될련지 모르겠네요... 그 방법은 모르겠고, ReadOnly 프로퍼티를 True로...
여용구
•
1999.10.11 22:40
1
COMMENTS
/
0
LIKES
BLOB필드에 직접 이미지 파일을 넣는 방법??
김영대
•
1999.10.11 22:44
여용구 wrote: > BLOB 필드에 직접 이미지 파일을 넣을 때에 어떻게 해야할지 궁금합니다. > DBImage 컴...
송수현
•
1999.10.11 22:37
1
COMMENTS
/
0
LIKES
CMMOUSEENTER를 어떻게 사용하나요?
김영대
•
1999.10.11 22:41
송수현 wrote: > 안녕하세요 엄청 초보입니다. 꾸벅~! > 밑에 보니깐 저랑 비슷한 경우의 질답이 있더군...
fsw523
1999.10.11 22:20
0
COMMENTS
/
0
LIKES
아래 dll 과 db에 대하여...
이두진
1999.10.11 20:24
0
COMMENTS
/
0
LIKES
DLL호출과 DB쿼리에서 문제가 발생했어요.
김선미
•
1999.10.11 20:11
1
COMMENTS
/
0
LIKES
연속된 이미지를 담은 하나의 비트맵의 애니매이션효과
김영대
•
1999.10.11 21:02
김선미 wrote: > 연속된 이미지가 들어 있는 비트맵 파일이 하나 있습니다. > 이것을 읽어 애니매이션처...
최선미
1999.10.11 19:53
0
COMMENTS
/
0
LIKES
분류먼저 해주시길 부탁드립니다.
장영선
1999/10/12 23:53
Views
682
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> dos명령을 델파이에서 실행시킬려고 하는데..잘 않되네요..
> netstat -n까지는 실행이 되는데..winexec를 써서 했거든요....
> netstat -n>a.txt는 실행이 않되요..
> dos에서는 위 명령어가 실행이 되거든요...
> 델파이에서는...다르게 추가해야할 뭔가가 있는건가요??
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.