AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maus über LAN

Ein Thema von BasicX · begonnen am 10. Dez 2008 · letzter Beitrag vom 10. Dez 2008
Antwort Antwort
BasicX

Registriert seit: 19. Sep 2007
Ort: Celle
30 Beiträge
 
Delphi 2007 Professional
 
#1

Maus über LAN

  Alt 10. Dez 2008, 13:32
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Maus über LAN

  Alt 10. Dez 2008, 13:36
Verwende mal UDP statt TCP.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#3

Re: Maus über LAN

  Alt 10. Dez 2008, 13:39
  • 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
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
BasicX

Registriert seit: 19. Sep 2007
Ort: Celle
30 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Maus über LAN

  Alt 10. Dez 2008, 13:42
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"...
  Mit Zitat antworten Zitat
Kalfany

Registriert seit: 28. Feb 2008
Ort: München
153 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Maus über LAN

  Alt 10. Dez 2008, 14:02
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 ...
  Mit Zitat antworten Zitat
BasicX

Registriert seit: 19. Sep 2007
Ort: Celle
30 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Maus über LAN

  Alt 10. Dez 2008, 20:12
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]
  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 22:49 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