Historia krótka - Wyciągnąć za uszy zdarzenie z

0

Witam gorąco ;]
Mój problem jest taki: W innej aplikacji pojawia się okienko i muszę to jakoś przechwycić. Polega to mniej więcej na tym, że do tej pory łapałem to fragmentem screenshotu [lamerskie ale działało], natomiast teraz muszę to przechwycić w momencie kiedy aplikacja jest zminimalizowana.

Konkretniej: Tibia - klient MMORPGa [www.tibia.com]
W momencie logowania się do serwera pojawia się lista z możliwością wybrania postaci. Okno listy jest raczej nietypowe ze względu na to, ze nie można zdobyć jego handle'a za pomocą funkcji przechwytywania okna pod myszką.

Jak zdobyć listę wszystkich komponentów w aplikacji Tibii ?
Jak przechwycić pojawienie się takiej listy?

0
  1. Jesli nie ma uchwytow do okien Child.
    Jesli tak jest to zawsze ma uchwyt chociaz glown okno aplikacji (tak jak IE). Moze w takim razie w petli Timer sprawdzac czy
IsVisible(uchyt_okna)

i jesli jest 'na topie' to cos tam zrobic. Uchyt okna glownego znajdziesz chocby przez FindWindow('klasa',' lub napis_okna',

.
Niestety jedyna rzecza jaka zostaje w przypadku gdy nie masz uchwytow do Child to zasymulowac przesyniecua kursora, klikanie pozycju mysza. (
```delphi
Mouse_Event(...) itp
Jak kontrolki Child maja uchyty to skorzystaj z funkcji</li> </ol>
 EnumChildWindows

, ktora zwroci child uchwytu do kontrolek w oknie. Wtedy juz tylko wyslac komunikaty do nich. Na przyklad

         
keybd_event(VkKeyScan('v')   , 1, 0, 0);
keybd_event(VkKeyScan('v')  , 1, KEYEVENTF_KEYUP, 0);
//lub mysz
        mouse_event(MOUSEEVENTF_LEFTDOWN, punkt.X, punkt.y, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, punkt.x, punkt.y, 0, 0);
0

Możliwe, że ta lista nie jest osobną kontrolką, ale jest rysowana na głównym oknie. Wtedy przechwycić elementy tej listy będzie bardzo ciężko.

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