|
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.
|
|
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.
|