Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Maus über LAN (https://www.delphipraxis.net/125721-maus-ueber-lan.html)

BasicX 10. Dez 2008 13:32


Maus über LAN
 
Hi,
habe versucht ein Programm zu schreiben, das es ermöglicht die Maus eines PCs über das Netzwerk zu steuern. Meine Funktion funktioniert auch soweit, nur dass die Positionierung auf dem 2. PC recht ruckhaft ist (kahm so auf 3 pro Sekunde). Nun meine Frage: wie kann ich das schneller hinbekommen? Der von mir genutzte Code ist folgender:

Absendender PC:
Code:
Procedure Tform1.sendposi(Sender: TObject; var Done: Boolean);
var
  MausPos : TPoint;
    diffx, diffy : integer;
begin
  getcursorpos(MausPos);
  if form2.Visible then
  begin
    diffx := Mauspos.X - floor(screen.Monitors[0].Width/2);
    diffy := Mauspos.Y - floor(screen.Monitors[0].Height/2);
    if (diffx <> 0) or (diffy <> 0) then
      IdTCPClient1.Socket.WriteLn(inttostr(diffx) + ',' + inttostr(diffy));
    SetCursorPos(floor(screen.Monitors[0].Width/2), floor(screen.Monitors[0].Height/2));
  end;
end;
(Application.OnIdle := sendposi;) aber auch mal als Timer getestet

Empfänger:
Code:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  clienttext: String;
  ar: TStringdynArray;
  x,y,nx,ny: Integer;
  point: TPoint;
begin
  with AThread.Connection do begin
    clienttext := ReadLn();
    if clienttext <> 'click' then begin
      ar := Explode(',',clienttext);
      x := StrToInt(ar[0]);
      y := StrToInt(ar[1]);
      GetCursorPos(point);
      nx := point.X+x;
      ny := point.Y+y;
      SetCursorPos(nx,ny);
      //Label1.Caption := 'X' + IntToStr(x);
      //Label2.Caption := 'Y' + IntToStr(y);
    end
    else
    begin
      mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
      mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    end;
  end;
 
end;
Bin für alle Anregungen dankbar

lg BasicX

Bernhard Geyer 10. Dez 2008 13:36

Re: Maus über LAN
 
Verwende mal UDP statt TCP.

Valle 10. Dez 2008 13:39

Re: Maus über LAN
 
  • ich glaube, dass UDP an dieser Stelle besser ist (bitte berichtigen, falls das falsch ist)
  • vielleicht statt ständigem Polling einen Mouse-Hook verwenden?
  • Das Komma kann man sich evtl. sparen, indem man einfach die zwei Integer als record überträgt, da diese ja sowieso eine feste Länge haben

Ich weiß nicht, ob du das weißt, aber es gibt schon einige Software die sowas macht. Synergy ist ein sehr schönes Tool für solche Aufgaben. Vielleicht ist es aber auch dein Ziel, selbst was zu machen, ich weiß es ja nicht. ;-)

Mit freundlichen Grüßen,

Valle

BasicX 10. Dez 2008 13:42

Re: Maus über LAN
 
UDP werde ich gleich mal testen.

Wenn das Programm fertig is, soll man mit einer maus quasi über die Bilschirmgrenzen fahren können. Außerdem "Selber denken macht schlau"...

Kalfany 10. Dez 2008 14:02

Re: Maus über LAN
 
Zitat:

Zitat von BasicX
UDP werde ich gleich mal testen.

Wenn das Programm fertig is, soll man mit einer maus quasi über die Bilschirmgrenzen fahren können. Außerdem "Selber denken macht schlau"...

das ist eig. genau das was synergy macht (bei interesse mal auf sourceforge suchen) ... nur das es auf dem VNC Protokoll aufbaut womit wir schon beim thema wären, ich würde bei sowas auch auf das VNC Protokoll aufbaun, denn früher oder später kommen dann so sachen wie Zwischenablage oder Dateitransfer dazu und das ist bei VNC schon alles mit "drin" genauso wie die verschiedenen komprimierungsalogs usw...

das einzige was mich momentan bei synsergy stört sind ein paar bugs die ziemlich nervig sind (zb. der das die STRG-Taste "hängen" bleibt) fehlender dateitransfer über die zwischenablage ...

BasicX 10. Dez 2008 20:12

Re: Maus über LAN
 
Zitat:

Zitat von Kalfany
das ist eig. genau das was synergy macht (bei interesse mal auf sourceforge suchen) ... nur das es auf dem VNC Protokoll aufbaut womit wir schon beim thema wären, ich würde bei sowas auch auf das VNC Protokoll aufbaun, denn früher oder später kommen dann so sachen wie Zwischenablage oder Dateitransfer dazu und das ist bei VNC schon alles mit "drin" genauso wie die verschiedenen komprimierungsalogs usw...

Wie ich schon sagte, selber denken macht schlau^^, das ist auch hauptsächlich nen Projekt aus der Informatik-AG so als mal "Nice to have". Fertige Progs downloaden kann ja (fast) jeder.

Aber trotzdem danke für den Tipp

lg BasicX

PS: DP ist echt ein geniales Forum... Eine Antwort nach 2 Mins, das ist echt mega genial... Danke
PSS: läuft 100 % flüssig, danke [sollte eig kein Doppelpost werden oO]


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 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