ПредишенСледващото

Намери 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 причина (например облицовъчни друг софтуер е инсталиран). След това всички прозорци са.

Подкрепете проекта - споделете линка, благодаря!