WH_GETMESSAGE
Pokracovanie z: Programovanie Delphi Windows Messages
So spravamy typu WH_GETMESSAGE nemam ziadne skusenosti. Ako to mam teda urobyt, aby mi to odchytavalo vsetko, aj ked je aplikacia neaktyvna? Otazka hlavne pre "mm". Dakujem za odpovede.
[mod]Proč nepokračujete v původním vlákně? thread.php (anarchist)[/mod]
To by bolo na dlhsie vysvetlovanie. Princip je taky ze si zaregistrujes vo Win funkciu svojho programu (tzv. "Callback") ktoru ti Win budu volat pre urcite spravy (podla toho aky "hook" (hák) si tvoja aplikacia vo Win zaregistruje, da sa napr. na klavesnicu/mys alebo na vsetky spravy ktore si aplikacie vyberaju z fronty apod.).
Pozri si o tom v MSDN, ak nemas tak msdn.microsoft.com, napr. zacni http://msdn.microsoft.com/library/en-us/winui/winu i/windowsuserinterface/windowing/hooks/abouthooks. asp
S delphi to sice nema nic, ale aj v delphi sa da pouzivat priamo WinAPI.
Ak chces priamo nejaku komponentu pre delphi tak neviem (nie som delphista), skus hladat googlom:
delphi "system hook"
Ako si to robil doteraz? Co presne potrebujes?
BTW. Ak to ma byt nejaky keylogger, tak je samozrejme ze normalne klavesnicove WM_ spravy oknu neprichadzaju ak je neaktivne, klavesnicovy focus ma vzdy len jedno (spravidla to aktivne) okno.
Potrebujem to na bakalarsku pracu. Na studentskych pocitacoch ma byt spusteny klient, ktory bude sledovat co student roby na skuske... pomocou odchytavanie sprav systemu Windows, a ten klient to potom bude posielat na server. V podstate to ma byt legalny trojsky kon.
Zachytavani zprav bude brknacka ve srovnani s tim ziskat z toho pak nejaky rozumny vystup.
Dale si uvedom, ze zachyceni zpravy a zpracovani toho zachyceni by nemelo nijak zpomalit system, jinak operacni system "zastavis".
Dalsi problem - selhani tveho "trojana" = pad systemu
To znie dosť kruto. Napadá ma teda otázka:
Keď sa zachytí správa, čo nebude patriť tomu programu, tak tá správa stratí platnosť a treba ju odovzdať ďalej alebo správa má platnosť naďalej a spracuje si ju ten proces, čo ju potrebuje? Čiže, či je to ako v DOSe pri odchytávaní klávesov v rezidente alebo je to niečo na spôsob verejného zoznamu, z ktorého si každý zoberie, čo potrebuje?
Musis ji poslat dal, jinak by ten program, kteremu patrila nefungoval - nereagoval by na klavesy, na mys, ...
Ty jen provedes nejake zaevidovani.
Ted si predstav, ze mas spusteno nekolik programu a zacnes nad nimi krouzit mysi. To bude zprav - MouseEnter, MouseLeave a kdyz si predstavis, ze kazdy ovladaci prvek je vlastne okno s vlastnim handle...
Proto jsem mluvil o tom, ze bude mnohem vetsi problem ty zpravy zpracovat do neceho rozumneho...
Citaj v MSDN.
The system maintains a separate hook chain for each type of hook. A hook chain is a list of pointers to special, application-defined callback functions called hook procedures. When a message occurs that is associated with a particular type of hook, the system passes the message to each hook procedure referenced in the hook chain, one after the other. The action a hook procedure can take depends on the type of hook involved. The hook procedures for some types of hooks can only monitor messages; others can modify messages or stop their progress though the chain, preventing them from reaching the next hook procedure or the destination window.