AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Änderungen des Desktops abfangen...
Thema durchsuchen
Ansicht
Themen-Optionen

Änderungen des Desktops abfangen...

Ein Thema von earlyperl · begonnen am 30. Mai 2004 · letzter Beitrag vom 30. Aug 2004
Antwort Antwort
earlyperl

Registriert seit: 30. Mai 2004
6 Beiträge
 
#1

Änderungen des Desktops abfangen...

  Alt 30. Mai 2004, 17:28
Hat jemand ne Ahnung, wie ich den Desktop in einem Image darstellen kann??
Bei Änderungen z.B. Mausbewegung soll nur die tatsächliche Änderung an das Image übertragen werden, nicht der ganze Desktop.

Für ein konkretes Beispiel währe ich sehr Dankbar, da das bisher nicht so mein Gebiet war.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#2

Re: Änderungen des Desktops abfangen...

  Alt 29. Aug 2004, 13:40
  • Schreib einen Mirror-Driver (sicher nicht in Delphi - geht ab NT 4) und so wirst du benachrichtigt.
  • Schau in die Sourcen von VNC, sort wird u.a. mit Hooks gearbeitet um bei bestimmten Fensternachrichten zu aktualisieren
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Änderungen des Desktops abfangen...

  Alt 29. Aug 2004, 14:15
Ich nehme mal an, dass der im Image gezeigte Desktop nicht auf dem PC sein soll, dessen Desktop gerade gezeigt wird, oder? Also etwas in Richtung PC-Anywhere?

Dazu, und auch zum Übertragen von Bilddifferenzen hatten wir hier schon mehrmals Threads. Einfach mal die Suche bemühen. Stichwort für die Bilddifferenz: xor
Und Screenshot-Code haben wir glaub ich auch irgendwo hier rumliegen, oder sonst mal torry oder google. Gesehen hab ich sowas schon mal...

gruss,
dizzy

\\edit: @Assarbad: Die Sache mit dem Treiber ist aber auch unnötig kompliziert... Wenn man in einem Thread mit niedriger Priorität fortwährend aufeinanderfolgende Screenshots vergleicht, dann merkt man auch wenn sich etwas verändert hat. Das langt alle Male.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#4

Re: Änderungen des Desktops abfangen...

  Alt 29. Aug 2004, 21:36
Zitat von dizzy:
\\edit: @Assarbad: Die Sache mit dem Treiber ist aber auch unnötig kompliziert... Wenn man in einem Thread mit niedriger Priorität fortwährend aufeinanderfolgende Screenshots vergleicht, dann merkt man auch wenn sich etwas verändert hat. Das langt alle Male.
Keine Frage, allerdings treibt dies die CPU-Last unnötig in die Höhe. Und zwar immens. Will heißen, auf deinem (vermutlich sehr modernen Rechner) wird das gehen, bei vielen (zB geschäftlichen Kunden mit alten Rechnern) hingegen nicht.

Screenshots: http://assarbad.net/stuff/screenshotclass.zip
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Änderungen des Desktops abfangen...

  Alt 30. Aug 2004, 03:15
Zitat von Assarbad:
Keine Frage, allerdings treibt dies die CPU-Last unnötig in die Höhe. Und zwar immens. Will heißen, auf deinem (vermutlich sehr modernen Rechner) wird das gehen, bei vielen (zB geschäftlichen Kunden mit alten Rechnern) hingegen nicht.
Damit hast du Recht. Bei meiner Lösung müsste man bei nicht so schnellen PCs einen Kompromiss zwischen Aktualisierungsintervall und CPU-Schonung schließen. Wobei man ja Windows diese Kompromissschließung machen lassen kann, in dem man das alles in einen Thread niedriger Priorität packt
Ansonsten könnte es äusserst ungemütlich werden eine Veränderung im Bild zu bemerken. Rein über Messages und Hooks wird das nicht gehen, da z.B. beim Ablaufen einer Animation wohl nix ausgelöst wird. Da müsste man dann wirklich sehr low-level dran.

Zitat von Assarbad:
Ach du warst das Ja schau an!
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#6

Re: Änderungen des Desktops abfangen...

  Alt 30. Aug 2004, 07:08
Zitat von dizzy:
Ansonsten könnte es äusserst ungemütlich werden eine Veränderung im Bild zu bemerken. Rein über Messages und Hooks wird das nicht gehen, da z.B. beim Ablaufen einer Animation wohl nix ausgelöst wird. Da müsste man dann wirklich sehr low-level dran.
Stimmt. Daher gibt es so optimierte Lösungen wie RADMIN (basierend auf einem Mirror-Treiber) oder UltraVNC (auch) mit welchen Man schon fast alte Shooter über Netz spielen kann
Animationen (oder auch selbstgezeichnete Controls die nicht bei WM_PAINT feuern) werden von Hooks eben nicht erkannt - und bei nem Treiber ist es wie aufm Bildschirm - feuert bei WM_PAINT nix, sieht man es zB auch in der Terminalsession nicht *g*

Habs mal mit Quake 2 versucht. Ist seeeeehr langsam aber funzt prinzipiell.
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#7

Re: Änderungen des Desktops abfangen...

  Alt 30. Aug 2004, 08:57
Ich würde auch sagen, wozu das Rad neu erfinden.

Ein Mirror-Driver nutzendes VNC ist doch optimal. Und wenn du irgendwelche Sonderfunktionen benötigst -> VNC ist opensource.

Ausserdem (soweit ich weiss) kannst du eine Plugin-DLL (mit Delphi) schreiben, die die Datenübertragung Client <-> Server behandelt - falls das der Grund sein sollte, weswegen du eigene Software entwickelst.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz