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 Mauszeiger global kurz ändern (https://www.delphipraxis.net/20745-mauszeiger-global-kurz-aendern.html)

sakura 22. Apr 2004 14:35


Mauszeiger global kurz ändern
 
Hi DPler,

es ist Zeit, daß ich mal wieder doof frage :stupid: Ich dachte, wir hatten es hier schon mal, bin aber nicht fündig geworden :roll:

Ihr kennt es ja bestimmt von Outlook Express, wenn man eine neue Email erhält, ändert sich der Mauszeiger kurzzeitig - egal in welcher Anwendung ich mich gerade befinde.

Wie kann ich gleiches für meine Anwendung erreichen?

...:cat:...

The-X 22. Apr 2004 16:53

Re: Mauszeiger global kurz ändern
 
mit
Delphi-Quellcode:
Uses windows;

begin
SetSystemCursor(hicon,Id);
end;
?? :roll:

sakura 22. Apr 2004 17:02

Re: Mauszeiger global kurz ändern
 
Damit muss ich aber alle möglichen Cursor ändern und wenn eine Anwendungen einen eigenen definiert, kann ich den nicht kurzfristig "übergehen"

...:cat:...

The-X 22. Apr 2004 17:09

Re: Mauszeiger global kurz ändern
 
Andernfalls ;) mal eben den MSOE durch den PE-Explorer von Heaventools jagen und guggn ob da bei den Importen ne andere Api-Funktion ist als SetSystemCursor

PE-Explorer

so mach ich das auch, genauso bei dyna-loads, nur halt mit dem integrierten Disassebler von PE-E

CalganX 22. Apr 2004 17:11

Re: Mauszeiger global kurz ändern
 
Hi,
richt dir da nicht ein einfaches
Delphi-Quellcode:
Screen.Cursor := crHourGlass;
? :gruebel:

Chris

sakura 22. Apr 2004 17:16

Re: Mauszeiger global kurz ändern
 
Zitat:

Zitat von Chakotay1308
Hi,
richt dir da nicht ein einfaches

Das gilt nur für die Anwendung und nicht global für alle Anwendungen...

...:cat:...

The-X 22. Apr 2004 17:22

Re: Mauszeiger global kurz ändern
 
Das hab ich auch vermutet, daher der Hinweis auf SetSystemCursor ;)

muRR 18. Mai 2006 20:46

Re: Mauszeiger global kurz ändern
 
Sorry, dass ich so ein altes Thema ausgrabe, aber ich habe dasselbe Problem. SetSystemCursor ist nicht sehr befriedigend. Gibt es heute eine hilfreiche API-Funktion dazu?

muRR 19. Mai 2006 20:54

Re: Mauszeiger global kurz ändern
 
*PUSH*
Ich hab mir ansonsten überlegt, den DC des Mauscursors zu überzeichnen (DrawIconEx,...) - was allerdings einer neuen Frage bedürfte. Kennt niemand eine einfachere Lösung?

blackdrake 21. Nov 2008 18:45

Re: Mauszeiger global kurz ändern
 
Hallo.

Ich möchte vorrübergehend den Mauszeiger in crNo ändern. Es scheint aber hierfür keine Lösung zu geben.

Folgender Code, den ich so ähnlich im Internet fand:

Delphi-Quellcode:
var
  cursor_backup: HCursor;
begin
  cursor_backup := GetCursor;
  SetSystemCursor(Screen.Cursors[crNo], OCR_NORMAL);

  // ...

  SetSystemCursor(cursor_backup);
end;
Das große Problem: SetSystemCursor verändert direkt den Zeiger und überschreibt diesen. Wenn die Anwendung abstürzt, dann hat der Benutzer ein schönes crNo als Standardmauszeiger - das hat irgendwie was :roll: . Das cursor_backup wird übrigens auch nicht zurückgespielt. Der Cursor bleibt auf crNo.

SetCursor() verändert hingegen nur innerhalb der Anwendung. Ist also auch nichts. Tippe ich im Notepad, bleibt der Cursor beim Windows-Standard?

Außerdem habe ich den Effekt, dass ich innerhalb der WndProc den Mauszeiger nicht so einfach verändern kann, da er durch die anderen Ereignisse in kürzester Zeit wieder rückgängig gemacht wird.

Gibt es einen Befehl, der bewirkt, dass ich Systemweit auf OCR_NO umstelle? Ich denke, OCR_NORMAL zu überschreiben ist ein falscher und unsauberer Weg.

Es kann doch irgendwie nicht sein, dass Microsoft nicht daran gedacht hat, den Mauszeiger global zu verändern, ohne das man alle Standardtypen überschreibt... :|

Gruß
blackdrake


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 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 by Thomas Breitkreuz