Намери HWND главния прозорец с HINSTANCE
Налице е необходимост да работят с някои EXE-BCCH. EXE-shka непознат, кои класове са описани в това приложение, нямам представа. Работещи чрез ShellExecute работи без никакви проблеми и връщане HINSTANCE. Но как да намерите HWND на основния прозорец на приложението има само HINSTANCE.
Няма резултати е резултат също. Благодаря.
Не използвайте ShellExecute, а CreateProcess - тя се връща дръжката на основния поток, а след това се изброят всички прозорци, да намерите на потока, че това е един прозорец, създаден (GetWindowThreadProcessId)
Хеморагичен дума (въпреки че може да има и други начини)
> След това се изброят всички прозорци, да намерите на потока, че това е
> Прозорец създаден (GetWindowThreadProcessId)
Всички прозорци са еднонишкови, тогава какво. Кои от тях са най-важни?
И като цяло, това, което е основния прозорец? мина всички прозорци са равни (с изключение на дъщерни дружества, разбира се, но след това можете да научите на родителите)
ако приложението не е сложна, а средният тампон, след като (след maalenky zaderzhechki) тичам EXE файл може да предизвика GetForegroundWindow и най-вероятно това ще бъде основния прозорец
В повечето случаи, в главния прозорец, който се създава от една страна, най-високо ниво, а не майка. Въпреки че не е това, че тя винаги.
> GetForegroundWindow и най-вероятно това ще бъде основния прозорец
Основният прозорец може да бъде напълно невидим и да има нулев размер.
Заключение: Основният прозорец не може да се определи, тъй като не можем да кажем какво означава да бъдеш главния прозорец.
Преди да се започне "някои EXE-shki" място на WH_CBT кука. тя дава възможност за създаването на прозореца (главната / на първо място, ако искате), за улов на структурата на CREATESTRUCT, която съдържа всички е създаден Стария на регистрирания клас, въз основа на MDM прозорец.
Същата куката ви позволява да променяте параметрите на структурата преди създаването на прозореца.
И какъв е смисълът? Е, нека кажа, че прог създаде два прозореца, един след друг (CreateWindowEx), и двете са абсолютно същите, както не разполагате с майка, която е едно нещо, което е първият създаден?
В програми, написани на Delphi, обща бъркотия. Първият прозорец е създадена TApplication обект, който след това nykat и "магистър" е първият създаден прозореца. И най-важното, в действителност това е TApplication кутия.
> Основният прозорец може да бъде напълно невидим и да има нула
> Размери.
> Заключение: не е възможно да се определи главния прозорец, защото не можете да
> Да кажем, че това означава да бъдеш главния прозорец.
Да, аз не споря, че е невъзможно да се определи. но с прости приложения това ние можем да работим
така че е възможно да се изброят всички прозорци в заявлението. и не повече
И все пак, това, което е основния прозорец е различен от не-главницата? По мое мнение единственият отговор на затварянето, затворете главния прозорец - прикован приложение.
> Само реакция на затваряне, затваряне мое мнение
> Главна прозорец - прикован приложение.
След това програмата е създадена в Делфи са "основна" прозорец двама :)
А усещането, че говорите дограми не чуват нищо.
да извършват проверки на WS_OVERLAPPED или WS_OVERLAPPEDWINDOW стилове. както и липсата на стил и WS_CHILD WS_POPUP. и този път.
две. хората да говорят за конкретна програма. Това означава, че е необходимо да се вземат и да го стартирате, а след това да започне и да видим WinSight стилове, класове и заглавията. и около този улов!
> След това програмата е създадена в Делфи са "основна" прозорец двама
> :)
не, защо не?
VINAP и като цяло не прави разлика между главния прозорец nonprincipal, най-вече, че ще бъде само за един програмист с потребителя.
Когато създадете прозорец (например с помощта на CreateWindowEx) преминаващи вместо ParentHwnd 0, иконата се появява прозорец, в лентата на задачите, нали?
Вие със сигурност може да се предположи, че всички прозорци с майка == 0 основен вид, след това определени куката на WM_CREATE, извличане на структурата (CREATESTRUCT) и с нетърпение майка.
Между другото се върна от ShellExecute HINSTANCE - фалшив HINSTANCE, е само за контрол на грешки
> VINAP и като цяло не прави разлика между главния прозорец nonprincipal главно
> Тя ще бъде само за един програмист с потребителя.
Това е! Един прост пример - проводника. Това своя основен прозорец? Затварянето на един - не се затваря приложението, но затварянето на последно място - да.
посочите, Th за проводника. iexplore.exe или explorer.exe? %)
explorer.exe. Значение случаите, когато Progman и кутията-не на Kaim причина (например облицовъчни друг софтуер е инсталиран). След това всички прозорци са.