Einzelnen Beitrag anzeigen

Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Kleinere Probleme!Indy Komponente Serversocket/Clinetsoc

  Alt 1. Apr 2008, 22:10
Hey FileOwner!

Als ich deinen Post gelesen hab, musste ich irgendwie an mein Programm denken das macht eigentlich genau das was du programmieren willst. (www.lan-fs.de)

Vielleicht ein paar Tipps:

Zitat:
1. Ich möchte den Pc fernsteuern und deshalb brauche ich immer eine "live" übertragung vom Desktop ich bräuchte ausserdem die funktion dass, wenn ich zb auf das image klicke ( zb den start button), dass dort dann auch ein klick auf dem Remote PC ausgeführt wird.
Also das "klicken" auf dem remote computer ist noch das einfachste an der Geschichte mit dem Remote Desktop. Da gibt es die Funktionen

Delphi-Quellcode:
    SetCursorPos(x,y);
    mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
Damit wäre die Geschichte abgehakt.
Interessanter ist die Frage

Wie schaffe ich eine Bildübertragung die möglichst in Echtzeit arbeitet

Wenn du hier im Forum ließt, findest du jede menge leute, die versuchen, eine Bildübertragung mit 25 fps zu erzeugen. Um ehrlich zu sein, bin ich froh, dass Lan.FS mit (ja nach dem, wieviel Bildinhalt sich ändert) 1-4 fps arbeitet.

Grundsätzlich musst du dir überlegen:

- Übertrage ich alle Bildinformationen, sprich das ganze Bild jedes mal neu? -> niedrige Übertragungsgeschwindigkeit

- Suche ich die Teile eines Bildes, die sich im Gegensatz zum vorherigen Bild geändert haben -> hohe CPU last.

- Komprimiere ich die Bildinformationen? -> png -> schnellere Übertragung, mehr CPU last

Lan.FS verwendet Windows Bildverarbeitungsroutinen, die (soweit ich das weiß) direkt auf der Grafikkarte arbeiten und daher relativ flott sind:

Delphi-Quellcode:
BOOL BitBlt(
  HDC hdcDest, // handle to destination DC
  int nXDest, // x-coord of destination upper-left corner
  int nYDest, // y-coord of destination upper-left corner
  int nWidth, // width of destination rectangle
  int nHeight, // height of destination rectangle
  HDC hdcSrc, // handle to source DC
  int nXSrc, // x-coordinate of source upper-left corner
  int nYSrc, // y-coordinate of source upper-left corner
  DWORD dwRop // raster operation code
);
Zitat:
2. Ich möchte ausserdem die Command Shell von windows einbinden bzw über den Client den "Server/RemotePC steuern"
Dafür musst du dir ansehen, wie man die cmd.exe piped, dazu empfehle ich dir:
http://www.delphipraxis.net/internal...t=cmd+umleiten.

Delphi-Quellcode:
3. Ich möchte Dateien austauschen. Ich stelle mir das so vor:
Ich sehe ein feld auf dem Alle festplatten mit unterordnern etc. gelistet werden. ich möchte dateien down und uploaden könen.
Sorry, wenn ich mich irre, aber das hört sich nach dem Lan.FS Commander an

Hier musst du dir so eine Art eigenen Verzeichnisbaum erzeugen. Wie man Dateien auflistet, findest du hier im Forum. Die Informationen musst du dann einfach in einem geeigneten Format speichern und übertragen.

Alles in Allem solltest du aber die Sache anders angehen. Du brauchst erstmal eine Basis zum Datenübertragen. (In meinem Fall wäre das der Lan.FS Kernel). Das ist die Schnittstelle zwischen deinem Programmteilen wie Remote Desktop und Command Shell und dem Internet/Netzwerk.

Der Lan.FS Kernel arbeitet so, dass er sich komplett um die Datenübertragung kümmert. D.h. im Programm rufst du nur noch eine Procedure auf:

Delphi-Quellcode:
LANFSPACKAGE:=LanfsKernel.CreatePackage(Daten, RemoteIp, etc);
LanfsKernel.AddDataToQueue(LANFSPACKAGE);
Ich hoffe, ich konnte dir ein bisschen weiterhelfen. Die Sache ist relativ komplex. Ich würde dir empfehlen, erstmal mit einer Art Kernel anzufangen, denn ein solides Grundgerüst ist das wichtigste!
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat