Toon posts:

[VB6] FindWindow/Ex en alle varianten daarop

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ok, ik heb al eerder geplaatst dat ik een hWnd van een window niet kan vinden. Ik ben nu wellis waar een stuk verder gekomen maar zit wederom al weer 2 dagen vast.

Ik heb een proggie, die een code voor me bouwd als ik met mijn muis over het chatwindow ga, en dus dit geeft aan mij :

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Function GetMyWindow() As Long


'Variables
Dim lParent As Long
Dim lChild(1 To 16) As Long


'Get Parent Window
lParent = FindWindow("CabinetWClass", "TMF Chatbox - Microsoft Internet Explorer")
'Get Child Window(s)
lChild(1) = FindWindowEx(lParent, 0, "Shell DocObject View", "")
lChild(2) = FindWindowEx(lChild(1), 0, "Internet Explorer_Server", "")
lChild(3) = FindWindowEx(lChild(2), 0, "Shell Embedding", "")
lChild(4) = FindWindowEx(lChild(3), 0, "Shell DocObject View", "")
lChild(5) = FindWindowEx(lChild(4), 0, "MSAWT_Comp_Class", "")
lChild(6) = FindWindowEx(lChild(5), 0, "Shell Embedding", "")
lChild(7) = FindWindowEx(lChild(6), 0, "Shell DocObject View", "")
lChild(8) = FindWindowEx(lChild(7), 0, "Internet Explorer_Server", "")
lChild(9) = FindWindowEx(lChild(8), 0, "Shell Embedding", "")
lChild(10) = FindWindowEx(lChild(9), 0, "Shell DocObject View", "")
lChild(11) = FindWindowEx(lChild(10), 0, "Internet Explorer_Server", "")
lChild(12) = FindWindowEx(lChild(11), 0, "Shell Embedding", "")
lChild(13) = FindWindowEx(lChild(12), 0, "Shell DocObject View", "")
lChild(14) = FindWindowEx(lChild(13), 0, "Internet Explorer_Server", "")
lChild(15) = FindWindowEx(lChild(14), 0, "Microsoft VM For Java(TM) Host Window Class", "")
lChild(16) = FindWindowEx(lChild(15), 0, "MSAWT_Comp_Class", "")


GetMyWindow = lChild(15)


End Function


Heel leuk, 16 childs op een rijtje, en hij geeft me keurig de hWnd als ik met mijn muis op de chatbox sta. Deze hWnd is natuurlijk iedere keer anders. De ene keer is het 2920, de andere keer is het 3300(Child15). Maar met dit stukje code wil het maar niet lukken om de hWnd via dit stuk code te vinden, alleen door met mijn muis over de box heen te gaan.

Van child 1 t/m 9 geeft hij keurig alle hWnds, maar de rest is gewoon allemaal 0 :? :( volgens het programma. Tuurlijk denk je dan dat die windows niet bestaan, maar als ik met mijn muis erover heen ga, krijg ik keurig de hWnd en de Classnames. Het window bestaat dus wel :( .

Met een ander stukje code krijg ik de hWnd van child16 te pakken, maar alleen door middel van de hWnd van child15 in te geven, en schuif ik het probleem dus 1 stapje naar boven :( .

Zou iemand weten hoe je die 15e hwnd te pakken krijg, zonder dat FindWindowEx of FindWindow 0 terug geeft?

Dank voor het lezen, als je meer info nodig heb, vraag maar.

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 15-08 11:47

Sponge

Serious Game Developer

Hmm, ik meende dat er op www.pscode.com een programma stond die zoiets deed, of iig die richting op, genaamd "Spy ++" ofzo..

Hmm, Als je op "Spy" zoekt krijg je al veel interessante dingen tegen ;), zoals deze bijv ( denk ik):

http://www.pscode.com/vb/...txtCodeId=29566&lngWId=1:
Afbeeldingslocatie: http://www.pscode.com/upload/ScreenShots/PIC2001127160167776.gif

Niet getest, maar ziet er wel redelijk uit... En er zijn nog veeel meer dingen op pscode.com die dit soort dingen doen :)

  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 09-08 22:22
Spy++ is gewoon een programma wat bij de tooltjes van Visual Studio zit ;)

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


Verwijderd

Topicstarter
Ik heb ook zo een tool, + source ervan,... dat zoek ik niet, ik probeer zonder dat ik met me muis eroverheen moet de handle te vinden...


edit:

Lees eens goed mijn openingspost. :X

[ Voor 18% gewijzigd door Verwijderd op 31-03-2003 22:14 . Reden: Edit ]


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Verwijderd schreef op 31 March 2003 @ 18:12:
...
Met een ander stukje code krijg ik de hWnd van child16 te pakken, maar alleen door middel van de hWnd van child15 in te geven, en schuif ik het probleem dus 1 stapje naar boven :( .
...
Kan je dit 'andere stukje code' dan niet de hWnd van child9 geven (die was wel goed?) en zo doorgaan tot je bij 16 bent?

Weet je trouwens zeker dat die class-namen wel kloppen die de code generator genereert? Als je die es allemaal naloopt (handmatig) weet je tenminste of de fout in de code zit of de naam van de class fout is.

Visual Basic:
1
lChild(10) = FindWindowEx(lChild(9), 0, "Shell DocObject View", "")


Als dit geen geldige hWnd teruggeeft (lees: lChild(10) = 0) en lChild(9) is niet 0, én bij handmatig ingeven van de hWnd van lChild(9) en de class-naam lukt het wel, dan zit er ergens een bug in, lijkt me.

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 15-08 11:47

Sponge

Serious Game Developer

drZymo schreef op 31 March 2003 @ 20:32:
Spy++ is gewoon een programma wat bij de tooltjes van Visual Studio zit ;)
op pscode.com is het dan ook een clone, met source ;) :)

Verwijderd

Topicstarter
Limhes schreef op 31 March 2003 @ 22:29:
[...]


Kan je dit 'andere stukje code' dan niet de hWnd van child9 geven (die was wel goed?) en zo doorgaan tot je bij 16 bent?

Weet je trouwens zeker dat die class-namen wel kloppen die de code generator genereert? Als je die es allemaal naloopt (handmatig) weet je tenminste of de fout in de code zit of de naam van de class fout is.

Visual Basic:
1
lChild(10) = FindWindowEx(lChild(9), 0, "Shell DocObject View", "")


Als dit geen geldige hWnd teruggeeft (lees: lChild(10) = 0) en lChild(9) is niet 0, én bij handmatig ingeven van de hWnd van lChild(9) en de class-naam lukt het wel, dan zit er ergens een bug in, lijkt me.
Nee lukt niet... iedere keer als ik die JAVAVM hWnd ergens probeer op te roepen, returned hij een 0 waarde. :(

Verwijderd

Topicstarter
En een bug lijkt me onwaarschijnlijk, bij alle programma´s doet hij het gewoon, behalve bij die chatbox bestaande uit JavaVM.. het MOET mogelijk zijn volgens mij.
Pagina: 1