Вверх ↑
Этот топик читают: Гость
Ответов: 1528
Рейтинг: 57
#1: 2011-07-12 20:45:57 ЛС | профиль | цитата
У меня как обычно вопросы не из простых.
помню был примерчик отрисовки калькулятора внутри своей формы, а возможно ли отрисовывать только один элемент из формы?
карма: 0

0
Ответов: 4641
Рейтинг: 334
#2: 2011-07-12 21:49:44 ЛС | профиль | цитата
hitman249 писал(а):
а возможно ли отрисовывать только один элемент из формы?

а попробовать никак? вроде компонент есть в палитре!
------------ Дoбавленo в 21.49:
SetParent
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1528
Рейтинг: 57
#3: 2011-07-13 06:12:50 ЛС | профиль | цитата
Ravilr писал(а):
вроде компонент есть в палитре!

видимо новый компонент
только там отрисовка всего калькулятора, а в ТЗ было что написано ?
hitman249 писал(а):
а возможно ли отрисовывать только один элемент из формы?

Например кнопку
карма: 0

0
Ответов: 4641
Рейтинг: 334
#4: 2011-07-13 07:33:48 ЛС | профиль | цитата
hitman249 писал(а):
а в ТЗ было что написано ?

с ТЗ в Куплю-Продай

hitman249 писал(а):
Например кнопку

и что? Проблема handle кнопки узнать и попробовать? Если средствами hiasm трудно, то есть куча других программ которые могут показать handle любого элемента.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1528
Рейтинг: 57
#5: 2011-07-13 10:37:10 ЛС | профиль | цитата
Ravilr писал(а):
есть куча других программ которые могут показать handle

можно пример? гуглопоиском ничего толкового не нашёл.
карма: 0

0
Ответов: 3889
Рейтинг: 362
#6: 2011-07-13 11:07:36 ЛС | профиль | цитата
Ravilr писал(а):
handle кнопки узнать и попробовать

hitman249 писал(а):
ничего толкового не нашёл.
hitman249, шутить изволите? Делается за пять минут.


Add(MainForm,2953706,182,196)
{
Width=180
Height=27
Point(Handle)
Point(onClose)
link(onCreate,13556715:doEvent1,[])
link(onClose,7606967:doStopHotKey,[(261,223)(261,265)])
}
Add(MouseEvent,13429574,105,140)
{
Point(Handle)
}
Add(WinTools,4133247,336,203)
{
link(Handle,8641959:Var2,[])
}
Add(Timer,19873,56,196)
{
Interval=500
link(onTimer,16579421:doData,[])
}
Add(DoData,16579421,119,196)
{
link(onEventData,2953706:doCaption,[])
link(Data,2988987:Var2,[])
}
Add(GHotKey,7606967,336,252)
{
Win=1
Key=88
Point(doWin)
Point(onError)
link(onEventHotKey,560410:doEvent1,[])
link(onError,797889:doGetString,[(408,279)(408,377)])
AddHint(-37,66,27,13,Key)
}
Add(Hub,13556715,280,210)
{
link(onEvent1,4133247:doPopup,[])
link(onEvent2,7606967:doStartHotKey,[(315,223)(315,258)])
}
Add(hcVisualText,12514330,301,357)
{
Lines=#2:67|
ShowPoints=0
}
Add(hcKeyHandler,15371141,245,357)
{
link(onKeyDown,12514330:doText,[])
}
Add(Hub,560410,420,252)
{
OutCount=3
link(onEvent1,9783382:doSetParent,[])
link(onEvent2,1783027:doLeft,[])
link(onEvent3,1783027:doTop,[])
}
Add(PosWindow,1783027,462,259)
{
link(Handle,5775991:Var2,[])
}
Add(GetDataEx,5775991,462,235)
{
Angle=3
link(Data,2988987:Var3,[(412,240)(412,180)])
}
Add(SetParent,9783382,511,252)
{
link(Handle,5775991:Var3,[(517,240)])
link(NewParent,8641959:Var3,[(524,191)])
}
Add(GetDataEx,2988987,119,175)
{
link(Data,13429574:Handle,[])
}
Add(GetDataEx,8641959,336,186)
{
Angle=3
link(Data,2953706:Handle,[(237,191)(237,278)(188,278)])
}
Add(StrList,797889,448,329)
{
Strings=#0:|49:Ошибка создания класса обработчика горячих клавиш|47:Ошибка создания окна обработчика горячих клавиш|66:Ошибка назначения горячей клавиши, или такая клавиша уже назначена|
Point(doGetString)
Point(onGetString)
link(onGetString,6950670:doMessage,[])
}
Add(Message,6950670,497,336)
{
}
Add(InfoTip,10094652,154,350)
{
Info=#39:Служебный модуль выяснения кодов клавиш|
VAlign=2
Width=246
Height=74
}

карма: 1

1
Голосовали:geniy3dmax
Разработчик
Ответов: 26163
Рейтинг: 2127
#7: 2011-07-13 12:33:12 ЛС | профиль | цитата
Пример перехвата и возврата окна ввода текста у блокнота

code_24612.txt
------------ Дoбавленo в 12.33:
То же, но с перехватом фокуса ввода



Add(MainForm,15784378,525,231)
{
Width=629
Height=435
Point(Handle)
Point(onKeyDown)
link(onCreate,12326210:doExec,[])
}
Add(FindWindow,16057048,399,343)
{
ClassName="Notepad"
SkipParam=1
link(onFind,14293607:doFindChild,[])
}
Add(FindWindow,14293607,462,336)
{
ClassName="Edit"
SkipParam=1
link(onFind,15884891:doSetParent,[])
}
Add(SetParent,15884891,518,336)
{
link(onSetParent,7127060:doSendMessage,[])
link(NewParent,15784378:Handle,[])
}
Add(WinExec,12326210,595,245)
{
Param="notepad.exe"
Mode=0
}
Add(Button,14716537,455,455)
{
Left=10
Top=340
Width=105
TabOrder=-1
Caption="Return Window"
link(onClick,10752929:doSetParent,[])
}
Add(SetParent,10752929,511,455)
{
link(onSetParent,15790927:doWork2,[])
link(Handle,14293607:Handle,[(517,411)(468,411)])
link(NewParent,12273507:Var2,[])
}
Add(GetDataEx,12273507,518,406)
{
link(Data,15884891:OldParent,[])
}
Add(WinTools,16016355,630,448)
{
link(Handle,12273507:Var3,[(636,411)])
}
Add(Button,10490309,308,343)
{
Left=10
Top=315
Width=105
TabOrder=-1
Caption="Capture Window"
Data=Integer(0)
link(onClick,7722551:doEvent1,[])
}
Add(ChanelToIndex,15790927,567,448)
{
link(onIndex,16016355:doVisible,[])
}
Add(Hub,7722551,350,343)
{
link(onEvent1,16057048:doFind,[])
link(onEvent2,15790927:doWork1,[(378,356)(378,454)])
}
Add(SendMessage,7127060,574,336)
{
Point(Message)
link(Handle,16057048:Handle,[(580,324)(458,324)(458,387)(405,387)])
link(Message,8699277:Value,[])
}
Add(Memory,8699277,595,287)
{
Default=Integer(7)
}

карма: 22

1
файлы: 1code_24612.txt [1.3KB] [197]
Голосовали:hitman249
Ответов: 1528
Рейтинг: 57
#8: 2011-07-13 19:09:57 ЛС | профиль | цитата
code_24620.txt
попробовал отловить SysListView32 из файлового менеджера 7z, работает странно, со второго нажатия по Capture Window
(для проверки схемы предварительно запустить 7zFM.exe, запустить схему с админ. правами)
карма: 0

0
файлы: 1code_24620.txt [1.8KB] [145]
Ответов: 3889
Рейтинг: 362
#9: 2011-07-13 19:32:48 ЛС | профиль | цитата
hitman249, Вы кое-что у себя не заметили, уважаемый:

ClassName = SysListView32
SkipParam = ClassName
карма: 1

0
Ответов: 1528
Рейтинг: 57
#10: 2011-07-13 19:36:59 ЛС | профиль | цитата
1nd1g0, по другому не работает
карма: 0

0
Ответов: 3889
Рейтинг: 362
#11: 2011-07-13 19:56:11 ЛС | профиль | цитата
hitman249 писал(а):
по другому не работает
hitman249, да нет, работает всё:

Add(MainForm,15784378,581,133)
{
Width=629
Height=435
Point(Handle)
Point(onClose)
}
Add(SetParent,15884891,574,210)
{
link(Handle,1547081:Var3,[(580,198)(540,198)(540,250)])
link(NewParent,15784378:Handle,[])
}
Add(WinTools,16016355,315,259)
{
link(Handle,72934:Var2,[])
}
Add(Button,10490309,161,210)
{
Left=10
Top=315
Width=105
Align=4
TabOrder=-1
Caption="Capture Window"
Data=Integer(0)
link(onClick,7722551:doEvent1,[])
}
Add(Hub,7722551,210,210)
{
OutCount=3
link(onEvent1,16057048:doFind,[])
link(onEvent2,16016355:doVisible,[(270,223)(270,265)])
link(onEvent3,14896918:doMaximize,[(235,230)(235,307)])
}
Add(FindWindow,15003297,413,210)
{
ClassName="7-Zip::Panel"
SkipParam=1
link(onFind,3789039:doFindChild,[(475,216)(475,223)])
link(ParentHandle,72934:Var3,[(419,198)(371,198)(371,250)])
}
Add(FindWindow,3789039,490,210)
{
ClassName="SysListView32"
SkipParam=1
link(onFind,15884891:doSetParent,[])
link(ParentHandle,15003297:Handle,[(496,198)(458,198)(458,254)(419,254)])
}
Add(FindWindow,16057048,315,210)
{
ClassName="FM"
SkipParam=1
link(onFind,15003297:doFindChild,[(380,216)(380,223)])
}
Add(GetDataEx,1547081,490,245)
{
link(Data,3789039:Handle,[])
}
Add(WinTools,14896918,490,273)
{
Point(doMaximize)
link(Handle,1547081:Var2,[])
}
Add(GetDataEx,72934,315,245)
{
link(Data,16057048:Handle,[])
}


При захвате чужих элементов, правда, могут вылезти проблемы с очередями сообщенийразными контекстами потоков. В лучшем случае - проблемы отрисовки будут и часть событий не будет отлавливать, в худшем - вылетать с разными критическими ошибками при совпадении каких-то неблагоприятных условий (то есть не сразу).
карма: 1

0
Ответов: 1528
Рейтинг: 57
#12: 2011-07-13 22:08:35 ЛС | профиль | цитата
1nd1g0, лишние связи
code_24630.txt

а как ты параметр
7-Zip::Panel
нашёл, можно по подробней?
карма: 0

0
файлы: 1code_24630.txt [1KB] [152]
Ответов: 3889
Рейтинг: 362
#13: 2011-07-13 22:56:27 ЛС | профиль | цитата
hitman249 писал(а):
лишние связи

Не ёрничайте. Связи специально проставил для наглядности (сейчас уровень знаний собеседника по кол-ву постов уже трудно определить), изначально их не было, естественно.

hitman249 писал(а):
по подробней


Посмотрел, в какой элемент вложен список, выяснил его класс и вписал в программу. Как-то так
карма: 1

1
Голосовали:hitman249
Ответов: 1528
Рейтинг: 57
#14: 2011-07-13 23:16:49 ЛС | профиль | цитата
1nd1g0, чем посмотрел?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#15: 2011-07-14 01:59:36 ЛС | профиль | цитата
hitman249, так собственно, у нас всё есть для этого:

code_24633.txt

карма: 1

1
файлы: 1code_24633.txt [625B] [106]
Голосовали:hitman249
Сообщение
...
Прикрепленные файлы
(файлы не залиты)