Вверх ↑
Ответов: 4622
Рейтинг: 746
#1: 2014-06-19 15:40:52 ЛС | профиль | цитата

Add(MainForm,2953706,21,105)
{
}
Add(Button,3342741,98,168)
{
Left=290
Top=20
Width=100
Caption="Search"
link(onClick,12848742:doFind,[])
}
Add(InlineCode,1703974,336,168)
{
WorkPoints=#15:doGetWindowText|
EventPoints=#8:onResult|
DataPoints=#9:WinHandle|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|42:uses Windows, kol, Share, Debug, Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|26: WinHandle: THI_Event;|25: onResult: THI_Event;|60: procedure doGetWindowText(var _Data:TData; index:word);|0:|5: end;|0:|14:implementation|0:|38:procedure THiAsmClass.doGetWindowText;|3:var|13: H: THandle;|14: Buf: string;|7:begin |40: H := ReadInteger(_Data, WinHandle, 0);|57: SetLength(Buf, SendMessage(H, WM_GETTEXTLENGTH, 0, 0));|80: SetLength(Buf, SendMessage(H, WM_GETTEXT, Length(Buf)+1, LPARAM(PChar(Buf))));|41: _hi_CreateEvent(_Data, @onResult, Buf);|4:end;|0:|0:|0:|0:|4:end.|
link(onResult,9311008:doAdd,[])
}
Add(Edit,5270799,175,112)
{
Left=60
Top=20
Width=220
Text="Window Title"
}
Add(Label,10033591,21,168)
{
Left=10
Top=25
Width=43
Height=17
Caption="Caption:"
}
Add(FindWindow,12848742,161,168)
{
SkipParam=2
link(onFind,16572389:doEnumChildWindows,[])
link(Caption,5270799:Text,[])
}
Add(WinEnum,16572389,224,147)
{
Point(doEnumChildWindows)
Point(onEnumChildWindows)
Point(ParentHandle)
link(onEnumChildWindows,11437630:doSeparateMT,[])
}
Add(Memo,9311008,406,168)
{
Left=10
Top=50
Width=355
Height=210
ScrollBars=3
}
Add(MT_MultiData,11437630,280,161)
{
Count=3
link(onData2,1703974:doGetWindowText,[])
}

Это только для эксперимента. В конечной программе вместо WinEnum.doEnumChildWindows используй FindWindow.doFindChild с нужным классом окна.

Если взять результат с 3-ей точки MT_MultiData в обход IC, то текст Edit-ов будет выдавать пустой.

[offtop]А WinTools.CaptionText можно переделать на использование этого метода...[/offtop]

карма: 26

0