vbstreets конференция - Виж темата - как да се намери дръжката kontrola

Всъщност има контрол календар. Ето един


Всъщност календара Бях много щастлив, но това е най-досадни недостатъци, които бих искал да се премахнат, както и за това, че е банална zasubklassit. Но това не беше там. Проблемът е, че тя изисква дръжка, и този, който е направил контрола (ряпа) Първи дръжката не са предвидени. Аз веднага помислих, че е възможно да се намери на прозореца, който искате и да го получите чрез дръжка FindWindowEx, но тук засадата. Търсене е възможно само в класа, защото там не е нищо друго, или неизвестен. Класът на прозореца ThunderRT6UserControlDC, и засадата, в която се контролира не е единственият, а прозорците с този клас, съответно, също. Е, в такъв случай, можете да намерите на дръжката на прозореца на контрола например? Не мога да излезе с и, съответно, с молба за помощ.

PS: Снимката е не само един календар, и кажи симбиоза си с текстово поле, в допълнение към ТР е бутон, за, какво, ще се появят същите тези календари.

Стремете се, да търси, да се намери и perepryatat

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.

ger_kar написал (а): и засадата, в която се контролира не е единственият,


Не смятате ли, че ако с това се контролира, че нещо не е наред, е необходимо да се променят всички случаи на същата в приложението, а не за един?

Ура! Новата версия на Unreal Commander'a!

Qwertiy пише (а): Не мислиш ли, че ако с това се контролира, че нещо не е наред, е необходимо да се променят всички случаи на същата в приложението, а не за един?

Е, това със сигурност би било добре, но как да се приложи? Но аз знам как да се промени поведението на даден прозорец, като се използват subklassing, след това добавете реакцията на прозореца на датите на съобщенията ми прозорец.

Хакер е написал (а): Според координатите.

И това е възможно малко по-подробно?

Стремете се, да търси, да се намери и perepryatat

ger_kar написал (а): Може ли малко по-подробно?


Имам координатите на контролера.
В прозореца, също.
Необходимо е да се сравни.

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.

Т.е. има един прозорец, за да го сравни координира с координатите на контрол, ако едно и също, а след това е, ако не съвпадат, не е по-нататъшно търсене?
Може би по-добре в дебъгер да се намери място, където дръжката контрол за съхраняване, изчисли отклонението и да вземе от там? Това със сигурност ще бъде една малка Blackjack-кодиране, но всичко ще бъде бързо и без излишни движения?

Стремете се, да търси, да се намери и perepryatat

ger_kar написал (а): Т.е. има един прозорец, за да го сравни координира с координатите на контрол, ако едно и също, а след това е, ако не съвпадат, не е по-нататъшно търсене?


Грубо казано - толкова.
Но в ума - различен алгоритъм.

ger_kar написал (а): Може да бъде по-добре в дебъгер да се намери място, където дръжката контрол за съхраняване, изчисли отклонението и да вземе от там? Това със сигурност ще бъде една малка Blackjack-кодиране, но всичко ще бъде бързо и без излишни движения?


Big черен кодиране. Тя може да варира от една версия на друго изпълнение (не може да се променя). Предвид факта, че МС може да пусне ново строителство по време на работа, да разчита на това, че съм се страхуваше.

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.

Хакер е написал (а): Но в ума - различен алгоритъм.

Разбира се, ние бихме искали ума. А какво по-умен алгоритъм за мен, освен, че съм написал нищо друго в главата ми не излиза?

Стремете се, да търси, да се намери и perepryatat

ger_kar написал (а): Разбира се, бих искал ума. А какво по-умен алгоритъм за мен, освен, че съм написал нищо друго в главата ми не излиза?


Вие не искате да се мисли.
Прочетете ода за мързел и актуализира списък на правилния метод. Актуализиране на списъка няма нищо общо с, но алгоритмичен проблем - едни и същи.

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.

Хакер е написал (а): прочетете ода за мързел и актуализира списък на правилния метод. Актуализиране на списъка няма нищо общо с, но алгоритмичен проблем - едни и същи.


Не разбирам. Window един, намери за необходимо да веднъж. По-ефективни от проверка прозорец резултати, докато, докато не получи правото няма да работи.

Ура! Новата версия на Unreal Commander'a!

Qwertiy написал (а): И аз не разбирам. Window един, намери за необходимо да веднъж.

Защо един? Ако имаше, и не е имало проблеми. Windows може да бъде до известна степен от размера на контрол, но най-вече 2 прозорците.

Стремете се, да търси, да се намери и perepryatat

Querty, как предлагате да се направи това? Може би аз не разбирам нещо в API на Windows. Покажи най-малко псевдо-код.

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.

ger_kar написал (а): Защо един?

ger_kar написал (а): Но аз знам как да се промени поведението на даден прозорец

и ако не, тогава да вземе цялата си като цяло.

Хакер е написал (а): Querty, как предлагате да се направи това? Може би аз не разбирам нещо в API на Windows. Покажи най-малко псевдо-код.


Е, аз не съм толкова добър в WinAPI, да се каже точно какво и как да го използвате.
Ако само една контрола, изглежда по този начин. От името на прозореца клас находка. Във вътрешността на обратно повикване функцията провери координатите на прозореца, ако мачът, освен дръжката, за да се спре и търсене.
Кой си помислих, че може да се опита да получи видимо прозорец на една точка вътре в нея, но трябва да го покаже на екрана по време на търсенето, така че аз не обичам тази опция. В допълнение, това е възможно да се погрижат за вложените контрол, ако по някаква причина ще се премести.

PS: Аз не правя "Querty".

Ура! Новата версия на Unreal Commander'a!

Ами Qwertiy, всички объркан трябва да намерим една кутия сред определен набор. Т.е. Той е дал много на прозорци, а не един, така че аз написах

ger_kar написал (а): Защо един?

Стремете се, да търси, да се намери и perepryatat

Qwertiy написал (а): Ако само една контрола, изглежда по този начин.


Ако някой, тогава да. Но в този случай ситуацията не е същата.

Говорих по принцип за алгоритмична Проблемът тук е от този вид: има две групи с еднакъв размер, между които действа една биективен връзка. Това означава, че можем да се провери дали по някакъв начин двата елемента на двата набора - свързани помежду си.

И сега ние трябва да се установи връзка.

Най-лошият начин да го направите: да заобиколят първото множество от елементи и всеки елемент от първото множество, за да търси всички елементи на втория сет, докато не се намери съответния елемент.

Най-добрият начин, това е това, което нарекох "метода на две курсори" в темата на списъка се актуализира. Първо трябва да се изгради елементите на някои ключ и след това да инсталирате два курсора в началото на двата списъка и преместите курсора върху набора (както е описано в темата на) правилото.

В продължение на три контроли може да е маловажно, но като цяло.

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.

Хакер е написал (а): Най-лошият начин да го направите: да заобиколят първото множество от елементи и всеки елемент от първото множество, за да търси всички елементи на втория сет, докато не се намери съответния елемент.


Е, това е да. Но тук един управляем държави. Или всичко, без филтриране.

Хакер е написал (а): Най-добрият начин, това е това, което нарекох "метода на две курсори" в темата на списъка се актуализира.


Какво ще кажете за методите на използване на хеша?

Хакер е написал (а): Ако някой, тогава да. Но в този случай ситуацията не е същата.


Аз съм доста объркан, каква е ситуацията в този случай

Ура! Новата версия на Unreal Commander'a!

Това, което отличава ПРАВО контрол от друга? Координати? Текст? Още някои fichey?
Имам проверяват чрез EnumProps - може би има нещо там. Ако не - преномериране контроли меле през SetProp hwnd "ctrlIndex", индекс. и след това се определя чрез GetProp - правилно или не.
PS. Между другото, индексът може да бъде не само на индекса, но и върху показалеца навсякъде - Онлайн структура, ObjPtr т.н.
ZY2

ger_kar написал (а): това е банална zasubklassit

Ако процесът е непознат - е банална не работи. Ако си - защо сърдя FindWindow?

ковчег написал (а): Ако процесът е непознат - е банална не работи. Ако си - защо сърдя FindWindow?

Процес роден. И защо това е интересно FindWindowEx градина? Мисля, че EnumChildWindows ще бъдат много по-лоши, тъй като ще бъдат прехвърлени към всички деца прозорци.

ковчег написал (а): Каква е разликата ПРАВО контролира от друга? Координати? Текст? Още някои fichey?

Стремете се, да търси, да се намери и perepryatat

ковчег написал (а): 2. Дръжка за контрола е, и е вероятно да се съхранява само за вътрешна употреба някъде зад VTABLE. Опитайте се да погледнете първите 100-200 байта в ObjPtr

Открих, на мястото, където контрол на вашия Хадли крие. И той се съхранява на изместване H3C (60). Е, в същото време намерих други места, където могат да бъдат намерени. Такова място е 3 Чудех се защо е била вписана диапазон от 100-200 Байт?

ковчег написал (а): Е, има ChildWindowFromPoint (Ex)

Qwertiy написал (а): GetWindowClass

Стремете се, да търси, да се намери и perepryatat