Spy++-Funktionalität erzeugen



  • Hallo @all,

    ich habe die folgende Frage:

    Ich benötige ein Control, was in etwa (am besten genauso) aussieht wie das Microsoft Spy++-Tool um die Fensterinformationen darzustellen, siehe Screenshot:

    http://support.citrix.com/kb/html/images/CTX103137-1.gif

    Es müssen also genauso diese kleinen Fenstericons angezeigt werden und man muss die Möglichkeit haben die Childelemente dazu anzuzeigen, ein Parent weiter aufzuklappen (+ und -) etc.
    Die Auswahl eines Fensters über das Spy-Suchtool hab ich bereits implementiert, dafür gibt es vorgefertigte Klassen.

    Kann mir jemand sagen, wie ich diese Funktionalität erzeuge? 😕
    Ich möchte es übrigens in eine dialogbasierte Anwendung integrieren und nicht wie bei MS Spy++ ein eigenes Fenster dafür erstellen.

    Vielleicht hat jemand ja einen Link zu solch einer Klasse?



  • Hey Dressman, schau ma hier nach:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-96464-and-highlight-is-spy.html

    Mit Hilfe der Funtion GetWindowFromPoint() erhällst du das momentane Window auf das die Maus zeigt, jezz musst nur noch die größe dieses Windows kriegen (CRect) und dann einfach einen schwarzen Kasten drumrum-zeichnen...

    Die Infos über das Fenster erhällst du mit CWnd::GetWindowInfo :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfcwndgetwindowinfo.asp

    Hier noch weitere Unterstützung von Codeproject :
    http://www.codeproject.com/dialog/windowfinder.asp
    http://www.codeproject.com/tools/windowspy.asp
    http://www.codeproject.com/dialog/windowselector.asp

    Hoffe du schaffst das...
    Gruß
    LittleKid



  • Hey LittleKid danke für deine Antwort und die Mühe die Links rauszusuchen, aber du hast mich leider falsch verstanden!

    Dieses Suchfenster von Spy hab ich mir bereits generiert, ich bin in der Lage Fenster hervorzuheben, Fenster und Childelemente zu enumerieren etc.

    Mir geht es darum:
    Ich möchte genau dasselbe Control erzeugen, wie in meinem Link gezeigt.
    Also im Prinzip die genaue Fensterhierarchie eines übergeordneten Fensters nachbilden...

    Kann mir jemand erklären wie so etwas möglich ist? 😕



  • Hallo @all,

    ich habe es nun mit einem Tree-Control gelöst.

    Nun stehe ich vor einem weiteren Problem:

    Zunächst stelle ich den Stamm des TreeControls dar, sprich das Desktop-Window, dann enumeriere ich mir in der Funktion EnumParentWindowsProc alle Kindfenster auf dem Desktop und erzeuge den 1. Ast.
    Nun enumeriere ich in dieser Funktion mit EnumChildWindows die Kindfenster der Desktopfenster und stelle sie als zweiten Ast dar.
    Funktioniert auch alles wunderbar, nun zur Fehlerquelle:

    Ich möchte genau dieselbe Ansicht wie in Spy++ erzeugen, dazu möchte ich aber die genaue Hierarchie darstellen.
    Sprich, einige Childelemente der Desktopfenster sind wiederum Parentfenster. Nun möchte ich also so oft wie notwendig neue Äste erzeugen, um die genaue Struktur darzustellen.

    Wie kann ich das umsetzen? 😕
    EnumChildWindows liefert mir ja alle Kindfenster in der selben Struktur, sprich in meinem Fall als Ast 2.



  • Warum holst du dir nicht selbst alle Fenster.
    Vom DesktopWindow ausgehend das ChildWindow. Davon alle ChildWindows und davon auch wieder alle ChildWindows.
    Gibt's keine Kinder mehr, dann versuchst du es mit dem Nachbarn.


Log in to reply