2013-02-22 12 views
9

OS wechsle ich die Cursor in allen Fenstern ändern muß, nicht nur in der Anwendung, habe ich dies versuchen:Wie kann ich den Cursor (Bild) in dem gesamten Fenster

this.Cursor = Cursors.WaitCursor; 

Und:

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; 

Aber es ändert nur den Cursor in meiner Anwendung.

Irgendeine Idee?

+3

ich sauer sein würde, eine Anwendung zu verwenden, die das Verhalten oder die Wiedergabe von meinen anderen Anwendungen ändern. Vor allem ohne mich zuerst zu fragen! – Guillaume

Antwort

9

Vorausgesetzt, dass Sie Ihre eigenen Cursor-Datei (CUR) bewerben Sie könnte dies hacken.

Zuerst müssen Sie den Standardpfeil Cursor in der Registrierung ändern, dann müssen Sie einige P-Invoke aufrufen, damit das Betriebssystem die aktuellen Systemparameter aktualisiert, so dass sich der Cursor ändert.

Somthing wie:

private void ChangeCursor(string curFile) 
    { 
     Registry.SetValue(@"HKEY_CURRENT_USER\Control Panel\Cursors\", "Arrow", curFile); 
     SystemParametersInfo(SPI_SETCURSORS, 0, null, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE); 
    } 

    const int SPI_SETCURSORS = 0x0057; 
    const int SPIF_UPDATEINIFILE = 0x01; 
    const int SPIF_SENDCHANGE = 0x02; 

    [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")] 
    public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, uint? pvParam, uint fWinIni); 

Verbrauch:

ChangeCursor(@"C:\MyCursor.cur"); 
+1

Ich erhalte eine Marshal DirectiveException: Kann 'Parameter # 3' nicht marshallen: Generische Typen können nicht gemarshallt werden. Warum passiert dies? –

+2

Das einzige Problem war das? bei: nicht? pvParam –

+0

ahhh .. ja dumme mich :(, ich habe nie den Code zuerst getestet, mein schlechtes. –

1

Sie können den Cursor des gesamten Betriebssystems nicht ändern, ohne die Registrierung zu ändern.

Sie müssen die Registrierung ändern, um den Cursor zu ändern.

Sehen Sie hier für ein Tutorial und die genauen Registry Schlüssel, die Sie ändern müssen - programmgesteuert.

http://www.thebitguru.com/articles/14-Programmatically+Changing+Windows+Mouse+Cursors

+0

+1 Dies ist die WTG, der API-Aufruf, den ich erwähne, dient zum Einstellen anderer Einstellungen der Systemsteuerungsplatine - nicht das Symbol. –

1
[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")] 
public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref uint pvParam, uint fWinIni); 

public enum SystemParametersInfoAction : uint 
    { 
     SPI_GETBEEP = 0x0001, 
     SPI_SETBEEP = 0x0002, 
     SPI_GETMOUSE = 0x0003, 
     SPI_SETMOUSE = 0x0004, 
     SPI_GETBORDER = 0x0005, 
     SPI_SETBORDER = 0x0006, 
     SPI_GETKEYBOARDSPEED = 0x000A, 
     SPI_SETKEYBOARDSPEED = 0x000B, 
     SPI_LANGDRIVER = 0x000C, 
     SPI_ICONHORIZONTALSPACING = 0x000D, 
     SPI_GETSCREENSAVETIMEOUT = 0x000E, 
     SPI_SETSCREENSAVETIMEOUT = 0x000F, 
     SPI_GETSCREENSAVEACTIVE = 0x0010, 
     SPI_SETSCREENSAVEACTIVE = 0x0011, 
     SPI_GETGRIDGRANULARITY = 0x0012, 
     SPI_SETGRIDGRANULARITY = 0x0013, 
     SPI_SETDESKWALLPAPER = 0x0014, 
     SPI_SETDESKPATTERN = 0x0015, 
     SPI_GETKEYBOARDDELAY = 0x0016, 
     SPI_SETKEYBOARDDELAY = 0x0017, 
     SPI_ICONVERTICALSPACING = 0x0018, 
     SPI_GETICONTITLEWRAP = 0x0019, 
     SPI_SETICONTITLEWRAP = 0x001A, 
     SPI_GETMENUDROPALIGNMENT = 0x001B, 
     SPI_SETMENUDROPALIGNMENT = 0x001C, 
     SPI_SETDOUBLECLKWIDTH = 0x001D, 
     SPI_SETDOUBLECLKHEIGHT = 0x001E, 
     SPI_GETICONTITLELOGFONT = 0x001F, 
     SPI_SETDOUBLECLICKTIME = 0x0020, 
     SPI_SETMOUSEBUTTONSWAP = 0x0021, 
     SPI_SETICONTITLELOGFONT = 0x0022, 
     SPI_GETFASTTASKSWITCH = 0x0023, 
     SPI_SETFASTTASKSWITCH = 0x0024, 
     SPI_SETDRAGFULLWINDOWS = 0x0025, 
     SPI_GETDRAGFULLWINDOWS = 0x0026, 
     SPI_GETNONCLIENTMETRICS = 0x0029, 
     SPI_SETNONCLIENTMETRICS = 0x002A, 
     SPI_GETMINIMIZEDMETRICS = 0x002B, 
     SPI_SETMINIMIZEDMETRICS = 0x002C, 
     SPI_GETICONMETRICS = 0x002D, 
     SPI_SETICONMETRICS = 0x002E, 
     SPI_SETWORKAREA = 0x002F, 
     SPI_GETWORKAREA = 0x0030, 
     SPI_SETPENWINDOWS = 0x0031, 
     SPI_GETHIGHCONTRAST = 0x0042, 
     SPI_SETHIGHCONTRAST = 0x0043, 
     SPI_GETKEYBOARDPREF = 0x0044, 
     SPI_SETKEYBOARDPREF = 0x0045, 
     SPI_GETSCREENREADER = 0x0046, 
     SPI_SETSCREENREADER = 0x0047, 
     SPI_GETANIMATION = 0x0048, 
     SPI_SETANIMATION = 0x0049, 
     SPI_GETFONTSMOOTHING = 0x004A, 
     SPI_SETFONTSMOOTHING = 0x004B, 
     SPI_SETDRAGWIDTH = 0x004C, 
     SPI_SETDRAGHEIGHT = 0x004D, 
     SPI_SETHANDHELD = 0x004E, 
     SPI_GETLOWPOWERTIMEOUT = 0x004F, 
     SPI_GETPOWEROFFTIMEOUT = 0x0050, 
     SPI_SETLOWPOWERTIMEOUT = 0x0051, 
     SPI_SETPOWEROFFTIMEOUT = 0x0052, 
     SPI_GETLOWPOWERACTIVE = 0x0053, 
     SPI_GETPOWEROFFACTIVE = 0x0054, 
     SPI_SETLOWPOWERACTIVE = 0x0055, 
     SPI_SETPOWEROFFACTIVE = 0x0056, 
     SPI_SETCURSORS = 0x0057, 
     SPI_SETICONS = 0x0058, 
     SPI_GETDEFAULTINPUTLANG = 0x0059, 
     SPI_SETDEFAULTINPUTLANG = 0x005A, 
     SPI_SETLANGTOGGLE = 0x005B, 
     SPI_GETWINDOWSEXTENSION = 0x005C, 
     SPI_SETMOUSETRAILS = 0x005D, 
     SPI_GETMOUSETRAILS = 0x005E, 
     SPI_SETSCREENSAVERRUNNING = 0x0061, 
     SPI_SCREENSAVERRUNNING = SPI_SETSCREENSAVERRUNNING, 
     SPI_GETFILTERKEYS = 0x0032, 
     SPI_SETFILTERKEYS = 0x0033, 
     SPI_GETTOGGLEKEYS = 0x0034, 
     SPI_SETTOGGLEKEYS = 0x0035, 
     SPI_GETMOUSEKEYS = 0x0036, 
     SPI_SETMOUSEKEYS = 0x0037, 
     SPI_GETSHOWSOUNDS = 0x0038, 
     SPI_SETSHOWSOUNDS = 0x0039, 
     SPI_GETSTICKYKEYS = 0x003A, 
     SPI_SETSTICKYKEYS = 0x003B, 
     SPI_GETACCESSTIMEOUT = 0x003C, 
     SPI_SETACCESSTIMEOUT = 0x003D, 
     SPI_GETSERIALKEYS = 0x003E, 
     SPI_SETSERIALKEYS = 0x003F, 
     SPI_GETSOUNDSENTRY = 0x0040, 
     SPI_SETSOUNDSENTRY = 0x0041, 
     SPI_GETSNAPTODEFBUTTON = 0x005F, 
     SPI_SETSNAPTODEFBUTTON = 0x0060, 
     SPI_GETMOUSEHOVERWIDTH = 0x0062, 
     SPI_SETMOUSEHOVERWIDTH = 0x0063, 
     SPI_GETMOUSEHOVERHEIGHT = 0x0064, 
     SPI_SETMOUSEHOVERHEIGHT = 0x0065, 
     SPI_GETMOUSEHOVERTIME = 0x0066, 
     SPI_SETMOUSEHOVERTIME = 0x0067, 
     SPI_GETWHEELSCROLLLINES = 0x0068, 
     SPI_SETWHEELSCROLLLINES = 0x0069, 
     SPI_GETMENUSHOWDELAY = 0x006A, 
     SPI_SETMENUSHOWDELAY = 0x006B, 
     SPI_GETWHEELSCROLLCHARS = 0x006C, 
     SPI_SETWHEELSCROLLCHARS = 0x006D, 
     SPI_GETSHOWIMEUI = 0x006E, 
     SPI_SETSHOWIMEUI = 0x006F, 
     SPI_GETMOUSESPEED = 0x0070, 
     SPI_SETMOUSESPEED = 0x0071, 
     SPI_GETSCREENSAVERRUNNING = 0x0072, 
     SPI_GETDESKWALLPAPER = 0x0073, 
     SPI_GETAUDIODESCRIPTION = 0x0074, 
     SPI_SETAUDIODESCRIPTION = 0x0075, 
     SPI_GETSCREENSAVESECURE = 0x0076, 
     SPI_SETSCREENSAVESECURE = 0x0077, 
     SPI_GETHUNGAPPTIMEOUT = 0x0078, 
     SPI_SETHUNGAPPTIMEOUT = 0x0079, 
     SPI_GETWAITTOKILLTIMEOUT = 0x007A, 
     SPI_SETWAITTOKILLTIMEOUT = 0x007B, 
     SPI_GETWAITTOKILLSERVICETIMEOUT = 0x007C, 
     SPI_SETWAITTOKILLSERVICETIMEOUT = 0x007D, 
     SPI_GETMOUSEDOCKTHRESHOLD = 0x007E, 
     SPI_SETMOUSEDOCKTHRESHOLD = 0x007F, 
     SPI_GETPENDOCKTHRESHOLD = 0x0080, 
     SPI_SETPENDOCKTHRESHOLD = 0x0081, 
     SPI_GETWINARRANGING = 0x0082, 
     SPI_SETWINARRANGING = 0x0083, 
     SPI_GETMOUSEDRAGOUTTHRESHOLD = 0x0084, 
     SPI_SETMOUSEDRAGOUTTHRESHOLD = 0x0085, 
     SPI_GETPENDRAGOUTTHRESHOLD = 0x0086, 
     SPI_SETPENDRAGOUTTHRESHOLD = 0x0087, 
     SPI_GETMOUSESIDEMOVETHRESHOLD = 0x0088, 
     SPI_SETMOUSESIDEMOVETHRESHOLD = 0x0089, 
     SPI_GETPENSIDEMOVETHRESHOLD = 0x008A, 
     SPI_SETPENSIDEMOVETHRESHOLD = 0x008B, 
     SPI_GETDRAGFROMMAXIMIZE = 0x008C, 
     SPI_SETDRAGFROMMAXIMIZE = 0x008D, 
     SPI_GETSNAPSIZING = 0x008E, 
     SPI_SETSNAPSIZING = 0x008F, 
     SPI_GETDOCKMOVING = 0x0090, 
     SPI_SETDOCKMOVING = 0x0091, 
     SPI_GETACTIVEWINDOWTRACKING = 0x1000, 
     SPI_SETACTIVEWINDOWTRACKING = 0x1001, 
     SPI_GETMENUANIMATION = 0x1002, 
     SPI_SETMENUANIMATION = 0x1003, 
     SPI_GETCOMBOBOXANIMATION = 0x1004, 
     SPI_SETCOMBOBOXANIMATION = 0x1005, 
     SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006, 
     SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007, 
     SPI_GETGRADIENTCAPTIONS = 0x1008, 
     SPI_SETGRADIENTCAPTIONS = 0x1009, 
     SPI_GETKEYBOARDCUES = 0x100A, 
     SPI_SETKEYBOARDCUES = 0x100B, 
     SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES, 
     SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES, 
     SPI_GETACTIVEWNDTRKZORDER = 0x100C, 
     SPI_SETACTIVEWNDTRKZORDER = 0x100D, 
     SPI_GETHOTTRACKING = 0x100E, 
     SPI_SETHOTTRACKING = 0x100F, 
     SPI_GETMENUFADE = 0x1012, 
     SPI_SETMENUFADE = 0x1013, 
     SPI_GETSELECTIONFADE = 0x1014, 
     SPI_SETSELECTIONFADE = 0x1015, 
     SPI_GETTOOLTIPANIMATION = 0x1016, 
     SPI_SETTOOLTIPANIMATION = 0x1017, 
     SPI_GETTOOLTIPFADE = 0x1018, 
     SPI_SETTOOLTIPFADE = 0x1019, 
     SPI_GETCURSORSHADOW = 0x101A, 
     SPI_SETCURSORSHADOW = 0x101B, 
     SPI_GETMOUSESONAR = 0x101C, 
     SPI_SETMOUSESONAR = 0x101D, 
     SPI_GETMOUSECLICKLOCK = 0x101E, 
     SPI_SETMOUSECLICKLOCK = 0x101F, 
     SPI_GETMOUSEVANISH = 0x1020, 
     SPI_SETMOUSEVANISH = 0x1021, 
     SPI_GETFLATMENU = 0x1022, 
     SPI_SETFLATMENU = 0x1023, 
     SPI_GETDROPSHADOW = 0x1024, 
     SPI_SETDROPSHADOW = 0x1025, 
     SPI_GETBLOCKSENDINPUTRESETS = 0x1026, 
     SPI_SETBLOCKSENDINPUTRESETS = 0x1027, 
     SPI_GETUIEFFECTS = 0x103E, 
     SPI_SETUIEFFECTS = 0x103F, 
     SPI_GETDISABLEOVERLAPPEDCONTENT = 0x1040, 
     SPI_SETDISABLEOVERLAPPEDCONTENT = 0x1041, 
     SPI_GETCLIENTAREAANIMATION = 0x1042, 
     SPI_SETCLIENTAREAANIMATION = 0x1043, 
     SPI_GETCLEARTYPE = 0x1048, 
     SPI_SETCLEARTYPE = 0x1049, 
     SPI_GETSPEECHRECOGNITION = 0x104A, 
     SPI_SETSPEECHRECOGNITION = 0x104B, 
     SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000, 
     SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001, 
     SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002, 
     SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003, 
     SPI_GETFOREGROUNDFLASHCOUNT = 0x2004, 
     SPI_SETFOREGROUNDFLASHCOUNT = 0x2005, 
     SPI_GETCARETWIDTH = 0x2006, 
     SPI_SETCARETWIDTH = 0x2007, 
     SPI_GETMOUSECLICKLOCKTIME = 0x2008, 
     SPI_SETMOUSECLICKLOCKTIME = 0x2009, 
     SPI_GETFONTSMOOTHINGTYPE = 0x200A, 
     SPI_SETFONTSMOOTHINGTYPE = 0x200B, 
     SPI_GETFONTSMOOTHINGCONTRAST = 0x200C, 
     SPI_SETFONTSMOOTHINGCONTRAST = 0x200D, 
     SPI_GETFOCUSBORDERWIDTH = 0x200E, 
     SPI_SETFOCUSBORDERWIDTH = 0x200F, 
     SPI_GETFOCUSBORDERHEIGHT = 0x2010, 
     SPI_SETFOCUSBORDERHEIGHT = 0x2011, 
     SPI_GETFONTSMOOTHINGORIENTATION = 0x2012, 
     SPI_SETFONTSMOOTHINGORIENTATION = 0x2013, 
     SPI_GETMINIMUMHITRADIUS = 0x2014, 
     SPI_SETMINIMUMHITRADIUS = 0x2015, 
     SPI_GETMESSAGEDURATION = 0x2016, 
     SPI_SETMESSAGEDURATION = 0x2017, 
    } 
+1

also was macht das? – dimitris93

+0

Ich versuche, meinen Mauszeiger zu Cursors.Cross für Stunden und gestellte Fragen auf dieser Website vergeblich zu ändern. Wie kann ich mit Ihrer Lösung das erreichen? – dimitris93

+0

Verwenden Sie ss_ddam213 die Antwort, wenn Sie Probleme haben, es zur Arbeit zu bringen, beginnen Sie eine neue Frage, die zeigt, was Sie probiert haben, welche Ergebnisse Sie gegen das bekommen, was Sie erwarten und dieses q/a ref. Viel Glück! –

Verwandte Themen