Fenster duplizieren mit C++



  • Hey liebes Forum.

    Ich wollte auf meinem Heimserver (der ohne Monitor läuft) die geöffneten Fenstertitel auf meinem PC ausgeben lassen und dann per ComboBox o.A. ein Fenster wählen und dieses dann, wie in TeamViewer, zu kopieren.

    Ist das mit einer Windows API zu lösen oder muss ich jedes Child des Fensters auslesen und dessen Größe, Font, Inhalt kopieren?
    Wenn es keine API gibt, hat vielleicht jemand einen Ansatz für mich?

    Vielen Dank im Voraus.
    Liebe Grüße DerCoder



  • Sicherlich wäre es bandbreitenschonender, wenn du nur Informationen über die Komponenten übertragen würdest, aber das dürfte mit unsäglichem Aufwand verbunden sein und scheitert natürlich immer dann, wenn ein Programm keine von der WinAPI angebotene vorgefertigten Controls verwendet, sondern beim Zeichnen selbst Regie übernimmt.

    Deswegen: einfach nur den Inhalt des Fensters als Bitmap kopieren und komprimiert versenden. Damit du nicht immer das gesamte Fenster übertragen musst kannst du den Fensterbereich in (beispielsweise) 8x8-Blöcke aufteilen und nur diejenigen übertragen, die sich seit dem letzten Mal geändert haben.
    Da es bei normalen Programmen sehr viele einfarbige Flächen gibt, lässt sich das ganz hervorragend komprimieren. Als Kompressionsalgorithmus eignet sich hier etwa LZO.

    Ich habe das auch mal auf diese Weise implementiert und es funktioniert sehr gut - außer wenn du z.B. ein Foto mit dem Bildbetrachter öffnest, dann stockt das ganze erstmal (wenn deine Internetverbindung nicht besonders schnell ist). Aber dafür ist die Methode mit der verlustfreien Komprimierung mit wenig Aufwand verbunden.



  • Vielen Dank für deine Antwort.
    Dein Vorschlag mit den Bitmaps klingt auf jeden Fall Bandbreiten schonender, als das Fenster zu kopieren.
    Wie regelst du das, dass, wenn sich ein Bereich des Fensters ändert, nur diesen Teil in ein Bitmap zu packen und zu versenden?
    Kannst du mir vielleicht deine Implementierung schicken? Kenne mich mit Bitmaps in C++ noch nicht so gut aus und würde mir das gerne mal ansehen.

    Vielen Dank und einen schönen Tag noch 🙂



  • Standard-C++ kennt keine Fenster, Bitmaps, Comboboxen...
    Ich denk mal du wolltest ins WinAPI-Forum, bitte demnächst selbstständig das richtige Forum raussuchen!



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten