Вверх ↑
Этот топик читают: Гость
Ответов: 1536
Рейтинг: 176
#16: 2012-01-08 20:06:00 ЛС | профиль | цитата
nesco, эх, был бы я в статусе пользователя, поставил бы ещё плюс, ну, жуть как понравилось!
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 14
Рейтинг: 0
#17: 2012-01-08 21:12:29 ЛС | профиль | цитата
Да нате вам IC, тестируйте, только отстаньте от меня

Спасиб большое плюс поставить не могу
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#18: 2012-01-08 21:57:19 ЛС | профиль | цитата
Добавил на SVN. Вот пример поиска дочерних окон блокнота, если он не запущен, то перечисляются все запущенные окна.

code_26486.txt

Получился альтернативный вариант поиска окон. Для метода doEnumChildWindows работают все методы и свойства метода doEnum
карма: 22

4
файлы: 1code_26486.txt [1010B] [426]
Голосовали:1nd1g0, foksov, MAV, filyaxxxcom
Ответов: 14
Рейтинг: 0
#19: 2012-01-08 23:30:08 ЛС | профиль | цитата
code_26488.txt
получилось
Add(MainForm,2953706,196,224)
{
Width=958
Height=614
link(onCreate,8408131:doEvent1,[(236,244)(236,251)])
}
Add(StringTable,15750559,455,294)
{
Left=215
Top=-5
Width=230
Height=590
Columns=#13:ClassName=120|10:Handle=120|
link(onClick,5264496:doSplit,[])
}
Add(MultiElement,7183932,392,294)
{
link(onEvent1,15750559:doAdd,[])
link(Data1,671069:String,[])
}
BEGIN_SDK
Add(EditMulti,12427908,21,21)
{
EventCount=1
WorkCount=1
DataCount=1
link(doWork1,8643810:doFind,[(56,27)(56,90)])
}
Add(InlineCode,11929596,168,77)
{
WorkPoints=#18:doEnumChildWindows|
EventPoints=#18:onEnumChildWindows|
DataPoints=#12:ParentHandle|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|32:uses Windows, Kol, Share, Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|33: LstChildWindows: PStrListEx;|19: busy: boolean;|9: public|18: ParentHandle,|35: onEnumChildWindows: THI_Event;|0:|24: constructor Create;|34: destructor Destroy; override;|63: procedure doEnumChildWindows(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|31:constructor THiAsmClass.Create;|5:begin|12: inherited;|34: LstChildWindows := NewStrListEx;|16: busy := false;|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|23: LstChildWindows.free;|12: inherited;|4:end;|0:|69:function MyCallback(wnd: HWND; pUserData: pointer): boolean; stdcall;|3:var|21: FClassName: string;|5:begin|34: SetLength(FClassName, MAX_PATH);|69: SetLength(FClassName, GetClassName(wnd, @FClassname[1], MAX_PATH));|68: THiAsmClass(pUserData).LstChildWindows.AddObject(FClassName, wnd);|17: Result := true;|4:end;|0:|41:procedure THiAsmClass.doEnumChildWindows;|3:var|18: wndHandle: HWND;|13: i: integer;|18: ds, dt: TData; |5:begin|48: wndHandle := ReadInteger(_Data, ParentHandle);|24: LstChildWindows.Clear;|58: EnumChildWindows(wndHandle, @MyCallback, LongInt(Self));|44: for i := 0 to LstChildWindows.Count - 1 do|7: begin|43: dtString(ds, LstChildWindows.Items[i]);|46: dtInteger(dt,LstChildWindows.Objects[i]); |21: ds.ldata := @dt; |41: _hi_OnEvent_(onEnumChildWindows, ds);|9: end; |4:end;|0:|4:end.|
link(onEnumChildWindows,14597411:doStr,[])
link(ParentHandle,8643810:Handle,[(174,65)(136,65)(136,121)(97,121)])
}
Add(MT_String,14597411,217,77)
{
link(onResult,12427908:onEvent1,[(285,83)(285,27)])
}
Add(WinEnum,8643810,91,77)
{
link(onFindWindow,11929596:doEnumChildWindows,[])
link(Caption,12427908:Data1,[(97,49)(27,49)])
}
END_SDK
Add(ListBox,671069,371,224)
{
Left=-5
Top=-5
Width=220
Height=590
Point(String)
link(onClick,11522737:doEvent1,[(415,237)(415,281)(318,281)(318,307)])
}
Add(WinEnum,11068424,315,224)
{
link(onFindWindow,671069:doAdd,[])
}
Add(Hub,11522737,336,301)
{
link(onEvent1,15750559:doClear,[])
link(onEvent2,7183932:doWork1,[(371,314)(371,300)])
}
Add(StrPart,5264496,518,294)
{
Char=";"
link(onSplit,11185903:doEvent1,[])
link(Str,15750559:Select,[(524,282)(496,282)(496,344)(468,344)])
}
Add(Label,9955952,644,231)
{
Left=475
Top=10
Width=4
Height=4
Font=[MS Sans Serif,12,1,0,1]
Visible=1
Caption=""
}
Add(RichEdit,6291957,763,350)
{
Left=445
Top=45
Width=505
Height=540
ScrollBars=3
}
Add(Hub,11185903,567,294)
{
link(onEvent1,9955952:doText,[(619,300)(619,237)])
link(onEvent2,8233292:doEvent1,[(602,307)(602,321)])
}
Add(MemoryStream,1164314,700,308)
{
Point(Memory)
Point(doSize)
}
Add(DataToFile,16305821,700,364)
{
Type=6
link(onGet,6291957:doText,[])
link(Stream,1164314:Stream,[])
}
Add(SendMessage,15421399,644,364)
{
Message=13
link(onSend,16305821:doGet,[(688,370)(688,377)])
link(Handle,9955952:Caption,[])
link(LParam,1164314:Memory,[(664,355)(720,355)])
}
Add(Hub,8233292,609,315)
{
OutCount=3
link(onEvent1,1164314:doClear,[])
link(onEvent2,1164314:doSize,[])
link(onEvent3,15421399:doSendMessage,[(633,335)(633,370)])
}
Add(Button,14636235,196,259)
{
Left=885
Top=5
Width=60
Caption="Обновить"
link(onClick,8408131:doEvent2,[(237,265)(237,258)])
}
Add(Hub,8408131,245,245)
{
InCount=2
OutCount=1
link(onEvent1,4254523:doEvent1,[])
}
Add(Hub,4254523,273,245)
{
link(onEvent1,671069:doClear,[(329,251)(329,237)])
link(onEvent2,11068424:doEnum,[(301,258)(301,230)])
}
Add(Label,2590281,756,301)
{
Left=445
Top=30
Width=501
Height=17
Caption="Текст элемента"
AutoSize=1
Alignment=2
}
даже можно вот так для получения текста элемента
карма: 1

0
файлы: 1code_26488.txt [2.8KB] [547]
19
Сообщение
...
Прикрепленные файлы
(файлы не залиты)