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 ausblenden (per Hook) (https://www.delphipraxis.net/19562-mauszeiger-ausblenden-per-hook.html)

SirThornberry 5. Apr 2004 14:15


Mauszeiger ausblenden (per Hook)
 
Vor einigen Tage habe ich ja schon gefragt wie man den mauszeiger in seiner gesammten Anwendung (also auch den ganzen unterforms) ausblendet und das ergebnis war das man mir einen mousehook nahegelegt hat. Jetzt hab ich meine Mausereignisse threadlokal gehookt und steh nun vor dem problem welche message ich rausfiltern muss bzw. wie es überhaupt funktioniert den mauszeiger über hook nicht nicht zeichnen zu lassen.

Assarbad 27. Apr 2004 12:56

Re: Mauszeiger ausblenden (per Hook)
 
Wer hat denn den Quark erzählt? Das einzige was ginge, sobald der Hook ne Nachricht bekommt, bekommt deine Anwendung ne Message den Mauszeiger zu verstecken. Ansonsten dienen Fensterhooks zur Unterbrechung der Nachrichtenverarbeitung oder einfach um Informationen über die Nachrichtenverarbeitung zu sammeln. Sie können nicht aufgerufen werden oder aktiviert werden o.ä.

Ich könnte mir noch vorstellen, daß SystemParametersInfo() dir so eine Möglichkeit bietet ... aber wahrscheinlich eher nicht.

Mauszeiger verstecken geht eben aus gutem Grund nur pro Fenster ;)

Muetze1 27. Apr 2004 12:57

Re: Mauszeiger ausblenden (per Hook)
 
Moin!

Reicht nicht auch einfach ein
Delphi-Quellcode:
Screen.Cursor := crNone
im Code?

MfG
Muetze1

Assarbad 27. Apr 2004 13:12

Re: Mauszeiger ausblenden (per Hook)
 
Pro Fenster ja, wie gesagt.

Muetze1 27. Apr 2004 14:15

Re: Mauszeiger ausblenden (per Hook)
 
Moin!

Zitat:

Zitat von Assarbad
Pro Fenster ja, wie gesagt.

Sicher? Bei Cursor := crNone ist es logisch - das würde dann nur den Cursor der Form verändern. Screen.Cursor gilt aber für die gesamte App und damit sollte es für die App getan sein.

Und selbst wenn es nur für's Fenster gilt - ist ja nicht so schwer eine Iteration über alle Forms des Application Objektes zu machen...

MfG
Muetze1

hitzi 27. Apr 2004 14:27

Re: Mauszeiger ausblenden (per Hook)
 
Hallo,

Delphi-Quellcode:
screen.cursor := crNone
gilt nur für das Fenster in welchen der Code ausgeführt wurde. Selbst wenn in dem Fenster ein anderes Fenster per OLE eingebunden ist (z.B. TWebbrowser) funktioniert dieser Code für dieses eingebundene Fenster nicht mehr.

Nochmal zur Erklärung
Delphi-Quellcode:
cursor := crNone
gilt für die jeweilige Komponente (in dem Fall Form1)
Delphi-Quellcode:
screen.cursor := crNone
gilt für die gesamte Form (nicht die gesamte Applikation) inklusive aller Komponenten (mit Ausnahmen -> siehe oben)


MfG Hitzi

fiasko 27. Apr 2004 14:27

Re: Mauszeiger ausblenden (per Hook)
 
Probier mal:

Delphi-Quellcode:
ShowCursor(false);

hitzi 27. Apr 2004 14:32

Re: Mauszeiger ausblenden (per Hook)
 
Das funktioniert über das gesamte Programm ohne Ausnahme :thuimb:

MfG Hitzi

SirThornberry 27. Apr 2004 15:08

Re: Mauszeiger ausblenden (per Hook)
 
Jipp, danke *knuddel* Genau das hab ich gesucht - wie kann ich nur danken *freu*

fiasko 27. Apr 2004 15:10

Re: Mauszeiger ausblenden (per Hook)
 
Kauf mir'n Eis 8)

Assarbad 27. Apr 2004 15:14

Re: Mauszeiger ausblenden (per Hook)
 
Okay, pro Prozess nicht pro Fenster, mein Fehler. Die Tatsache, daß es jedoch nicht systemweit ging, sollte u.a. veranschaulichen, daß ein Hook wohl kaum die Lösung sein kann.

SirThornberry 27. Apr 2004 15:23

Re: Mauszeiger ausblenden (per Hook)
 
Das eis ist doch geschmolzen bis die post es gebracht hat

Logic 18. Aug 2004 22:53

Re: Mauszeiger ausblenden (per Hook)
 
ShowCursor(false);
Form1.cursor := crNone;

gehen bei mir, nur wenn ich in meinen Button dann die Umkehrung

ShowCursor(true);
Form1.cursor := crDefault;

in eine selbstgeschrieben Procedure einbaue klappt es nicht... er zeigt den Mauszeiger nicht wieder an... es klappt nur wenn ich persönlich auf einen Button klicke.. wenn ich es "digital" per Button1.Click(Sender); mache dann gehts nicht

mfg
Logic

SirThornberry 18. Aug 2004 23:21

Re: Mauszeiger ausblenden (per Hook)
 
geht es wenn du
Delphi-Quellcode:
Form1.cursor := crNone;
und
Delphi-Quellcode:
Form1.cursor := crDefault;
weg lässt auch nicht?

Logic 18. Aug 2004 23:26

Re: Mauszeiger ausblenden (per Hook)
 
Zitat:

Zitat von SirThornberry
geht es wenn du
Delphi-Quellcode:
Form1.cursor := crNone;
und
Delphi-Quellcode:
Form1.cursor := crDefault;
weg lässt auch nicht?

Also ich habe alle 4 Kombinationen schon durchprobiert und es klappt nicht.

SirThornberry 18. Aug 2004 23:33

Re: Mauszeiger ausblenden (per Hook)
 
Also bei mir gehts. Hab folgendes gemacht
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowCursor(False);
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  ShowCursor(True);
end;
Was ich auch festgestellt hab ist das wenn ich "ShowCursor(False)" 3 mal aufrufe, dann auch 3 mal "ShowCursor(True)" aufrufen muss damit er wieder sichtbar wird. Vielleicht liegt ja da irgendwo dein Fehler.

Logic 18. Aug 2004 23:40

Re: Mauszeiger ausblenden (per Hook)
 
Ich habe bei mir jetzt auch einen Termin eingebaut... genau mit den gleichen Befehlen, nur er will einfach nicht. Es geht irgendwie nur, wenn ich "persönlich" auf den Button klicke... gibts noch eine dritte Möglichkeit den Mauszeiger zu verstecken?

SirThornberry 18. Aug 2004 23:42

Re: Mauszeiger ausblenden (per Hook)
 
Hast du bei dem Timer im Objectinspektor auch Enabled auf "False" gesetzt sonst wird beim starten des Programmes ja schon das erste mal die OnTimer-Procedure nach der entsprechenden Zeit aufgerufen.
Oder versuch das ganze einfach nochmal in einem neuen Project.

Logic 18. Aug 2004 23:50

Re: Mauszeiger ausblenden (per Hook)
 
Zitat:

Zitat von SirThornberry
Hast du bei dem Timer im Objectinspektor auch Enabled auf "False" gesetzt sonst wird beim starten des Programmes ja schon das erste mal die OnTimer-Procedure nach der entsprechenden Zeit aufgerufen.

ja
Zitat:

Zitat von SirThornberry
Oder versuch das ganze einfach nochmal in einem neuen Project.

Getan und da gings, also bin ich mal wieder nach einer Dummheit von mir auf die Suche gegangen... und habe sie entdeckt... war in der falschen procedure... sorry

SirThornberry 18. Aug 2004 23:52

Re: Mauszeiger ausblenden (per Hook)
 
*lol* na wenigstens hast du den Fehler gefunden und hast dein Ziel jetzt erreicht.

Logic 18. Aug 2004 23:55

Re: Mauszeiger ausblenden (per Hook)
 
ja, nervt nur immer, wenn man dadurch Zeit verliert....


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