![]() |
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:... |
Re: Mauszeiger global kurz ändern
mit
Delphi-Quellcode:
?? :roll:
Uses windows;
begin SetSystemCursor(hicon,Id); end; |
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:... |
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
![]() so mach ich das auch, genauso bei dyna-loads, nur halt mit dem integrierten Disassebler von PE-E |
Re: Mauszeiger global kurz ändern
Hi,
richt dir da nicht ein einfaches
Delphi-Quellcode:
? :gruebel:
Screen.Cursor := crHourGlass;
Chris |
Re: Mauszeiger global kurz ändern
Zitat:
...:cat:... |
Re: Mauszeiger global kurz ändern
Das hab ich auch vermutet, daher der Hinweis auf SetSystemCursor ;)
|
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?
|
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? |
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:
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.
var
cursor_backup: HCursor; begin cursor_backup := GetCursor; SetSystemCursor(Screen.Cursors[crNo], OCR_NORMAL); // ... SetSystemCursor(cursor_backup); end; 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