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 값을 살살 바꿔가며 실험해보니 이게 또 달라진다.
환장할 노릇이다.
무슨 법칙같은 게 있는데 나만 모르고 있는걸까...
'Delphi' 카테고리의 다른 글
TList 형에서 Delete 를 이용해 item 삭제시 루프문 (0) | 2009.04.20 |
---|---|
폼에 드래그 앤 드롭 구현 (0) | 2009.04.18 |
폼에 마우스 이벤트 통과시키기 (0) | 2009.04.18 |
[Delphi] 윈도우 핸들로 실행파일 이름 알아내기 (0) | 2009.04.18 |
[Delphi] 웹브라우저에 HTML 코드 밀어넣기 (0) | 2009.04.18 |