Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Maus an Position x positionieren (https://www.delphipraxis.net/69148-maus-position-x-positionieren.html)

Zidane 10. Mai 2006 21:34


Maus an Position x positionieren
 
Hallo,

ich möchte die Maus beim Start der Anwendung an einer bestimmten Stelle positionieren.

Kann man dies irgendwie durch x und y Variablen ermöglichen und muss man zB die Formblattbreite und -höhe berücksichtigen?

Danke und viele Grüße,

Zidane

Matze 10. Mai 2006 21:36

Re: Maus an Position x positionieren
 
Hi,

Bildschirmweit geht es mit Delphi-Referenz durchsuchenSetCursorPos.

Edit: Ich hoffe du meinst den Cursor. Die Maus kann man glaube ich ohne weiteres nicht per Software verschieben. :stupid:

lizardking 10. Mai 2006 21:59

Re: Maus an Position x positionieren
 
Zitat:

Zitat von Matze
Edit: Ich hoffe du meinst den Cursor. Die Maus kann man glaube ich ohne weiteres nicht per Software verschieben. :stupid:

Das wird bewusst verhindert, weil es ein Sicherheitsrisiko darstellen wuerde. Wie leicht waere es sonst, sowas zu machen :

Delphi-Quellcode:
  Mouse.PhysicalPos := MeimChefSeineKaffeeTasse.Pos;
;-)

gfjs 11. Mai 2006 04:35

Re: Maus an Position x positionieren
 
OT :-D

@ lizardking

Zitat:

Mouse.PhysicalPos := MeimChefSeineKaffeeTasse.Pos;
Hab's ausprobiert!

Fehlermeldung: unbekannter Bezeichner 'MeimChefSeineKaffeTasse' (bairisch!)

Gruß aus München

Jürgen

marabu 11. Mai 2006 05:53

Re: Maus an Position x positionieren
 
Guten Morgen.

So geht es:

Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
var
  pt: TPoint;
begin
  with DemoButton do
    pt := Point(Left + Width shr 1, Top + Height shr 1);
  Mouse.CursorPos := ClientToScreen(pt);
end;
Grüße vom marabu

Mackhack 11. Mai 2006 06:18

Re: Maus an Position x positionieren
 
Für was ist denn dieses Shr gut. Ich sehe das in so vielen Codes hier dass ihr mit dem Shr arbeitet!

marabu 11. Mai 2006 06:22

Re: Maus an Position x positionieren
 
Blöde Angewohnheit von mir aus längst vergangenen Assembler-Zeiten. SHR ist der Mnemo-Code für Shift Right und richtig angewandt enstpricht die Verschiebung um 1 Bit nach rechts einer Ganzahldivision durch 2. Aber schau ruhig mal in die Online-Hilfe.

Freundliche Grüße vom marabu

Muetze1 11. Mai 2006 06:23

Re: Maus an Position x positionieren
 
shr = shift right.

Binäres bitweises verschieben der Bits nach rechts. Die Bit die rechts rausfallen gehen verloren (im Gegensatz zu rotate right) und links werden die freien Bits mit 0 aufgefüllt.

Shr 1 wäre in diesem Falle ein schnellere ganzzahlige Division durch 2.

shr x => div 2^x

Aber nur bei ganzzahligen Werten.

/EDIT: trotz rotem Kasten gepostet, da etwas ausführlicher

Mackhack 11. Mai 2006 06:24

Re: Maus an Position x positionieren
 
Danke euch beiden! Hab zwar in der hlp schonmal nachgesehen, dass es aber einer Ganzzahldivision durch 2 gleichkommt wusste ich nicht - jetzt schon!

Luckie 11. Mai 2006 07:07

Re: Maus an Position x positionieren
 
Und noch zur Ergänzung: Die Shift Operatioenen sind performanter als die Multiplikationen oder Divisionen, weil ja eigentlich gar nicht gerechnet wird. ;)

Mavarik 11. Mai 2006 08:05

Re: Maus an Position x positionieren
 
Zitat:

Zitat von gfjs
OT :-D

Hab's ausprobiert!

Fehlermeldung: unbekannter Bezeichner 'MeimChefSeineKaffeTasse' (bairisch!)

Gruß aus München

Jürgen

OT!!

Klar der Aufruf ist ja auch falsch!

Must Du mal googeln... Geht so:

Delphi-Quellcode:

Var
  Physicalenv : IPhysical;
  Gravi      : TVectoredGravitation;
  MouseEX    : TExtMouseevents;

begin
  Pysicalenv.Queryinterface(IDM_MYWORLD,IID_GRAVITATION,true,Gravi); // holt sich das Interface
  MouseEx := (Mouse as TExtMouseevents);

  // Bewegung vorbereiten...
  Gravi.Orgin := Vector3d(-10,15,-5); // Import aus DirectX hierbei wird angenommen, dass die Tasse rechts/hinter der Maus steht (alle Angaben in INCH!!!)
  Gravi.strength := 3; // Angaben in N
                                     
  MouseEx.Hand.Ontop := false;
 
  Gravi.Enabled := true;
  delay(1000);          // sollte eigentlich für alle Mouse funktionieren. Die Bewegung dauert ca. eine Sekunde...
  Gravi.Enabled := false;

  Messagedlg('Ätsch',mtinformation,[mbok]);
  Gravi := NIL;
   
end;
Die genau Position für den 3D Vector könnte ggf. noch über die WebCam ermittelt werden, aber ich habe da nix gefunden...

:dancer: Frank :dancer2:

TeronG 11. Mai 2006 08:13

Re: Maus an Position x positionieren
 
lol ^^ erster post (nach Frage) richtige Antwort und der rest alles OT ^^ na wenn das mal kein Mod sieht ^^

Zidane 11. Mai 2006 14:43

Re: Maus an Position x positionieren
 
Zitat:

Zitat von TeronG
lol ^^ erster post (nach Frage) richtige Antwort und der rest alles OT ^^ na wenn das mal kein Mod sieht ^^

Genau! :D

Aufjedenfall herzlichen Dank, war genau das was ich suchte! ;)

(Wobei sich das mit der Kaffeetasse auch nicht schlecht anhört! :p)

Danke und viele Grüße,

Zidane


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