Nazwa kontrolki z uchwytu

0

Cześć.

Mając uchwyt okna, w jaki sposób mogę dobrać się do nazwy tego okna ? W zasadzie chodzi mi o kontrolki, ale kontrolki to też okna, więc na jedno wychodzi. FindWindowsEx szuka po nazwie klasy, a mi chodzi bardziej specyficznie, po nazwie kontrolki, bo na oknie mogę mieć wiele instancji danej klasy kontrolki. Dzięki z góry za waszą pomoc i czas.

0

W przypadku zwykłych okien raczej nie ma takiej możliwości. Jeśli okno jest dialogiem, wtedy możesz "wyszukiwać" po ID kontrolki funkcją GetDlgItem.

0

Mając uchwyt okna, w jaki sposób mogę dobrać się do nazwy tego okna

Co to jest „nazwa okna”?

Pod Windows kontrolki mają:

  • uchwyt (HWND), będący w rzeczywistości wskaźnikiem na pewną wewnętrzną strukturę Windowsa, o niejawnej budowie
  • nazwę klasy (c-string) określającą rodzaj okna (to jest to co odróżnia np. przycisk od normalnego okna)
  • uchwyt klasy (ATOM), wartość zwracana przez RegisterClass, można ją pobrać GetClassWord, a której można używać zamiast nazwy klasy co bywa użyteczne bo nie trzeba przechowywać stringa
  • tekst okna (c-string), ustawiany funkcją SetWindowText(), zwracany przez funkcję GetWindowText(); jego konkretne znaczenie zależy od klasy okna.
  • w standardowych dialogach (CreateDialog/DialogBox) kontrolki mają też ID (int)

O jaką nazwę ci chodzi?

0

Właśnie chodziło mi coś na wygląd właściwości Name, czy ControlName w VCL. Niestety w takim razie uchwyty czy nazwy klas mi nic nie dadzą, bo chcę jednoznacznie identyfikować kontrolkę. Pozostaje generalnie albo przeciążenia klas, co jest słabe, albo używania GetWindowText, ew, podziedziczenie kontrolki i ustawianie tam czegoś odpowiedniego. Nie ma innego sposobu, żeby zidentyfkować jednoznacznie kontrolkę, na wielu instancjach programu niż poza GetWindowText ??

0

Piszesz o kontrolkach we własnym programie, czy chcesz je identyfikować w obcym procesie?

0

W obcych procesach, ale nie jest też tak, że nie mam wpływu, jaka klasa zostanie użyta do powołania kontrolki, niemniej technicznie mają to być odrębne procesy.

0

No to nic tutaj nie zrobisz...

0
Zakręcony Samiec napisał(a):

Właśnie chodziło mi coś na wygląd właściwości Name, czy ControlName w VCL. Niestety w takim razie uchwyty czy nazwy klas mi nic nie dadzą, bo chcę jednoznacznie identyfikować kontrolkę.

Przecież uchwyt HWND jednoznacznie identyfikuje kontrolkę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1