ERLEDIGT:Mausbewegung abfragen
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
ERLEDIGT:Mausbewegung abfragen
Hallo,
ich wollte ein Programm machen,welches ein anderes Programm ausführt.
Aber es soll nur dann Passieren,wenn Man 5 Minuten Lang die Maus nicht bewegt hat.
Aber das Programm soll nur im Hintergrund laufen.
Das heist:
irgendwie muss das Programm auf eine Mausbewegung lauschen.
Bitte helft mir!
ich wollte ein Programm machen,welches ein anderes Programm ausführt.
Aber es soll nur dann Passieren,wenn Man 5 Minuten Lang die Maus nicht bewegt hat.
Aber das Programm soll nur im Hintergrund laufen.
Das heist:
irgendwie muss das Programm auf eine Mausbewegung lauschen.
Bitte helft mir!
Zuletzt geändert von ts230 am So 11. Jan 2009, 19:47, insgesamt 1-mal geändert.
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
Re: Mausbewegung abfragen
Das ist afaik nicht einfach und nur für jede Plattform separat zu lösen. MouseHook oder so.
Da musst du wahrscheinlich das API der Zielplattform studieren.
Da musst du wahrscheinlich das API der Zielplattform studieren.
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Mausbewegung abfragen
Wenn deine eigene Anwendung kein Sichtbaes Fenster hat, brauchst du nen Hook, wie theo schon sagt.
Es ist nicht wahnsinnig schwer, zumindest unter Windows aber man muss sich etwas damit beschäftigen. Ich empfehle dir da folgendes Tutorial, falls du unter windows arbeitest:
http://www.michael-puff.de/Developer/De ... torial.pdf" onclick="window.open(this.href);return false;
Es ist nicht wahnsinnig schwer, zumindest unter Windows aber man muss sich etwas damit beschäftigen. Ich empfehle dir da folgendes Tutorial, falls du unter windows arbeitest:
http://www.michael-puff.de/Developer/De ... torial.pdf" onclick="window.open(this.href);return false;
Johannes
- Garfield
- Beiträge: 173
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: Mausbewegung abfragen
Man könnte periodisch kontrollieren, ob sich die Position des Cursors geändert hat. (Screen.Cursor.Position)ts230 hat geschrieben:Das heist:
irgendwie muss das Programm auf eine Mausbewegung lauschen.
Sonst eventuell etwas in diese Richtung: http://www.delphi-forum.de/topic_Mausbe ... 85794.html" onclick="window.open(this.href);return false; oder http://www.bome.com/delphi/watch/" onclick="window.open(this.href);return false;
Gruß Garfield
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: Mausbewegung abfragen
Gabs da nicht eine Unit mouse beim FPC?
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Mausbewegung abfragen
Gut.
Ich werd mal schaun was ich machen kann.
Wenn es geht,poste ich es hier.
Ich werd mal schaun was ich machen kann.
Wenn es geht,poste ich es hier.
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Mausbewegung abfragen
Ich habe es so gemacht:
Dieser Timer checkt jede Sekunde nach,ob die Maus bewegt wurde.
Und wenn das 300 Sekunden lang der Fall war das nichts bewegt wurde,
startet das Programm.
Schaut bitte mal durch.
Code: Alles auswählen
procedure TForm1.Timer2Timer(Sender: TObject);
VAR
ex:TProcess;
begin
if mp = Mouse.GetMouseX + Mouse.GetMouseY then
begin
if momo = 300 then
begin
ex:=TProcess.Create(Form1);
ex.CommandLine:='"'+ini.ReadString('load','file','')+'"';
Timer1.Enabled:=false;
ex.Execute;
ini.Free;
close;
end;
momo:=momo + 1;
mp:=Mouse.GetMouseX + Mouse.GetMouseY;
end
else
begin
momo:=0;
mp:=Mouse.GetMouseX + Mouse.GetMouseY;
end;
end;
Und wenn das 300 Sekunden lang der Fall war das nichts bewegt wurde,
startet das Programm.
Schaut bitte mal durch.
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Mausbewegung abfragen
Ok,
ich hab jetzt rausgefunden dass die Variable mp immer 0 ist

Ich hab jetzt ausgetestet,
und ist irgendwie 0.
Ich mach ja auch im onCreate Ereigniss
Bitte helft mir!
ich hab jetzt rausgefunden dass die Variable mp immer 0 ist


Ich hab jetzt ausgetestet,
und
Code: Alles auswählen
Mouse.DetectMouse
Ich mach ja auch im onCreate Ereigniss
Code: Alles auswählen
Mouse.InitMouse();
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
Re: Mausbewegung abfragen
Ich kenn mich damit nicht aus, aber ist die unit mouse nicht für textmode Anwendungen gedacht?
Würde mich echt wundern, wenn man damit an Windows oder X vorbeimäuseln könnte.
Würde mich echt wundern, wenn man damit an Windows oder X vorbeimäuseln könnte.
- Garfield
- Beiträge: 173
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: Mausbewegung abfragen
Versuch es mal damit:
Ich weiß allerdings nicht, in welcher Unit die function deklariert ist. Ergebnistyp ist Boolean.
Code: Alles auswählen
var
tp : TPoint;
...
GetCursorPos(tp);
Code: Alles auswählen
function GetCursorPos; external user32 name 'GetCursorPos';
Gruß Garfield
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Mausbewegung abfragen
http://www.libsearch.lazarusforum.de/se ... s&search=1" onclick="window.open(this.href);return false;
Johannes
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Mausbewegung abfragen
Ich habs jetzt mit
probiert krige aber Folgenden Fehler:
ERROR:Only class methods can be refered with class references
FATAL:There were 1 Errors compiling module,stopping
Code: Alles auswählen
tp:=TMouse.CursorPos;
ERROR:Only class methods can be refered with class references
FATAL:There were 1 Errors compiling module,stopping
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Mausbewegung abfragen
Hallo ts,ts230 hat geschrieben:Ich habs jetzt mitCode: Alles auswählen
tp:=TMouse.CursorPos;
kann es sein, dass du dich bisher noch nicht sonderlich oft mit objektorientierter Programmierung beschäftigt hast? Bei dem obigen Codefetzen habe ich nämlich das Gefühl.
Das solltest du unbedingt nachholen, ansonsten kommst du mit der Programmierung wirklich nicht weit! Schau dir bitte mal das hier an:
http://www.delphi-treff.de/sprachen/obj ... entierung/" onclick="window.open(this.href);return false;
http://www.delphi-treff.de/sprachen/obj ... truktoren/" onclick="window.open(this.href);return false;
http://www.delphi-treff.de/sprachen/obj ... f-objekte/" onclick="window.open(this.href);return false;
Dann weißt du, wie du mit der Klasse TMouse umgehen musst - und allgemein wie man mit Objekten und Klassen umgeht und wirst von den von dir beschriebenen Problemen befreit sein. Es hilft dir selbst also am meisten weiter, wenn du dich da mal einließt. Ich vertraue einfach mal darauf, dass du das machst.
Habe dir hier Musterlösungen zur Bestimmung der Mausposition erstellt:
1. Mausposition über TMaus:
Code: Alles auswählen
procedure TForm1.Button2Click(Sender: TObject);
var Maus:TMouse;
P:TPoint;
begin
Maus := TMouse.Create;
P:= Maus.CursorPos;
Form1.Caption:=IntToStr(P.X) + ' : ' + IntToStr(P.Y);
Maus.Free;
end;
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var P:TPoint;
begin
GetCursorPos(P);
Form1.Caption:=IntToStr(P.X) + ' : ' + IntToStr(P.Y);
end;
Im ersteren Fall musst du im uses-Bereich die unit controls, im zweiten Fall die unit lclintf hinzufügen. Wie bekommt man raus, welche unit man in den uses-Bereich einfügen muss? Durch die geniale Libsearch von monta:
http://libsearch.lazarusforum.de" onclick="window.open(this.href);return false;
Wichtiger als das Wissen über die Handhabung von Lazarus ist das Wissen darüber, wie man Wissen erwirbt.
In diesem Sinne
Euklid
- Garfield
- Beiträge: 173
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: Mausbewegung abfragen
Jetzt habe ich es mal ausprobiert.
- Dateianhänge
-
Mausposition.7z
- (2.31 KiB) 130-mal heruntergeladen
Gruß Garfield