![]() |
Strecke, die die Maus zurücklegt messen
ich möchte was kleines progen, was die entfernung misst, die die maus zurücklegt (in metern). wie stelle ich das an?
Grüße, dopeline |
Hab mal nen bissle gesucht, also hier in der DP, und hab da was gefunden wo zwei unterschiedliche Lösungsansätze gezeigt werden:
![]() Wenn du nicht weiterkommst dann melde dich. |
Was der Antirassist nur überlesen hat: "(in metern)"
Das ist ohne weiteres nicht möglich, weil der Cursor auf dem Bildschirm ja nicht den Bewegungen der Maus auf dem Tisch entspricht, sondern durch die Geschwindigkeitseinstellungen im Treiber beschleunigt oder verlangsamt werden. Dann gibt es noch eine nette Sache namens Mausbeschleunigung, die eine sinnvolle Messung der Strecke der Maus auf dem Schreibtisch per Software schlichtweg unmöglich macht, wenn man nicht die genauen Daten der Beschleunigungskurve im Treiber hat. Und da darf man den Treiberhersteller fragen, ob der antwortet, ist was anderes... Aber theoretisch (ohne Beschleunigung) müsste man das Programm vorher kalibrieren, z.B. den Anwender auffordern 10 cm abzufahren und gucken, wieviele Pixel das waren und dann immer damit rechnen. Wie's aber mit Hooks aussieht, wenn der Cursor am Bildrand ist und er noch weiter vom Bildschirm wegbewegt wird, weiß ich nicht. Wahrscheinlich wird das dann aber abgeschnitten, Fehlbereiche würden also wieder nicht in der Messung sein. |
ich habe ein programm installiert (workrave) das misst die arbeitszeit am computer und mach noch ein paar sachen. unteranderem zeigt er die zurückgelegte entfehrnung (der maus auf dem bildschirm und der maus in echt auf dem tisch) in metern, die zeit, wieviel/wielange die maus bewegt wurde, mausklicks und tastenanschläge. und alles in echtzeit (aktuallisiert sich alle halbe sekunde)
und wie machen die das? das muss doch auch irgentwie mit delphi gehen! Gruß, dopeline |
Ich denke mal, das Programm misst die Bewegung des Mauszeigers am Bildschirm. Das wäre nicht so problematisch zu realisieren.
mfg Daniel [EDIT]Sorry hab das mit der Entfernung am Monitor und der Entfernung am Tisch überlesen. Also war das ein relativ sinnloses Posting[/EDIT] |
Evtl, aber wirklich nur vielleicht, geht das über DirectInput.
Aber davon habe ich zu wenig Ahnung von nativem DirectX, um dir sagen zu können ob das geht und womit genau... |
Man kann aber die zurückgelegte Strecke in Pixel in Meter umrechnen.
|
Warum das nicht geht, habe ich versucht zu erklären:
Man weiß nicht wieviel ein Pixel in Metern ist. Dieser Wert hängt von verschiedenen Einstellungen ab, zu denen man nicht immer Zugang hat. |
Ich meine im Petzold steht drin, wie es geht. Ich habe ihn nur leider nicht zur Hand.
|
IMHO nur möglich wenn man einen eigenen Maustreiber programmiert. Kann auch nur eine Art Miniport sein, welcher das dann an den Orginaltreiber weiterreicht, aber jedenfalls sind die Probleme da, welche von tommie-lie beschrieben wurden, solange man "oberhalb" des Treibers arbeitet (also etwas allgemeiner: im Usermode).
@Luckie: Damals gab es IMHO noch keine Treiber mit Beschleunigungsfunktion. |
OK, ich gebe mich geschlagen.
|
Dann schnapp' ihn dir mal.
Ich brauche es zwar, nicht, aber es würde mich interessieren, wie sowas geht. Immerhin dürfte schon die Kurve der Beschleunigung schwierig genug sein, auch noch dafür zu sorgen, daß wenn die Maus über den Rand hinausgeschoben wird, man die Strecke erfassen kann, müsste genau auf den Maustreiber abgestimmt sein, der von Nagetier zu Nagetier anders ist. edit: mist, umsonst geschrieben. Ich sollte mir angewöhnen meine Beiträge genauso kurz zu fassen wie Luckie, dann brauch' ich nicht so lange dazu... :roll: |
Zitat:
|
Moin dopeline,
Zitat:
Hast Du die Angaben des Programmes mal nachgemessen, und weisst, dass sie stimmen? |
Re: Strecke, die die Maus zurücklegt messen
ich hol den Thread mal wieder hoch...mir würde es zum beispiel reichen nur die zurückgelegte strecke in pixeln (habbich als Integer vorliegen) in meter umzurechnen...
dafür brauche ich ja offensichtlich die info, mit wieviel dpi der monitor läuft...wir komm ich da dran? |
Re: Strecke, die die Maus zurücklegt messen
und wieviel Zentimeter der Maus wieviel Pixel entsprechen.
Am besten nachmessen! ;-) Das funktioniert natürlich dann nur bei deinem PC. Ach, und der Monitor sollte mit 96dpi laufen. (Eigenschaften von Anzeige -> Einstellungen -> Erweitert) |
Re: Strecke, die die Maus zurücklegt messen
Vielleicht hilft dir GetDeviceCaps (HORZSIZE bzw. VERTSIZE) oder DEVMODE (dmYResolution) weiter.
LG, ich |
Re: Strecke, die die Maus zurücklegt messen
also wenn ich nur die strecke will, die der mauszeiger aufm bildschirm zurücklegt....da könnte ich ja Screen.PixelsPerInch nehmen...oder?
stimmen diese umrechnungssachen?
Delphi-Quellcode:
{ *** Umrechnen ***}
function Inch2MM(Val: Extended):Extended; begin Result:=Val*25.4 end; function MM2Inch(Val: Extended):Extended; begin Result:=Val/25.4 end; function Px2Inch(Val: Int64):Extended; begin Result:=Val/Screen.PixelsPerInch; end; function Inch2Px(Val: Extended):Int64; begin Result:=Round(Val*Screen.PixelsPerInch); end; function Px2MM(Val: Int64):Extended; begin Result:=Inch2MM(Val/Screen.PixelsPerInch); end; function MM2Px(Val: Extended):Int64; begin Result:=Round(MM2Inch(Val)*Screen.PixelsPerInch); end; { *** Ende Umrechnen *** } |
Re: Strecke, die die Maus zurücklegt messen
Zitat:
Lass vom Benutzer einen Streifen von 100 Pixeln länge abmessen, dann weißt du, wieviele Zentimeter hundert Pixel sind nd kannst damit rechnen. Eine andere Möglichkeit existiert nicht und kann auch nicht existieren. |
Re: Strecke, die die Maus zurücklegt messen
Andererseits: Warum stimmt es dann z.B. bei Word? Wenn man da 100% einstellt, dann kann man ein Blatt Papier vor den Bildschirm halten und es geht sich genau aus...
Edit: @glkgeron: Die Umrechnungen stimmen glaube ich so weit, nur die letzten beiden würde ich etwas anders machen:
Delphi-Quellcode:
LG
function Px2MM(Val: Int64):Extended;
begin Result:=Inch2MM(Px2Inch(Val)); end; function MM2Px(Val: Extended):Int64; begin Result:=Inch2Px(MM2Inch(Val)); end; |
Re: Strecke, die die Maus zurücklegt messen
Zitat:
Zitat:
|
Re: Strecke, die die Maus zurücklegt messen
Zitat:
|
Re: Strecke, die die Maus zurücklegt messen
ich hab nen ganz normalen monitor (also ich denk mal 4:3) und ne auflösung von 1280:1025 (5:4)
das format stimmt!!! |
Re: Strecke, die die Maus zurücklegt messen
Zitat:
|
Re: Strecke, die die Maus zurücklegt messen
Vielleicht geht das ganze auf die native Auflösung (zumindestens bei TFTs). Das kann man ja als Standard verwenden und dem Benutzer anbieten, es genau zu justieren...
|
Re: Strecke, die die Maus zurücklegt messen
Zitat:
ja, auch die höhe stimmt (also ich hab A5 genommen, und dann die breite on A4, sind ja identisch) |
Re: Strecke, die die Maus zurücklegt messen
Hallo!
[quote="glkgereon"] ja, auch die höhe stimmt (also ich hab A5 genommen, und dann die breite on A4, sind ja identisch) [quote] Wenn das schon mal klappt, dann müßte sich die Problemstellung des Threads hier lösen lassen. Mit den Umrechnungsformeln, die glkgereon hier aufzeigt, dürfte dann alles geklärt sein. Bei Verwendung einer anderen Auflösung ändert sich ja auch der Wert für PixelsPerInch. Gruß schöni |
Re: Strecke, die die Maus zurücklegt messen
HiHo,
Ihr redet hier doch von zwei verschiedenen Paar Schuh'! Die einen wollen berechnen, wie viele Meter/Pixel sich der Mauszeiger auf dem Bildschirm bewegt hat. Die anderen wollen aber wissen, wieviel meter sich das Hardwaregerät "Maus" auf seinem Pad bewegt hat. Dass zweiteres ungleich schwieriger ist, dürfte klar sein. Ich hoffe, dass ich mich nicht selbst verlesen habe, sondern zum Problemlösen beitragen konnte. lG, hanselmansel P.S.: Ich habe mal in so nem' Tutorial etwas mit Mausgeschwindigkeit gesehen. Habe aber keine Zeit es durchzulesen. Hier der ![]() |
Re: Strecke, die die Maus zurücklegt messen
Zitat:
ich möchte die Strecke auf dem Bildschirm haben... |
Re: Strecke, die die Maus zurücklegt messen
Die Frage ist nun, ob du die Strecke brauchst, die der Zeiger auf der Form zurücklegt (= einfach), oder die Strecke die der im Lauf der Windows-Session auf dem gersamten Bildschirm zurücklegt (= nicht mehr ganz so einfach...)?
|
Re: Strecke, die die Maus zurücklegt messen
also, ich denk mal, die strecke, die der zeiger auf dem bildschirm während der gesamten windows session zurück legt (was mich auch interessieren würde).
MfG - Ghost007 [EDIT] also meine frage: wie rechne ich die pixel, in zurückgelegte cm auf dem bildschirm um? [/EDIT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz