Laden...

Nicht sichtbaren Fenster-Bereich ermitteln und capturen

Erstellt von ViperNeo vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.272 Views
V
ViperNeo Themenstarter:in
352 Beiträge seit 2008
vor 13 Jahren
Nicht sichtbaren Fenster-Bereich ermitteln und capturen

Hallo Leute,

wie im angehängten Bild dargestellt versuche ich ein beliebiges Fenster mitsamt seines Scrollbaren Bereichs zu capturen.

Im Prinzip läuft es so ab, dass der User das entsprechende Control anwählt und dann sollte ein Screenshot von dem kompletten Bereich (ohne Scrollbar) gemacht werden.

Irgendwie finde ich dafür keinen Ansatz. Das Handle des Controls kann ich schon ermitteln, allerdings weiß ich nicht wie ich das Teil dann vergrößere oder in einem Offscreen Part komplett zeichnen lasse oder sowas.

Hat jemand eine IDee wie man vorgehen könnte?

Grüße
ViperNeo

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo!

Man könnte sich das Fehlerhandle holen und den Zeichenvorgang in ein eigens erstelltes Graphics-Objekt umleiten. Dieses muss dann nur entsprechend groß sein.

Nobody is perfect. I'm sad, i'm not nobody 🙁

V
ViperNeo Themenstarter:in
352 Beiträge seit 2008
vor 13 Jahren

hm, das fehlerhandle? du meintest fensterhandle oder? wie funktioniert denn das mit dem umleiten WM_PAINT nicht auf dem Screen sondern in einem Bitmap oder sowas?

Gibts dafür API Funktionen?

4.221 Beiträge seit 2005
vor 13 Jahren

Formular/Control drucken oder als Bitmap speichern

Der unsichtbare Bereich wird aber natürlich nicht übernommen ... .Net rendert meines Wissens immer nur den sichtbaren Bereich.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

V
ViperNeo Themenstarter:in
352 Beiträge seit 2008
vor 13 Jahren

es geht um ein control in einer fremden applikation. passt dein link da wirklich? konnte auf den ersten blick keinen zusammenhang finden.

4.221 Beiträge seit 2005
vor 13 Jahren

es geht um ein control in einer fremden applikation

Hmm steht das irgendwo ? falls ja, dann habe ich es überlesen.

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo ViperNeo,

um was für eine Art von Anwendung handelt es sich denn? In WPF beispielsweise kann man mithilfe von Visuals sowas erzeugen lassen, das auch in fremden Anwendungen. Meist helfen Tools wie Spy++ weiter. An dem Namen des Controls lässt es sich erkennen. Ein weiteres Tool wäre PEiD. Damit kannst du auslesen, ob die Anwendung auf .NET kompiliert ist. Das Problem ist, dass es keine universelle Lösung gibt. Je nach Plattform(WinForms, Win32, WPF, VCL, ....) musst du es anderes programmieren.

Siehe auch [Artikel] .NET Reflector.

zero_x

V
ViperNeo Themenstarter:in
352 Beiträge seit 2008
vor 13 Jahren

Ein Ziel verfolgt die Anwendung derzeit noch nicht. Ich habe das in einigen Screenshot Tools gesehen und mich gefragt, wie die das wohl machen und einfach mal versucht sowas selber zu basteln.

Was ich bislang geschafft habe ist, per EnumChildWindows mir das passende Control zu suchen und anhand des Handels kann man auf das Teil zugreifen. Bilder vom Scrollbereich machen indem ich per SendMessage einen Scroll Befehl absetze funktioniert schon, allerdings funktioniert das nicht richtig, nicht immer gleich und vorallem sehr träge und kompliziert. Daher dachte ich es gibt vielleicht eine Möglichkeit, das entsprechende Control zu klauen und in voller Größe selbst zu hosten, zu Screenshotten oder eben in einem Offset Bereich neu in voller Größe zu zeichnen und diesen dann abfotografieren.

Nur die Suche nach einem Ansatz verläuft bislang ins Leere. Würde mich echt mal interessieren wie die das machen (Beispiel SnagIt, nutzt zwei Methoden, entweder Control in der Größe anpassen oder autoamtisiertes Scrollen mit Einzel capture).

Grüße ViperNeo