SetWinEventHook problem

szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

sweh2 ten post 10-03-2010 11:01





mam problem z ta funkcja.
jezeli ustawiam pid i tid na 0, funkcja dziala jak nalezy.
Jesli natomiast probuje ustawic pid albo tid na konkretny proces albo watek - nie zwraca bledu, ale callback sie nigdy nie wykonuje.

Probowalem warianty z dll, bez dll, OUTOFCONTEXT, INCONTEXT, nic nie dziala, gdy podaje pid.

jak PID i TID jest 0 - ok. Inaczej nie dziala.

Jesli to ma znaczenie to probuje ustawic powiadomienie o zmianie stanu screenbufera. Moze jest inna metoda, byle dzialalo pod windows 2000 i windows 7.
Przejdź na górę strony
cytuj
sweh ten post 10-03-2010 12:28





doszedlem ze konsole sa obslugiwane przez csrss, i to jego pid musze podac, bo to on wysyla eventy.
ale jest 1 problem, jest to asynchroniczne, czyli se moge o dupe rozbic taki mechanizm. Po co mi informacja o zmianie stanu bufora, skoro zanim go odczytam on znow sie moze zmienic. Albo lepiej: zmiana zawartosci -> zmiana rozmiaru okna. Ciekawe co by sie stalo gdybym czytal z obszaru poza konsola.
Nie wiem po co ci z MS zrobili te wineventhooki, to jest bez sensu!

Potrzebuje cos lepszego, nastepuje event - wykonuje swoje operacje, zwracam kontrole, i dopiero wtedy moze pojsc kolejny.

Do csrss dostepu nie mam, program ma byc uruchomiony na ograniczonym koncie, i ma dzialac ZAWSZE, pocawszy od win 2000. Bo bedzie zastepstwo cmd.exe, z kolorami i lepsza obsluga przerwan (np mozliwosc opdczepienia procesu od okna). Moim celem jest stworzenie pod windowsem czegos na wzor linuxowego terminala. Oczywiscie dostep do terminala musi sie odbywac przez INPUT_RECORD i CHAR_INFO, a nie read/write.

Tylko jedyny problem to zawiadomienie o zmianie stanu screenbufera, i nie moge sobie z tym poradzic.
Po reversingu servera telnetu zauwazylem ze on odczytuje output w petli, ze sleepem 2000.
Nastepnie porownuje zawartosc z poprzednia, i jesli jest zmiana - wysyla ja. Ale niestety w takie cos ja sie nie bede bawil, petla ze sleepem to dla mnie kpina.
Juz predzej napisze swoja wlasna konsole, a input bedzie na bazie zwyklych komunikatow WM_USER.
No ale jesli uruchomie program ktory uzywa api jak WriteConsole(), to dupa, ogolnie nie bede mogl kozystac z niczego co kozysta z konsolowych funkcji. Z przekierowaniem i emulacja STDOUT nie powinno byc problemu, ale dostep do konsoli bedzie ograniczony.

Dlatego wolalbym kozystac z windowsowej konsoli - sporo programow ma api, ktorego nie mam zamiaru hookowac i emulowac.
Przejdź na górę strony
cytuj
szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

1 użytkownik(ów) przegląda ten temat (1 gości)
(żadnych zarejestrowanych użytkowników)

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0161 sek. (zapytań SQL: 9)