Witam.
mam uchwyt okna przeglądarki lub innej aplikacji. Jak przejąć kontrolę nad którymś z pól edycyjnych umieszczonych na formie.
Help
Co rozumiesz przez "przejąć kontrolę"? Bo jeżeli to, co ja myślę, czyli "podczepienie" się pod funkcję obsługi komunikatów obcego okna lub kontrolki - to można dokonać tego tylko funkcją SetWindowLong
i GWL_WNDPROC
jako drugi parametr. Więcej wyjaśnione jest na MSDNie. Z tym, że należy pamiętać iż takie podczepienie jest możłiwe tylko dla kontrolek działających w tym samym procesie. Także pozostaje albo injekcja dllki w ten program. I ona tego dokona (do rymu nawet ;)). Ewentualnie jeżeli program używa jakiejś dllki systemowej z małą ilością exportów lub na przykład ddraw.dll
, to napisać mały wrapper, który wykorzysta tę własnośc, że dllki o systemowe są na ogół ładowane statycznie lub dynamicznie najpierw z katalogu programu, a dopiero później z systemowego. I wtedy będzie można bezkarnie ingerować w kontrolki danego procesu. Metody prób dostępu bezpośredniego mogą być słusznie zgłoszone przez niektóre antywisursy jako działanie szkodliwego orogramowania. Co do injekcji, to do procesu 32 bitowego pod Delphi 7 świetnie nadaje się moduł afxcodehook.pas
. Więcej informacji na podane przeze mnie rozwiązania z pewnością da się wygooglować, trzeba tylko samodzielnie to zrobić.
A co tutaj więcej pisać. Tworzysz dllke i eksportujesz pożądane funkcje tak aby zwracały to co wykonuje oryginalna dllka. Zaląażek tego masz pokazany w moim postcie pod tym linkiem http://4programmers.net/Forum/Delphi_Pascal/219385-aplikacja_wielowatkowa_z_dostepem_do_bazy?p=961069#id961069 z tym że autorzy emulatora, z którym tak kombinowałem poprawili w nim co trzeba w najnowszej becie. I w związku z tym takie kombinowanie jest zbędne. Do kodu źródłowego teraz dostępu nie mam, ale wystarczy wygooglować za kodem dllki dla Worms Armagedon, będącej takim wrapperem. Jest pisana w Delphi. Chociaż fakt, że wstrzymuje działanie explorera jest nieco lamerskie, ale często dość skuteczne.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
Jak przejąć kontrolę nad którymś z pól edycyjnych umieszczonych na formie