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 값을 살살 바꿔가며 실험해보니 이게 또 달라진다.

환장할 노릇이다.

무슨 법칙같은 게 있는데 나만 모르고 있는걸까...











Posted by bloodguy
,