Avatar billede orca Nybegynder
11. maj 2005 - 03:04 Der er 4 kommentarer og
1 løsning

Window hooks

Hej

Jeg har en applikation som skal monitorere en række andre vinduer. Disse andre vinduer stammer fra forskellige processer, og jeg henter deres window handles via EnumWindows API kaldet.

Jeg skal på en måde lytte til de windows messages som vinduerne udsender/får tilsendt, altså skal jeg have lavet en hook dertil på en måde.

Hvordan gør jeg det? Jeg skal lytte til flere vinduer samtidigt, jeg vil ikke oprette nye forms i mit projekt, jeg skal kunne lytte til dem uden at oprette fysiske visuelle forms.

Der må gerne bruges DLL kald, det skal bare køre på XP.
Avatar billede faedros Nybegynder
11. maj 2005 - 10:32 #1
Prøv at kigge på beskrivelsen af NativeWindow klassen i .net hjælpen - den giver et eksempel, der lyder som det, du søger.
Avatar billede orca Nybegynder
11. maj 2005 - 11:42 #2
Jeg har leget med eksemplet fra dokumentationen: http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwindowsformsnativewindowclasstopic.asp

Jeg har oprettet en "MyNativeWindowListener" og givet den mit vindues (det jeg skal monitorere) handle. Men der sker intet, det modtager ingen messages.

Kan man godt have to vinduer med samme handle på den måde? Bør de begge modtage de samme messages? Hvad mon jeg mangler for at det kører?
Avatar billede orca Nybegynder
11. maj 2005 - 22:10 #3
Jeg fik lavet min hook via følgende eksempel:

http://www.dotnetinterop.com/faq/?q=DelegateGC
Avatar billede bechmann Nybegynder
12. maj 2005 - 22:04 #4
På klassen System.Windows.Forms.Control kan du override WndProc. Det lyder bare ikke helt som det du ønsker.
Du skal have fat i Application.AddMessageFilter for det du ønsker. Der er et eksempel i hjælpen.
Avatar billede orca Nybegynder
13. maj 2005 - 12:00 #5
Såvidt jeg kunne finde ud af så kunne jeg ikke hijacke beskederne til andre tråde end den som applikationen med messagefilteret kørte i. Dvs. at det ikke kunne bruges til at hooke ind i et andet vindue.

Det kan dog sagtens tænkes at jeg bare ikke har set lyset.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester