Remote Desktop Programm mit C#?

2 Antworten

Ich bezweifle ganz stark, dass ein RDP-Klon mit C# und WPF innerhalb zwei Wochen ein geeignetes Schulprojekt ist O.o

Was soll das Programm können?

Wenn es wirklich ein RDP-Klon sein soll, glaube ich nicht, dass es dafür gute Frameworks gibt - zumindest kenne ich keins.

Wenn ich es von 0 aufbauen müsste, würde ich es wie folgt machen:

Die Anwendung auf dem Remote-PC filmt den Bildschirm. Einfacher wäre denke ich alle paar Millisekunden ein Bild. Das überträgst Du dann zum PC des Anwenders und zeigst es dort an. Maus-Bewegungen und Tastatusanschläge übermittelst Du umgekehrt zum Remote-PC.

Screenshots dürften einfach sein. Das Übertragen von Daten dürfte am einfachsten mit WCF laufen. Zum Abfangen von Tastatur und Maus gibt's verschiedene Möglichkeiten, die kleinlichste Option wäre die WinAPI. Simulieren kannst Du die dann wiederum ebenfalls mit der WinAPI, die PostMessage-Funktion dürfte passen.

===========

So ganz grob umrissen, wie man es machen könnte, wenn man kein Framework nutzt.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler
Palladin007  04.05.2019, 20:32

PS:

Ansonsten musst Du suchen.

Allerdings kann es gut sein, dass Du dafür wenig Dokumentation findest, da es keine wirklich weit verbreitete Anforderung ist.

Du hast also nur die Möglichkeit, Beispiele zu suchen (auf GitHub suchen kann viel wert sein), oder Du experimentierst und schaust, was klappt und was nicht.

1
AmpferTv 
Fragesteller
 04.05.2019, 20:47

Ich verstehe, was du meinst und ja deine Aussage klingt plausibel, bzw. ich könnte das schon so vlt. machen und nein es muss nich exakt ein Klon von RDP sein, die Funktion sollte einfach sein: Client1 gibt die IP des Servers bzw. des anderen Clients ein und den Port über den der Server/Client2 zuhört (und das in einer GUI) und der Server gibt einen Port ein, über den er zuhört bzw., den er öffnen möchte, und klickt dann auf Bildschirm anzeigen/Port öffnen, und dann öffnet sich der gewählte Port, und sobald Client1 dann auch verbinden klickt soll bei Client2 das Bild/Desktop von Client1 angezeigt werden und Client2 soll wieder rum dann auf Client1 arbeiten können (Bzw. klicken und Tastatureingaben)

Ich hoffe du verstehst was ich meine

0
Palladin007  04.05.2019, 22:15
@AmpferTv

Schüler? Demnach vermutlich Anfänger?
Versteh mich nicht falsch, aber ich halte das für unrealistisch :D Also nicht enttäuscht sein, wenn's nicht klappt.

=================

Ich hab noch nie ein Bild gestreamt, daher musst Du da selber Mal schauen, wie Du ein Bild von einem PC zum Anderen live streamen kannst. Wenn das nicht klappt, kannst Du ja immer noch die Screenshots machen.

WCF erleichtert dir die ganze Kommunikation zwischen zwei Prozessen bzw. Computern enorm. Beachte aber, wenn Du HTTP nutzt, musst Du die URL im Windows registrieren (CMD mit Admin-Rechten: netsh http add urlacl)

Windows-Messages abfangen geht mit der WinAPI: SetWindowsHookEx
Windows-Messages simulieren geht mit WinAPI: PostMessage

So oder so ähnlich funktioniert auch jedes andere RDP-Programm, mit ein paar anderen Funktionen, wie z.B. dass nur die Änderungen im Bild übertragen werden, das erspart Traffic.

=================

Bei WPF solltest Du auf MVVM setzen, das erspart viel Stress.

0
AmpferTv 
Fragesteller
 05.05.2019, 09:54
@Palladin007

naja Schüler ja und Änfänger würde ich nicht sagen, Python programmiere ich berreits seit 5-6 Jahren aber c# halt "erst" sein 2-3 Jahren, und gefühlt ist das 10 mal so umständlich wie python und ja, und naja mal schauen

0

Hier ist ein vllt ein Einstieg (auch wenn es WinForms ist)

https://www.youtube.com/watch?v=2sCpd1HEMZw

https://www.youtube.com/watch?v=mRKFdL5eG1I

Dazu müsstest du dir u.U. einen Zweiten Stream für die Inputdevices machen.

Woher ich das weiß:Berufserfahrung – Senior-Softwaredeveloper mit 20 Jahren Berufserfahrung.
AmpferTv 
Fragesteller
 05.05.2019, 10:57

hab ich auch schon gesehen aber soviel ich mitbekommen habe funktionieren da die meisten Bibliotheken nicht... also in WPF

0
AmpferTv 
Fragesteller
 05.05.2019, 11:07

oke mir fällt gerade auf dass man da garnicht sieht welche Bibliotheken er einbindet bzw. verzeichnisse, hast du da eine Ahnung ? weil auch in Windows Forms funktioniert das nicht...

0
WitchHunter0815  05.05.2019, 15:11
@AmpferTv

Soweit ich das sehe benutzt der nur Net:

System.Drawing;
System.Drawing.Imaging;
System.Net;
System.Net.Sochets;

1
WitchHunter0815  05.05.2019, 15:35
@WitchHunter0815

Ach ja und er nutzt noch Windows.Forms für die Screen.Bounds.
Und mal abgesehen davon, du benötigst doch Client und Server ... und wenn der Client WPF ist geht das schon, denn er bekommt ja nur das Bild als Stream ...

1