Announcement

Collapse
No announcement yet.

Abfangen, wenn Windows den Bildschirm neu zeichnet?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abfangen, wenn Windows den Bildschirm neu zeichnet?

    Hi,
    bin jetzt schon den ganzen Nachmittag in Google unterwegs, aber komm nicht so recht vorwärts. Ziel ist eine Art Fernwartungstool, allerdings etwas spezieller - also was eigenes. Derzeit schon lauffähig, wobei alle 500ms ein Screenshot des kompletten Bildschirms gemacht und über's Netzwerk verschickt wird. Dass das nicht gerade schön aussieht und in Sachen Performance und Geschwindigkeit nicht sehr schön ist kann man sich vorstellen.

    Die Kernfrage ist nun: Windows weiß ja, welche Teile des Bildschirms neu gezeichnet werden müssen - Stichwort: InvalidateRect. Es gibt doch sicher ein Event, das da ausgelöst wird wie etwa WM_Paint, über das ich dann ermitteln kann welcher Teil des Bildschirms neu gezeichnet wurde, damit ich eben nur diese Bildschirmteile über's Netzwerk schicken muss. Ich müsste da ja nach dem Repaint des fraglichen Bildschirmbereichs ansetzen. Dass man dafür nen globalen Hook braucht steht außer Frage, nur was genau muss gehooked werden? Jemand Erfahrung mit sowas? Wäre super wenn mir da jemand nen Tip geben könnte.

    Besten Dank schon mal

  • #2
    Hast du dir eigentlich schon mal in den Quellcode eines Open-Source-Tools wie VNC geschaut um zu sehen wie die das dort machen?

    Comment


    • #3
      WM_PAINT kommt auch sehr oft wenn theoretisch nichts neu zu zeichnen ist. Das Problem hatten die ersten Versionen des Citrix ICA Protokols. Man konnte mit Excel den Citrix Client in den Flickertod stürzen. WM_PAINT ist zumindest in der naivsten Variante eine Sackgasse.

      Wenn du die Standardprotokolle wie VNC, RDP etc. nicht benutzen willst solltest du doch zumindest raus finden können welche Techniken/Tricks die anwenden.

      Comment


      • #4
        Danke schon mal für die Antworten. Standard-Protokolle zu nutzen klappt leider nicht so ganz. RDP wäre super, fällt aber aus dem Rahmen, weil man sich ohne Rückfrage beim Benutzer über das Netzwerk mit auf die Sitzung schalten können soll und weil es am anderen Ende ne Übersicht geben soll wo die Bildschirme als kleine Thumbnails dargestellt werden - dafür ist allerdings bei MS zu wenig dokumentiert (oder ich hab schlicht einfach nichts gefunden). VNC fällt wegen den Lizenzmodellen flach: Open-Source wäre ok, aber nichts virales wie GPL, weil das Endprodukt Closed-Source sein muss (ist ne Vorgabe - wir wollen halt den Code nicht unbedingt offenlegen müssen obwohl das Programm wohl kostenlos werden wird; zumindest gewisse Teile nicht ). VNC hatte ich mir schon kurz angeschaut, aber nachdem ich gesehen hab, dass es über Treiber gemacht wird hatte ich es - vielleicht vorschnell - wieder abgehakt, weil das Programm auch ohne Installation auskommen soll. Danke für den Denkanstoß

        Comment


        • #5
          fällt aber aus dem Rahmen, weil man sich ohne Rückfrage beim Benutzer über das Netzwerk mit auf die Sitzung schalten können soll
          So was wollen Chefs immer. Heimliches beobachten ist aber trotzdem nicht zulässig. Viel Spaß mit Betriebsräte, Gewerkschaften und dem Gesetzgeber

          Comment


          • #6
            http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx

            iVm BeginPaint
            Christian

            Comment


            • #7
              Danke Christian, bin da auch schon drüber gestolpert, aber BeginPaint und EndPaint beziehen sich eher auf die einzelnen Programmfenster - ich brauch den ganzen Bildschirm.

              Und Ralf, ich kann dich beruhigen. Du hast vollkommen recht, was das heimliche beobachten in Firmen angeht - da kriegt man schnell böse eins auf die Finger. Das Tool soll allerdings dann später nur an Schulen eingesetzt werden als pädagogisches Hilfsmittel. Da gibt's auch schon andere Tools, die sowas können. Und im didaktischen Umfeld einer Schule ist sowas auch rechtlich anders gelagert.

              Comment

              Working...
              X