Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mouse Global verstecken? (https://www.delphipraxis.net/138033-mouse-global-verstecken.html)

schwa226 2. Aug 2009 17:51


Mouse Global verstecken?
 
Hi,

ich versuche gerade die Mouse global zu verstecken. Ich habe es geschafft ein Transparenten/Leeren Cursor zu erzeugen.
Wenn ich nun mit SetSystemCursor versuche den Cursor zu ersetzten ist der neue Cursor nur über meiner Form!

Ich will ihn aber überall vertecken?

Delphi-Quellcode:
OldCursor := Screen.Cursors[Screen.Cursor];

NewCursor := LoadCursorFromFile(PWideChar('c:\crEmpty.cur'));

SetSystemCursor(NewCursor, OCR_NORMAL);
EDIT:
kann gelöscht werden!!!!
Fehler war: beim RemoteDebugen habe ich nicht neu compeliert ;)

mkinzler 2. Aug 2009 17:57

Re: Mouse Global verstecken?
 
Warum das?

DeddyH 2. Aug 2009 17:58

Re: Mouse Global verstecken?
 
Sry, aber eine Anwendung, die mir den Mauszeiger global ausblendet, würde ich genau 2 mal einsetzen, nämlich das erste und das letzte Mal.

himitsu 2. Aug 2009 18:16

Re: Mouse Global verstecken?
 
abgesehn davon, daß man den Cursor auch einfach ausblenden kann und ihn nicht über einen unsichtbaren Cursor verstecken muß ...

@DeddyH ... keine Sorge, SetSystemCursor setzt diesen ja nur temporär ... beweg die Maus einfach etwas und sobald du über ein anderes Fensterkommt, setzt diese wieder ihren Cursor :angel:

DeddyH 2. Aug 2009 18:18

Re: Mouse Global verstecken?
 
Es ging mir mehr um die Intention dieses Threads unabhängig von der Machbarkeit.

schwa226 2. Aug 2009 19:13

Re: Mouse Global verstecken?
 
Mein Programm macht Autostart und da möchte ich die Mouse verstecken.
Wird die Mouse bewegt wird sie wieder angezeigt. Nach einem Timeout wieder ausgeblendet.

Nun habe ich aber eh Probleme:

Delphi-Quellcode:

var
OldCursor : TCursor;
NewCursor : HCursor;

const
  // Yin cursor AND bitmask
  ANDmaskCursor: array[0..127] of byte = (
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
    );

  // Yin cursor XOR bitmask
  XORmaskCursor: array[0..127] of byte = (
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00,
    $00, $00, $00, $00, $00, $00, $00, $00
    );


OldCursor := Screen.Cursor;

  // Create a custom cursor at run time.
  NewCursor := CreateCursor(HInstance, 19, 2, 32, 32, @ANDmaskCursor, @XORmaskCursor);

SetSystemCursor(NewCursor, OCR_NORMAL);
Nun ist die Mouse versteckt.

Aber wenn ich nun per
Delphi-Quellcode:
SetSystemCursor(OldCursor, OCR_NORMAL);
versuche ihn wieder zu restoren, bleibt er versteckt?

Luckie 2. Aug 2009 19:31

Re: Mouse Global verstecken?
 
Zitat:

Zitat von schwa226
Mein Programm macht Autostart und da möchte ich die Mouse verstecken.
Wird die Mouse bewegt wird sie wieder angezeigt. Nach einem Timeout wieder ausgeblendet.

Es wurde nach dem WARUM gefragt. Denn was soll der Blödsinn?

himitsu 2. Aug 2009 19:40

Re: Mouse Global verstecken?
 
auch wenn du nun einen "unsichtbaren" Mauszeiger hast ... kennst du schon Delphi-Referenz durchsuchencrNone? :angel2:

schwa226 3. Aug 2009 09:25

Re: Mouse Global verstecken?
 
Es handelt sich um einen Shell-Ersatz!
Da will ich die Mouse verstecken und bei bewegung halt wieder anzeigen.

crNone geht nur mit Screen.Cursor. Das wirkt sich dann jedoch nur auf die Form aus.
Diese deckt den Bidschirm aber nicht vollständig ab :(

Das die Mouse global nicht zu sehen ist hat bis jetzt nur mit SetSystemCursor funktioniert.

Das zurückholen halt aber noch nicht so ganz!

R2009 3. Aug 2009 09:58

Re: Mouse Global verstecken?
 
Hi Luckie,

wir betreiben bei uns Echtzeitsysteme bei denen die Maus nicht benutzt wird.
Zu diesem Zweck wird die Maus komplett (über Alles) abgeschaltet. Das macht unser Entwickler aber über die Treiber.
Es bringt allerdings nichts das Ding einfach zu verstecken. In unserem System stört schon die Bewegung des
Mauszeigers, eine Bedienung wird (zumindest auf dem Server) nicht vorgenommen.

Es ist also nicht alles Blödsinn nur weil man es aus seinem eigenen Teller nicht erkennen kann.

Viele Grüsse


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 Uhr.
Seite 1 von 2  1 2      

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