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!