Cum să obțineți mânerul elementelor unui alt program

Cum să obțineți mânerul elementelor unui alt program?

Ia un mâner prog lui unul de altul de FindWindow, apoi pentru Handl „s toate butoanele, Edith, și de aceea este necesar să se aplice FindWindowEx, dar nu știu cum. După cum cel mai de dorit și mânerele pentru a ajunge să cunoască mânerul de coca care corespunde elementului.

După cum a spus corect - utilizați FindWindowEx + pentru a cunoaște clasa acelei ferestre (butonul este, de asemenea, o fereastră), pe care doriți să o găsiți.
exemplu:

FindWindowEx (FindWindow ("Shell_TrayWnd", zero), 0, "Buton", nul);

Aveți mânerul butonului Start.
Ie În FindWindowEx, primul parametru este fereastra părinte, clasa a treia a ferestrei pe care doriți să o găsiți. Ei bine, atunci când mâner învăța, apoi a determina dacă această fereastră sau nu ceea ce aveți nevoie - nu este dificil.

Ie dacă specific "Buton" sau "Editare", atunci aceasta va fi corectă și va însemna clasa de ferestre? Și cum, de exemplu, c DateTimePicker "om be?
Și cum de mana pentru a defini ce buton sau Editare "la ea este? Dacă este posibil mai mult în detaliu.

Citiți despre clasele de ferestre din Win9x - SDK are numele lor.

>> Și cum de pe un mâner pentru a defini ce buton sau Editare "la ea este necesar?

Cunoscând mânerul ferestrei, puteți utiliza API pentru a afla totul despre această fereastră. Caption, dimensiunea absolută, mărimea relativă, stilul, părintele etc.
Și în timp ce tu trebuie să știi ce cauți - un buton sau Editare - aceasta afectează numele clasei pe care o specificați în FindWindowEx.
8)

Dacă nu se întâmplă nimic - vom lupta :)

WinSight probabil? Bine, o să văd. Dar dacă ridic această problemă încă :) Este un subiect interesant de dureros. Da, și alții, probabil, vor fi interesante.

Totul sa dovedit, doar o mică problemă a rămas Cum să obțineți toate Hendley, de exemplu, Edith (edit1, EDIT2.), Daca gol? Ie dacă facem acest lucru FindWindowEx (Hndl, 0, "TEdit", nul); atunci primim prima editare disponibilă. Ie se pare că, dacă Edith în prezent, nici un antet, în cazul în care o sută de ori pentru a scrie acest cod, obțineți același lucru, cum să fie?

Ok, voi urmări articolul.

încercați așa.

char buf [65535];
// ca aceasta, puteți obține mânerul primei ferestre copil
hwd = GetWindow (aici mânerul ferestrei pe care o cauți, GW_HWNDFIRST | GW_CHILD);
în timp ce (hwd! = 0) // Întoarceți buclă în timp ce există ferestre copil
<
GetClassName (hwd, buf, 255); // obțineți numele clasei
dacă ((buf [0] == "E") (buf [3] == "t")) // acesta este Edit.
<
. Firul Th face cu acest mâner
>
hwd = GetWindow (hwd, GW_HWNDNEXT); // următoarea fereastră copil
>

și nu transpirați :)

Memorie: 0,74 MB
Durată: 0,023 secunde

Articole similare