Autor Beitrag
arcitC|Crash
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Do 04.08.05 19:40 
Der Quellcode:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.btnMousectrClick(Sender: TObject);
var MousePos : TPoint;
begin
  lbMousectr.caption := 'Mousecontroling is activated';
  Repeat
  MousePos := Mouse.CursorPos;
  Client.Socket.SendText(INTtoSTR(MousePos.x + MousePos.y));
  until lbMousectr.Caption = 'No Controling';
end;

procedure TForm1.btnStopMousectrClick(Sender: TObject);
begin
  lbMousectr.Caption := 'No Controling';
end;


Auf jeden Fall: Sobald ich bei meinem Programm auf den "Start Mousecontrol" klicke, bleibt es hängen und ich muss es über Prozesse rausschmeißen...

Es scheint wohl sehr an der Schleife zu liegen, denn ohne die Repeat-Anweisungen gibt es keine Programmabstürze.
Allerdings, wenn man die Cursorpositionen per "Showmessage" anzeigen lässt, geht es, allerdings kann man das Programm nicht mehr beenden, da ja andauernd die Dialogboxen sind, die man voher wegklicken muss :D
Auf jeden Fall: Sobald ich bei meinem Programm auf den "Start Mousecontrol" klicke, bleibt es hängen und ich muss es über Prozesse rausschmeißen...
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Do 04.08.05 20:19 
Das ist ein typischer Fall von Endlosschleife. Du könntest aber z.B. in die Schleife den Befehl Application.ProcessMessages; einsetzen, damit würde dein Programm aber immer noch sehr viel CPU-Auslastung haben. Ich würde dir folgendes Vorschlagen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.btnMousectrClick(Sender: TObject);
var MousePos : TPoint;
begin
  lbMousectr.caption := 'Mousecontroling is activated';
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if lbMousectr.caption = 'Mousecontroling is activated' then begin
    Client.Socket.SendText(INTtoSTR(x) + ',' + INTtoSTR(y));
  end;
end;

procedure TForm1.btnStopMousectrClick(Sender: TObject);
begin
  lbMousectr.Caption := 'No Controling';
end;

Die Koordinaten werden in dem Moment gesendet, in dem die Maus bewegt wird.
arcitC|Crash Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Do 04.08.05 21:20 
Hammer geil! Wunderschön :) Danke!

Edit: Aber...jetzt fällt mir auf, wie soll ich das denn beim Server auswerten?
Normalerweise würd eich das ja so machen, das das x in var x und y in var y gespeichert wird. Dann steht da der Befehl: SetCursorPos(x,y)
Aber das geht ja nicht, weil beim Server kommt ja nicht mehr x + y an, sondern schon die entsprechenden Werte oder?
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Do 04.08.05 22:01 
es kommt ein text an den du wieder asuwerten musst und den kannste mit strtoint und copy wieder umwandeln das du dann wieder SetCursorPos benutzen kannst

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
arcitC|Crash Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Do 04.08.05 22:10 
Wenn ich das so mach
ausblenden Delphi-Quelltext
1:
SetCursorPos(STRtoINT(RecText));  //RecText = der erhaltene Text					


Dann bekomme ich die Meldung: [Fehler] server.pas(59): Nicht genügend wirkliche Parameter
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Fr 05.08.05 10:40 
ausblenden Delphi-Quelltext
1:
Client.Socket.SendText(INTtoSTR(x) + ',' + INTtoSTR(y));					


d.h. die werte sind durch kommata getrennt
der text siehst also in etwa so aus:

ausblenden Delphi-Quelltext
1:
2:
t := '320,240';
SetCursorPos(strtointdef(copy(t,1,pos(',',t)-1),0),strtointdef(copy(t,pos(',',t)+1,length(t)),0));


so sollte es aussehen (ungetestet)
vielleicht solltest dir vorher mal das
www.christian-stelzm...rtikel/crashkurs.htm
anschaun

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
arcitC|Crash Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Fr 05.08.05 12:15 
Noe, habs grade ausprobiert, funktioniert nicht
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Fr 05.08.05 12:19 
ich berichtige bestimmt jetzt nicht die fehler, bischen eigeninitiative solltest schon zeigen - ansonsten schau dir erstmal den crashkurs delphi an, vielleicht hilft dir das

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
arcitC|Crash Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Fr 05.08.05 12:24 
Ja bin schon bei Kapitel 3 oder 4...
arcitC|Crash Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Fr 05.08.05 13:30 
Es klappt doch!!!! danke!!