Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Anwendungen ignorieren API Funktion SetCursorPos() (https://www.delphipraxis.net/80965-anwendungen-ignorieren-api-funktion-setcursorpos.html)

rhodan 18. Nov 2006 09:17


Anwendungen ignorieren API Funktion SetCursorPos()
 
moin.

hab grad erfahren das der Cursor eine shared resource ist und Windows der
API Funktion SetCursorPos() einigen Programmen (auf willen der entwickler) nicht gestattet diese ausführen zu können. Ich hab diesen Befehl nun schon in einigen Anwendungen getested und in ein paar von ihnen kann ich zwar einen mausklick simulieren, aber SetCursorpos () wird ignoriert.

Ist jemandem eine möglichkeit bekannt auch in solchen anwendungen die maus via befehlen zu bewegen, so "als würde sie per hand bewegt" ? Das wurmt mich irgendwie :?
könnte ich SendInput verwenden evtl.?

Netten Gruß aus Hamburg

Rhodan

rhodan 24. Nov 2006 08:58

Re: Anwendungen ignorieren API Funktion SetCursorPos()
 
ehh.... :coder2: zu schade ^^ :cry:

closed mal bitte

SirThornberry 24. Nov 2006 09:01

Re: Anwendungen ignorieren API Funktion SetCursorPos()
 
Könntest du eine Freewareanwendung nennen wo dem der Fall ist das SetCursorPos nicht funktioniert? Bisher hatte ich damit noch nie Probleme zumal SetCursorpos ja nicht den Cursor für die Anwendung umsetzt sondern für das gesamte Windows.

Zitat:

Ich hab diesen Befehl nun schon in einigen Anwendungen getested und in ein paar von ihnen kann ich zwar einen mausklick simulieren, aber SetCursorpos () wird ignoriert.
Du hast es in den Anwendungen getestet? Wie kann man das verstehen? Hast du in andere Anwendungen deinen Code eingeschleust welcher das ausführt?

rhodan 24. Nov 2006 14:22

Re: Anwendungen ignorieren API Funktion SetCursorPos()
 
moin.

ich habe keinen code eingeschleust...
ich habe eine einfache delphi anwendung geschrieben die, nachdem sie gestarted wird, nach 5 sekunden den cursor via SetCursorPos() auf die koordinaten 0,0 setzt. ich hab dann einfach mit ALT+TAB in meine anwendung gewechselt und nach 5 sekunden geschaut ob der cursor verschoben wird. nur bei einigen funktioniert das nicht :S

den mausklick habe ich mit
Delphi-Quellcode:
Mouse_Event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
simuliert.

freeware ist mir nichts bekannt leider :-/
aber ich würde es supergerne mal mit dem Befehl SendInput probieren, allerdings weiß ich nicht wie - die beispiele die ich gefunden habe beziehen sich eigentlich nur darauf tastendrücke zu simulieren, und keine mausbewegungen (obwohl dies laut Befehlsbeschreibung auch möglich sein soll).
hast du evtl. eine beispiel-zeile dafür wie man die maus mit SendInput ganz stumpf z.b auf Koordinate 0,0 setzt? Das wäre klasse.

Freundlichen Gruß

SirThornberry 24. Nov 2006 14:24

Re: Anwendungen ignorieren API Funktion SetCursorPos()
 
Mit SendInput hab ich mich noch nicht befasst. Allerdings kann ich mir nicht vorstellen das SetCursorPos über manchen Anwendungen nicht funktioniert. Wenn dann funktioniert es im ganzen Windows nicht oder überall, würd ich zumindest mal so fresch behaubten.

rhodan 15. Dez 2006 13:19

Re: Anwendungen ignorieren API Funktion SetCursorPos()
 
ist so nicht ganz richtig.. :)

die API SetCursorPos befindet sich ja in der User32.dll. Diese wird allerdings von DirectX anwendungen gar nicht verwendet, d.h in DirectX anwendungen funktioniert SetCursorPos auch nicht, sondern nur in OpenGL bzw. anderen grafikmodi.

Da die Anwendung in der ich den Cursor bewegen möchte allerdings auf DirectX-Basis läuft, klappt das so nicht :-/

In diesem fall sollen Mausbewegungen mit sogenannten DirectX-Pointern möglich sein, aber wie das funzt weiss ich noch nicht, hört sich aber komplizierter an :lol:

Gruß Rhodan


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