Entwickler-Ecke

Windows API - In KaZaA die Downloads checken....


ThEGZA - Sa 07.09.02 17:56
Titel: In KaZaA die Downloads checken....
Huhu....ich hab mal ne frage und zwar weiß vielleicht einer wie ich das download fenster von kazaa finde bzw. informationen daraus auslese und quasi diese daten in mein projekt übertrage ???
also mit findwindow('KaZaA',Nil); hab ich schonmal das hauptfenster gefunden aber ich weiß selbst net mit dem apispy wie ich andere childs finde....kann mir bitte einer helfen das wäre nett :)


OregonGhost - So 08.09.02 11:32

Microsoft hat folgendes geschrieben:

HWND FindWindowEx( HWND hwndParent,
HWND hwndChildAfter,
LPCTSTR lpszClass,
LPCTSTR lpszWindow
);


der erste Parameter gibt das Elternfenster an. Folglich übergibst du hier den Handle des Hauptfensters. Der zweite gibt an, nach welchem Kindfenster die Suche starten soll - hier gibst du jeweils das zuletzt gefundene Kind an. Mit Spy++ oder Winsight kannst du die Klasse und Beschriftung herausfinden und sie hier angeben, um direkt danach zu suchen.


ThEGZA - So 08.09.02 11:35

ich habe ja schon das handle vom hauptfenster !!!
gefunden mit


Quelltext
1:
findwindow('KaZaA',Nil);                    


wobei KaZaA dann auch gleich der classenname ist.
aber nun muss ich in das kazaa formular und diese downloadliste finden (bzw das handle finden) aber da es nicht direktes child vom KaZaA handle ist sondern nochwas davor kommt hab ich kein plan....


DeCodeGuru - So 08.09.02 11:45

du hast die Funktion FindWindow verwendet, welches dir ein Handle von einem Programm besorgt. OregonGhost hat dir aber eine Funktion namens FindWindowEx gegeben, welche einem ein Handle zurückgibt, das man in einem Bereich sucht, der zu einem Programm gehört, von dem du das Handle über FindWindow gehohlt hast. (scheiß Satzbau ;-)

Such dann einfach mal mit Winsight nach dem Fenster, welches du suchst oder nimm den Enabler/Disabler von Mr. Drone. Der gibt die den Klassennamen und den Namen des Fensters zurück. Dann kannste mit WM_GetText den Text holen.


ThEGZA - So 08.09.02 11:57

der der message WM_GETTEXT kannst du doch z.b. nur texte aus editboxen holen oder auch aus listboxen ???


und nochmal für die dummen (mich):
mit findwindowex kann man im kazaa haupt fenster nach anderen sachen suchen wie z.b. den knöpfen für trafic und search etc. ja ???


DeCodeGuru - So 08.09.02 12:20

Zitat:
mit findwindowex kann man im kazaa haupt fenster nach anderen sachen suchen wie z.b. den knöpfen für trafic und search etc. ja ???


Jo

Zitat:
der der message WM_GETTEXT kannst du doch z.b. nur texte aus editboxen holen oder auch aus listboxen ???


Man kann mit WM_Gettext auch aus Labeln den Text rausholen, also warum nicht aus lsitboxen?


ThEGZA - So 08.09.02 12:51

weil in listboxen ja bekanntlich mehrere items drin sind (mehrere downloads) daher muss man wahrscheinlich mit einem index arbeiten der dann ein item identifiziert.

danke für deine hilfe ich hoffe es funzt mit dem findwindowex.....
thx :P


Delete - So 08.09.02 13:46

Na,wie wär´s denn dann mit den spezifischen Listbox-Messages? Z.B. "LB_GETTEXT", und auch "LB_GETCOUNT"? - Mit letzterer bekommst du heraus, wieviele Einträge drin sind, und dann hast du doch eine Basis, um mit ersterer den jeweiligen Text auszulesen.


ThEGZA - So 08.09.02 17:17

geil ich wußte garnicht das es sowas spezifisches gibt thx erstmal !!!!
aber ich finde die fucking (sorry für das wort) listbox nicht.......kann mal einer versuchen mit den api funktionen das downloadfenster von kazaa zu finden ????


Delete - Mo 09.09.02 07:50

Lass dir doch am besten mal mit der Funktion "EnumChildWindows" alle untergeordneten Fenster auflisten. Dann wirst du ja (hoffentlich) anhand des Klassennamens sehen, ob die Listbox dabei ist.

"Hoffentlich", weil ich dieses Programm nicht benutze und weil´s mich -offen gesagt!- auch nicht sonderlich interessiert.

So, wenn du die Listbox dann gefunden hast, dann kannst du den Klassennamen von ihr benutzen und auf den Inhalt zugreifen. Du kannst -wenn du nicht sicher bist!- auch mal versuchen, den Inhalt mit "LB_GETCOUNT" auszulesen und vielleicht einen eigenen Wert anzuhängen. :wink: Dann weißt du 100% an welcher Stelle du gerade bist.


ThEGZA - Mo 09.09.02 12:00

stimmt da hast du recht und nochmal 1000 dank an alle hier die sich so nett drum gekümmert haben...ich werde ja ganz rot :oops:


ThEGZA - Mo 09.09.02 15:13

kann mir mal einer nen kleines beispiel zu EnumChildWindows schreiben ???

Quelltext
1:
2:
3:
4:
5:
6:
BOOL EnumChildWindows(

    HWND hWndParent,  // handle to parent window
    WNDENUMPROC lpEnumFunc,  // pointer to callback function
    LPARAM lParam   // application-defined value
   );

oder mit vielleicht sagen was bei pointer to callback function und application-definded value bedeutet ????


ThEGZA - Mo 09.09.02 17:18

ich werd noch bescheuert hier......bitte guckt euch mal den code an....


Quelltext
1:
2:
3:
kazaa:=findwindow('KaZaA',Nil);
ander:=findwindowex(kazaa,???,'SysTreeView32',Nil);
messagedlg(inttostr(ander),mterror,[mbok],0);


finde ich so das downloadfenster bei kazaa ????
plz ich komme echt net weiter so......kann net mal einer nen sample schreiben um das downloadfenster (downloadliste) zu finden.


Delete - Mo 09.09.02 19:12

Bei Kazaa handelt es sich um eine Listview und den kann man nicht einfach mit den Listbox-Nachrichten auslesen, denn bei CommonControls (Listview ist eins) muß man zum Auslesen auf den Adressraum der jeweiligen Anwendung zu greifen.

Such mal mit Google nach GrabListview, da solltest du ein programm finden, welches fremde Listviews ausliest.

Aber bei dem Kazaa-Ding handelt es sich um einen Treeview, auch wenn es nicht so aussieht. Du müßtest den Source von GrabListview also etwas umbauen. Was ich mir aber nicht gerade einfach vorstelle.


ThEGZA - Mo 09.09.02 20:07

mir ist schon klar das es sich dabei um eine treeview handelt und es sieht sogar so aus da du in delphi direkt auch das design ändern kannst.
der interne name des teils heisst SysListView32 oder so ähnlich.

und ich will es erstmal nicht auslesen sondern einfach nur das verdammte handle rausfinden wenn ich das habe hat sich der rest erledigt weil ich genau oder zum teil weiß wie ich daten daraus auslese.

Bitte es muss doch einer schaffen nur das handle rauszubekommen.
also über findwindow und über die childclasses.


ThEGZA - Mo 09.09.02 20:48

so das grabteil funzt echt supi aber genau da wo es funzen muss geht es net :(
also im explorer oder sonstigen sachen kann ich einwandfrei die listviews auslesen aber bei kazaa komischerweise net :(
obwohl es sogar den selben klassennamen trägt wie im explorer ....
ne doch net ganz das im kazaa ist ne SysTreeView32 und im explorer isses SysListView32.... f*** bitte einer muss mir doch helfen können :(

HILFE !!!!!!!


Delete - Mo 09.09.02 23:17

Sag ich doch das ist ein Treeview. Ich bin doch nicht von vorgestern. :x

Aber das Prinzip beim Treeview müßte das gleiche wie beim Listview sein. Also mußt du dir nur den Source von GrabListview nehmen und entsprechend anpassen. Aber auch das habe ich dir schon geschrieben.

Du hast also alles was du brauchst. Du mußt es nur noch eintippen.


ThEGZA - Di 10.09.02 01:48

wenn ich das programm so umschreibe dann kackt es ab....
da steht im source sowas wie "ich akzeptiere: listview blabla" aber wenn ich das SysTreeView32 hinzufüge kackt es einfach ab. bitte versuch du mal dein glück....vielen dank. :wink:


Delete - Di 10.09.02 02:18

Dass es nicht einfach ist habe ich ja schon geschrieben. Und da muß wohl mehr angepaßt werden als nur die paar Buchstaben. Ein Treeview kennt ja keine Spalten, wie ein Listview usw. Bedeutet also Arbeit und wohl nicht wenig.

Und Zeit habe ich im Moment keine dafür, habe andere Projekte am laufen.

Desweiteren ließ dir dies bezüglich noch mal deine Signatur durch - recht treffend eigentlich.


ThEGZA - Di 10.09.02 09:31

:lol: hehe das ist ja net wirklich mein spruch das hat immer mein tutor zu mir gesagt wenn ich mal nen fehler gemacht habe :)