PuTTY 콘솔창의 데이터를 읽어들여 마지막 라인을 가져오는 방법에 대하여.
PuTTY는 기본설정으로 화면상에 드래그를 하면 그 영역이 클립보드로 복사된다.
이 방법을 이용하여 PuTTY 터미널의 크기만큼 드래그해서 적당히 가공하는 방식으로 마지막 라인을 가져올 수 있다.
잘만하면 expect 같은 프로그램처럼 쓸 수도 있을 듯.
붙여넣기는 마우스 오른쪽버튼 클릭이다.
// PuTTY창을 전부 드래그한 다음 마지막 라인만 추려내 반환
// _____________________________________________________________________________
function GetPuttyLastLine(hPutty: HWND): String;
var
PuttyRect: TRect;
sList: TStringList;
begin
Result:='';
// PuTTY창 크기 구함
Windows.GetClientRect(hPutty, PuttyRect);
// 드래그
SendMessage(hPutty, WM_LBUTTONDOWN, 0, MakeLparam(PuttyRect.Right, PuttyRect.Bottom));
SendMessage(hPutty, WM_MOUSEMOVE, MK_LBUTTON, MakeLParam(0, 0));
SendMessage(hPutty, WM_LBUTTONUP, 0, MakeLParam(0, 0));
SendMessage(hPutty, WM_LBUTTONUP, 0, MakeLParam(0, 0));
SendMessage(hPutty, WM_LBUTTONUP, 0, MakeLParam(0, 0));
CloseHandle(hPutty);
// 마지막 라인만 추려내 반환
sList:=TStringList.Create;
try
if ClipBoard.HasFormat(CF_TEXT) then begin
sList.Text:=Trim(ClipBoard.AsText);
Result:=Trim(sList[sList.Count-1]);
end;
finally
FreeAndNil(sList);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// PuTTY 핸들은 상황에 맞게 구해서 넣자...
Memo1.Text:=GetPuttyLastLine(FindWindow('PuTTY', nil));
end;
// _____________________________________________________________________________
function GetPuttyLastLine(hPutty: HWND): String;
var
PuttyRect: TRect;
sList: TStringList;
begin
Result:='';
// PuTTY창 크기 구함
Windows.GetClientRect(hPutty, PuttyRect);
// 드래그
SendMessage(hPutty, WM_LBUTTONDOWN, 0, MakeLparam(PuttyRect.Right, PuttyRect.Bottom));
SendMessage(hPutty, WM_MOUSEMOVE, MK_LBUTTON, MakeLParam(0, 0));
SendMessage(hPutty, WM_LBUTTONUP, 0, MakeLParam(0, 0));
SendMessage(hPutty, WM_LBUTTONUP, 0, MakeLParam(0, 0));
SendMessage(hPutty, WM_LBUTTONUP, 0, MakeLParam(0, 0));
CloseHandle(hPutty);
// 마지막 라인만 추려내 반환
sList:=TStringList.Create;
try
if ClipBoard.HasFormat(CF_TEXT) then begin
sList.Text:=Trim(ClipBoard.AsText);
Result:=Trim(sList[sList.Count-1]);
end;
finally
FreeAndNil(sList);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// PuTTY 핸들은 상황에 맞게 구해서 넣자...
Memo1.Text:=GetPuttyLastLine(FindWindow('PuTTY', nil));
end;
'Delphi' 카테고리의 다른 글
[Delphi] 특정 프로세스 키보드 후킹 (2) | 2010.04.22 |
---|---|
랜덤 문자열 생성 (0) | 2009.10.10 |
[Delphi] Dos 명령어 실행 후 결과를 받아오는 함수 - DLL (0) | 2009.09.05 |
[Delphi] DLL 만들기 (0) | 2009.09.05 |
[Delphi] IdHTTP + 아파치 인증 (0) | 2009.08.31 |