09. august 2005 - 09:10Der er
14 kommentarer og 1 løsning
fange tekstfelt i fremmed programs vindue v.h.a handle
hejsa,
jeg har et handle til et vindue i et fremmed program. I dette vindue findes en tekstboks hvis handle jeg skal bruge. Vinduet har 2 tekstfelter, og det eneste jeg ved på forhånd der adskiller de to er at det ene har VScroll som en del af sin "Windows style" når man kigger i WinSight. Jeg kan desværre ikke bruge findwindow direkte, da jeg ikke ved på forhånd hvad feltets "navn" er.
Jeg går ud fra at jeg skal loope igennem hovedvinduets childs og tjekke på et eller andet. Men hvordan gør jeg det, og hvad er det jeg skal tjekke på
Prøv at kigge på EnumChildWindows() i Windows API. I din callback kan du så bruge GetWindowInfo() til at hente en WINDOWINFO struct som indeholder oplysninger om Window Style. Den kan du bruge til at finde det rigtige tekstfelt. Hvis du skal bruge teksten i det felt kan du kigge på GetWindowText().
jeg har fundet en anden løsning ved at bruge findwindowex og getwindowlong og så tjekke op imod WS-VSCROLL, men jeg er sikker på din løsning også ville virke, så smid et svar, så du kan få pointene.
Hvis du gerne vil yde lidt mere for dem ;) så kan du evt. svare på den her:
når jeg nu har et handle til tekstfeltet, så ville jeg meget gerne opfange messages sendt til det, så jeg kan redigere den nye tekst der bliver sendt til det, i stedet for hver gang at skulle redigere hele indholdet af feltet.
Hvis du skal opsnappe messages sendt til et andet vindue tror jeg du er nødt til at installere en global hook. Window proceduren til hooken skal så ligge i en DLL, ellers går det ikke. Jeg vil gerne lige prøve at undersøge om der er andre muligheder en den globale hook.
Må man spørge hvad det skal bruges til? Det ligner noget jeg har tænkt på at lave til at holde øje med en q3 console eller noget :o)
jeg tænkte nok at det var noget med hooks. Desværre er det eneste detaljerede eksempel jeg har set skrevet i c++ er lign.
Jeg skal bruge til at filtrere indholdet i et chat vindue i et net-spil program, hvor ejeren ikke selv gider administrere brugerne.
Hver gang en bruger poster en besked, må tekstfeltet jo modtage en besked om at tilføje en tekst til sit indhold. Hver post i chatten starter med brugernavn og licensnr, og det er den besked jeg gerne vil enten tillade eller afvise, alt efter licensnummeret.
nu vi er her, ved du så hvilken besked der skal sendes til feltet for at få den lodrette skrollbar til at gå i bund. Når jeg sender en SETTEXT message ryger skrollbaren op i toppen
jeg vil meget gerne have noget hjælp med en hook, da jeg aldrig har lavet sådan noget før.
Du behøver dog ikke haste med det, jeg har fået den anden metode til at virke "så nogenlunde", man når af og til at se hvad en spærret bruger skriver inden det fjernes. Det skal en hook meget gerne kunne løse når vi når så langt. Men giv dig bare god tid ;)
Du skal nok bruge en hook med typen WH_GETMESSAGE for at kunne fange en WM_SETTEXT og forhindre den i at komme videre. For at filtrere en besked fra skal din hook funktion returnere 0 og IKKE kalde CallNextHookEx(). Alle andre beskeder kan klares med Result := CallNextHookEx(...);
Helt ærlig venner .. Man kan da ikke vende ryggen til jeg bare et par måneder uden i laver ulykker ;o)
Hvorfor giver i ikke bare manden noget source code der kan ? Nå så må jeg jo gøre det :D
hatecaps og alle andre intresserede skriv mig en mail på jens@borrisholt.com , og spørg efter WinSpy så har jeg et lille projekt der kan det hele og meget mere ....
rednex>> Stil dig nu ike for store forventninger om jeg kommer tilbage som fast skribent... Var bare forbi for at kigge for at se om ikke snart der var en der ville overtage mit tidligere skriveri .. Men det lader ikke til at være tilfældet.
Det er en af grundene til at jeg kun besvarer ganske få spørgsmål herinde. Jeg har rimelig hårde kriterier for hvilke spørgsmål jeg gider svare på. Det betyder som regel at det skal være lidt "specielt" ligesom dette spm :o) Det er jo en god anledning til måske at lære lidt selv.
Fik du forresten min mail?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.