2011년 3월 15일 화요일

다른 프로그램의 텍스트 가져오기

WM_GETTEXT 사용하기.
GetWindowText 요런건 다른 프로세스의 것은 잘 안된다.
그래서 만든 함수.


function GetWindowText(aHWND: HWND): String;
var
len: Integer;
begin
len:=SendMessage(aHWND, WM_GETTEXTLENGTH, 0, 0);
SetLength(Result, len+1);
SendMessage(aHWND, WM_GETTEXT, len+1, lParam(PChar(Result)));
end;



예제) 아래처럼 하면 커서 밑에 있는 윈도우의 텍스트를 가져온다.
Form1.Memo1.Lines.Add(GetWindowText(WindowFromPoint(Mouse.CursorPos)));




!!!
그러나 에디트플러스의 에디터 창에 있는 걸 가져오면,
왠만하면 가져와지는데 일정 길이가 넘어가면 이상하게 잘린다.
중간에 #0 을 만나버리는 걸 확인했다.
WM_GETTEXT 를 사용하는 SendMessage 에서 wParam 값을 살살 바꿔가며 실험해보니 이게 또 달라진다.

댓글 없음:

댓글 쓰기