Hi liebe Community,
also hier einmal ein WinAPI Tutorial, in dem ich die Verwendun der API-Funktion SystemParametersInfo() erkläre. Ich werde diese Tutorial so gestalten, dass wirklich die absoluten Basistypen verwendet werden. Also nicht UINT, der im Prinzip ein unsigned Integer ist, sondern einfach "unsigned int". Wer dennoch die "alten" C++-Typen verwenden will, aber nicht weiß, welche Entsprechungen sie in P/Invoke haben, kann sich auf MSDN die Tabelle durchlesen. Den Code der jeweiligen Samples werde ich sowohl in VB, als auch in C# und C++ veröffentlichen.
Vielleicht kann der ein oder andere den Code in einem seiner Projekte verwenden ;D Sämlicher Code den ich hier poste, ist unter Windows 7 64 Bit Professional mit Visual Studio 2013 Community Edition getestet und entwickelt worden.
Würde mich freuen wenn jemand seine Erfahrung mit dem Code postet, sofern er verwendet wurde. Und evtl auch auf diesen Post verlinken.
So genug geredet, jetzt gehts auch gleich los:
Die Funktion SystemParametersInfo() ist einem WinAPI Funktion, d.h. in VB und C# muss man sie via DLL-Import oder Declare-Anweisung einbinden.
Dabei ist sie in einer Window-System-DLL integriert, also wer keinen Zugriff darauf hat, einfach Verweis auf die User32.dll setzen und ab geht's! Laut MSDN ist die Signatur folgende:
Dabei ist wie gesagt der UINT-Typ ein einfacher unsigned int und der PVOID ein void-Pointer. In VB wird für UINT oft ein einfacher Integer und für PVOID ein "Any" (VB6, in VB.NET ein einfacher String) verwenden. In C# im Prinzip das selbe. In C++ wird aus dem "Any" ein char*.
Der Import in VB:
Der Import in C#:
Der Import in C/C++:
Bevor ich anfange ist folgendes zu sagen: Die Funktion SystemParametersInfo kann sowohl für Auslese-Operationen, als auch für Setz-Operationen verwendet werde (SPI_SETBEEP und SPI_GETBEEP).
Deswegen hat sich MS auch gleich so etwas tolles, wie eine Enumeration für Aktionen überlegt (SPI, SPIF und ANIMATIONINFO).
Je nachdem, ob ein SPI_GET... oder ein SPI_SET... verwendet wird, unterscheiden sich die übergeben Parameter.
Bei SPI_GET... als erster Parameter einen GET-Typen, dann 0, gefolgt von einem StringBuilder(VB.NET und C#) oder einem char* in C++.
Bei SPI_SET... als erstes Parameter einen SET-Typen, dann den Setz-Wert, einem NULL-Wert (Nothing in VB.NET, null in C# und NULL in C++) gefolgt von einem (laut MSDN) bool'schen Wert (also True = 1 oder False = 0), der angibt, ob das Userprofile geupdated und damit eine WM_SETTINGCHANGE gesendet werden soll (SPIF_UPDATEINIFILE oder SPIF_SENDCHANGE).
Hier im Spoiler sind die Enums mal in VB.NET, C# und C++ (sind zwar nur #define, aber sch... drauf ;D) aufgelistet:
Spoiler anzeigen
Der Vorteil in der Enum ist der, dass man sich die Werte nicht merken braucht. Wenn man Maustasten vertauschen will, muss man sich nicht &H21 bzw 0x0021 merken sondern kann da bequem mit SPI_SETMOUSEBUTTONSWAP arbeiten.
Und da haben wir auch gleich schon das erste Bsp: MouseButtonSwap - vertauscht linke Maustaste mit rechter.
Code
VB.NET Code
C# Code
C++ Code
So das war jetz ein Beispiel für eine Setz-Operation, da ich aber vorher ja erzählt habe, dass SystemParametersInfo auch für Auslese-Operationen geeinet ist, folgt hier gleich ein Bsp:
Will ich wissen, was der Pfad des Bildes ist, das aktuell als Desktop Wallpaper verwendet wird, kann ich das mit dem Parameter SPI_GETDESKWALLPAPER machen.
Dazu übergebe ich in VB und C# einmal den GET-Typen, eine Buffer-Größe (denn der Pfad wird in einem Buffer gespeichert und MS war anscheinen damals zu doof zu proggen, dass sich die Funktion die Länge des Buffers, den ich gleich mitgebe, sich berechnet), einen Buffer, im Fall von VB und C# ist das ein Stringbuilder (habs schon mit ByRef String und ByRef Char-Arrays versucht => Speicher-Zugriffs-Verletzeung :/) und eine 0 -> braucht ja nix geupdated werden.
In C++ wird das ganze sogar noch einfacher, es reicht ein char-Array (ich nehm halt als Buffer-Größe 1024, is zwar total überdimensioniert, aber kann ja ruhig mal klotzen ;D)
Code
VB.NET Code
C# Code
C++ Code
So das wars jetz erst einmal für Erste. Wenn Interesse besteht, werde ich gerne noch weiter WinAPI Beispiele bringe. Ich hoffe jemand kann damit was anfangen und was produktives ausrichten ;D
Hier noch ein paar hilfreche Seiten:
pInvoke
MSDN-Libary
MSDN-Support
PS: Konstruktive Kritik ist erwünscht xD
PPS: Für eventuelle Schäden an Hard-/Software und/oder Menschen bin ich nicht verantwortlich. Jeglichen Code den du hier siehst, auf eigene Gefahr hin verwenden!
also hier einmal ein WinAPI Tutorial, in dem ich die Verwendun der API-Funktion SystemParametersInfo() erkläre. Ich werde diese Tutorial so gestalten, dass wirklich die absoluten Basistypen verwendet werden. Also nicht UINT, der im Prinzip ein unsigned Integer ist, sondern einfach "unsigned int". Wer dennoch die "alten" C++-Typen verwenden will, aber nicht weiß, welche Entsprechungen sie in P/Invoke haben, kann sich auf MSDN die Tabelle durchlesen. Den Code der jeweiligen Samples werde ich sowohl in VB, als auch in C# und C++ veröffentlichen.
Vielleicht kann der ein oder andere den Code in einem seiner Projekte verwenden ;D Sämlicher Code den ich hier poste, ist unter Windows 7 64 Bit Professional mit Visual Studio 2013 Community Edition getestet und entwickelt worden.
Würde mich freuen wenn jemand seine Erfahrung mit dem Code postet, sofern er verwendet wurde. Und evtl auch auf diesen Post verlinken.
So genug geredet, jetzt gehts auch gleich los:
Die Funktion SystemParametersInfo() ist einem WinAPI Funktion, d.h. in VB und C# muss man sie via DLL-Import oder Declare-Anweisung einbinden.
Dabei ist sie in einer Window-System-DLL integriert, also wer keinen Zugriff darauf hat, einfach Verweis auf die User32.dll setzen und ab geht's! Laut MSDN ist die Signatur folgende:
SystemParametersInfo(UINT, UINT, PVOID, UINT)
Dabei ist wie gesagt der UINT-Typ ein einfacher unsigned int und der PVOID ein void-Pointer. In VB wird für UINT oft ein einfacher Integer und für PVOID ein "Any" (VB6, in VB.NET ein einfacher String) verwenden. In C# im Prinzip das selbe. In C++ wird aus dem "Any" ein char*.
Der Import in VB:
VB.NET-Quellcode
- Private Declare Function SystemParametersInfo
- Lib "user32"
- Alias "SystemParametersInfoA" (
- ByVal uAction As Integer, _
- ByVal uParam As Integer, _
- ByVal lpvParam As Integer, _
- ByVal fuWinIni As Integer) As Integer
- 'oder mit Dll-Import:
- Imports System.Runtime.InteropServices
- <DllImport("user32", CharSet:=CharSet.Auto)> _
- Public Function SystemParametersInfo( _
- ByVal uAction As Integer, _
- ByVal uParam As Integer, _
- ByVal lpvParam As String, _
- ByVal fuWinIni As Integer) As Integer
- End Function
Der Import in C#:
Der Import in C/C++:
Bevor ich anfange ist folgendes zu sagen: Die Funktion SystemParametersInfo kann sowohl für Auslese-Operationen, als auch für Setz-Operationen verwendet werde (SPI_SETBEEP und SPI_GETBEEP).
Deswegen hat sich MS auch gleich so etwas tolles, wie eine Enumeration für Aktionen überlegt (SPI, SPIF und ANIMATIONINFO).
Je nachdem, ob ein SPI_GET... oder ein SPI_SET... verwendet wird, unterscheiden sich die übergeben Parameter.
Bei SPI_GET... als erster Parameter einen GET-Typen, dann 0, gefolgt von einem StringBuilder(VB.NET und C#) oder einem char* in C++.
Bei SPI_SET... als erstes Parameter einen SET-Typen, dann den Setz-Wert, einem NULL-Wert (Nothing in VB.NET, null in C# und NULL in C++) gefolgt von einem (laut MSDN) bool'schen Wert (also True = 1 oder False = 0), der angibt, ob das Userprofile geupdated und damit eine WM_SETTINGCHANGE gesendet werden soll (SPIF_UPDATEINIFILE oder SPIF_SENDCHANGE).
Hier im Spoiler sind die Enums mal in VB.NET, C# und C++ (sind zwar nur #define, aber sch... drauf ;D) aufgelistet:
VB.NET-Quellcode
- Public Enum SystemParametersInfoAction As UInteger
- SPI_GETBEEP = &H1
- SPI_SETBEEP = &H2
- SPI_GETMOUSE = &H3
- SPI_SETMOUSE = &H4
- SPI_GETBORDER = &H5
- SPI_SETBORDER = &H6
- SPI_GETKEYBOARDSPEED = &Ha
- SPI_SETKEYBOARDSPEED = &Hb
- SPI_LANGDRIVER = &Hc
- SPI_ICONHORIZONTALSPACING = &Hd
- SPI_GETSCREENSAVETIMEOUT = &He
- SPI_SETSCREENSAVETIMEOUT = &Hf
- SPI_GETSCREENSAVEACTIVE = &H10
- SPI_SETSCREENSAVEACTIVE = &H11
- SPI_GETGRIDGRANULARITY = &H12
- SPI_SETGRIDGRANULARITY = &H13
- SPI_SETDESKWALLPAPER = &H14
- SPI_SETDESKPATTERN = &H15
- SPI_GETKEYBOARDDELAY = &H16
- SPI_SETKEYBOARDDELAY = &H17
- SPI_ICONVERTICALSPACING = &H18
- SPI_GETICONTITLEWRAP = &H19
- SPI_SETICONTITLEWRAP = &H1a
- SPI_GETMENUDROPALIGNMENT = &H1b
- SPI_SETMENUDROPALIGNMENT = &H1c
- SPI_SETDOUBLECLKWIDTH = &H1d
- SPI_SETDOUBLECLKHEIGHT = &H1e
- SPI_GETICONTITLELOGFONT = &H1f
- SPI_SETDOUBLECLICKTIME = &H20
- SPI_SETMOUSEBUTTONSWAP = &H21
- SPI_SETICONTITLELOGFONT = &H22
- SPI_GETFASTTASKSWITCH = &H23
- SPI_SETFASTTASKSWITCH = &H24
- SPI_SETDRAGFULLWINDOWS = &H25
- SPI_GETDRAGFULLWINDOWS = &H26
- SPI_GETNONCLIENTMETRICS = &H29
- SPI_SETNONCLIENTMETRICS = &H2a
- SPI_GETMINIMIZEDMETRICS = &H2b
- SPI_SETMINIMIZEDMETRICS = &H2c
- SPI_GETICONMETRICS = &H2d
- SPI_SETICONMETRICS = &H2e
- SPI_SETWORKAREA = &H2f
- SPI_GETWORKAREA = &H30
- SPI_SETPENWINDOWS = &H31
- SPI_GETHIGHCONTRAST = &H42
- SPI_SETHIGHCONTRAST = &H43
- SPI_GETKEYBOARDPREF = &H44
- SPI_SETKEYBOARDPREF = &H45
- SPI_GETSCREENREADER = &H46
- SPI_SETSCREENREADER = &H47
- SPI_GETANIMATION = &H48
- SPI_SETANIMATION = &H49
- SPI_GETFONTSMOOTHING = &H4a
- SPI_SETFONTSMOOTHING = &H4b
- SPI_SETDRAGWIDTH = &H4c
- SPI_SETDRAGHEIGHT = &H4d
- SPI_SETHANDHELD = &H4e
- SPI_GETLOWPOWERTIMEOUT = &H4f
- SPI_GETPOWEROFFTIMEOUT = &H50
- SPI_SETLOWPOWERTIMEOUT = &H51
- SPI_SETPOWEROFFTIMEOUT = &H52
- SPI_GETLOWPOWERACTIVE = &H53
- SPI_GETPOWEROFFACTIVE = &H54
- SPI_SETLOWPOWERACTIVE = &H55
- SPI_SETPOWEROFFACTIVE = &H56
- SPI_SETCURSORS = &H57
- SPI_SETICONS = &H58
- SPI_GETDEFAULTINPUTLANG = &H59
- SPI_SETDEFAULTINPUTLANG = &H5a
- SPI_SETLANGTOGGLE = &H5b
- SPI_GETWINDOWSEXTENSION = &H5c
- SPI_SETMOUSETRAILS = &H5d
- SPI_GETMOUSETRAILS = &H5e
- SPI_SETSCREENSAVERRUNNING = &H61
- SPI_SCREENSAVERRUNNING = SPI_SETSCREENSAVERRUNNING
- SPI_GETFILTERKEYS = &H32
- SPI_SETFILTERKEYS = &H33
- SPI_GETTOGGLEKEYS = &H34
- SPI_SETTOGGLEKEYS = &H35
- SPI_GETMOUSEKEYS = &H36
- SPI_SETMOUSEKEYS = &H37
- SPI_GETSHOWSOUNDS = &H38
- SPI_SETSHOWSOUNDS = &H39
- SPI_GETSTICKYKEYS = &H3a
- SPI_SETSTICKYKEYS = &H3b
- SPI_GETACCESSTIMEOUT = &H3c
- SPI_SETACCESSTIMEOUT = &H3d
- SPI_GETSERIALKEYS = &H3e
- SPI_SETSERIALKEYS = &H3f
- SPI_GETSOUNDSENTRY = &H40
- SPI_SETSOUNDSENTRY = &H41
- SPI_GETSNAPTODEFBUTTON = &H5f
- SPI_SETSNAPTODEFBUTTON = &H60
- SPI_GETMOUSEHOVERWIDTH = &H62
- SPI_SETMOUSEHOVERWIDTH = &H63
- SPI_GETMOUSEHOVERHEIGHT = &H64
- SPI_SETMOUSEHOVERHEIGHT = &H65
- SPI_GETMOUSEHOVERTIME = &H66
- SPI_SETMOUSEHOVERTIME = &H67
- SPI_GETWHEELSCROLLLINES = &H68
- SPI_SETWHEELSCROLLLINES = &H69
- SPI_GETMENUSHOWDELAY = &H6a
- SPI_SETMENUSHOWDELAY = &H6b
- SPI_GETWHEELSCROLLCHARS = &H6c
- SPI_SETWHEELSCROLLCHARS = &H6d
- SPI_GETSHOWIMEUI = &H6e
- SPI_SETSHOWIMEUI = &H6f
- SPI_GETMOUSESPEED = &H70
- SPI_SETMOUSESPEED = &H71
- SPI_GETSCREENSAVERRUNNING = &H72
- SPI_GETDESKWALLPAPER = &H73
- SPI_GETAUDIODESCRIPTION = &H74
- SPI_SETAUDIODESCRIPTION = &H75
- SPI_GETSCREENSAVESECURE = &H76
- SPI_SETSCREENSAVESECURE = &H77
- SPI_GETHUNGAPPTIMEOUT = &H78
- SPI_SETHUNGAPPTIMEOUT = &H79
- SPI_GETWAITTOKILLTIMEOUT = &H7a
- SPI_SETWAITTOKILLTIMEOUT = &H7b
- SPI_GETWAITTOKILLSERVICETIMEOUT = &H7c
- SPI_SETWAITTOKILLSERVICETIMEOUT = &H7d
- SPI_GETMOUSEDOCKTHRESHOLD = &H7e
- SPI_SETMOUSEDOCKTHRESHOLD = &H7f
- SPI_GETPENDOCKTHRESHOLD = &H80
- SPI_SETPENDOCKTHRESHOLD = &H81
- SPI_GETWINARRANGING = &H82
- SPI_SETWINARRANGING = &H83
- SPI_GETMOUSEDRAGOUTTHRESHOLD = &H84
- SPI_SETMOUSEDRAGOUTTHRESHOLD = &H85
- SPI_GETPENDRAGOUTTHRESHOLD = &H86
- SPI_SETPENDRAGOUTTHRESHOLD = &H87
- SPI_GETMOUSESIDEMOVETHRESHOLD = &H88
- SPI_SETMOUSESIDEMOVETHRESHOLD = &H89
- SPI_GETPENSIDEMOVETHRESHOLD = &H8a
- SPI_SETPENSIDEMOVETHRESHOLD = &H8b
- SPI_GETDRAGFROMMAXIMIZE = &H8c
- SPI_SETDRAGFROMMAXIMIZE = &H8d
- SPI_GETSNAPSIZING = &H8e
- SPI_SETSNAPSIZING = &H8f
- SPI_GETDOCKMOVING = &H90
- SPI_SETDOCKMOVING = &H91
- SPI_GETACTIVEWINDOWTRACKING = &H1000
- SPI_SETACTIVEWINDOWTRACKING = &H1001
- SPI_GETMENUANIMATION = &H1002
- SPI_SETMENUANIMATION = &H1003
- SPI_GETCOMBOBOXANIMATION = &H1004
- SPI_SETCOMBOBOXANIMATION = &H1005
- SPI_GETLISTBOXSMOOTHSCROLLING = &H1006
- SPI_SETLISTBOXSMOOTHSCROLLING = &H1007
- SPI_GETGRADIENTCAPTIONS = &H1008
- SPI_SETGRADIENTCAPTIONS = &H1009
- SPI_GETKEYBOARDCUES = &H100a
- SPI_SETKEYBOARDCUES = &H100b
- SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES
- SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES
- SPI_GETACTIVEWNDTRKZORDER = &H100c
- SPI_SETACTIVEWNDTRKZORDER = &H100d
- SPI_GETHOTTRACKING = &H100e
- SPI_SETHOTTRACKING = &H100f
- SPI_GETMENUFADE = &H1012
- SPI_SETMENUFADE = &H1013
- SPI_GETSELECTIONFADE = &H1014
- SPI_SETSELECTIONFADE = &H1015
- SPI_GETTOOLTIPANIMATION = &H1016
- SPI_SETTOOLTIPANIMATION = &H1017
- SPI_GETTOOLTIPFADE = &H1018
- SPI_SETTOOLTIPFADE = &H1019
- SPI_GETCURSORSHADOW = &H101a
- SPI_SETCURSORSHADOW = &H101b
- SPI_GETMOUSESONAR = &H101c
- SPI_SETMOUSESONAR = &H101d
- SPI_GETMOUSECLICKLOCK = &H101e
- SPI_SETMOUSECLICKLOCK = &H101f
- SPI_GETMOUSEVANISH = &H1020
- SPI_SETMOUSEVANISH = &H1021
- SPI_GETFLATMENU = &H1022
- SPI_SETFLATMENU = &H1023
- SPI_GETDROPSHADOW = &H1024
- SPI_SETDROPSHADOW = &H1025
- SPI_GETBLOCKSENDINPUTRESETS = &H1026
- SPI_SETBLOCKSENDINPUTRESETS = &H1027
- SPI_GETUIEFFECTS = &H103e
- SPI_SETUIEFFECTS = &H103f
- SPI_GETDISABLEOVERLAPPEDCONTENT = &H1040
- SPI_SETDISABLEOVERLAPPEDCONTENT = &H1041
- SPI_GETCLIENTAREAANIMATION = &H1042
- SPI_SETCLIENTAREAANIMATION = &H1043
- SPI_GETCLEARTYPE = &H1048
- SPI_SETCLEARTYPE = &H1049
- SPI_GETSPEECHRECOGNITION = &H104a
- SPI_SETSPEECHRECOGNITION = &H104b
- SPI_GETFOREGROUNDLOCKTIMEOUT = &H2000
- SPI_SETFOREGROUNDLOCKTIMEOUT = &H2001
- SPI_GETACTIVEWNDTRKTIMEOUT = &H2002
- SPI_SETACTIVEWNDTRKTIMEOUT = &H2003
- SPI_GETFOREGROUNDFLASHCOUNT = &H2004
- SPI_SETFOREGROUNDFLASHCOUNT = &H2005
- SPI_GETCARETWIDTH = &H2006
- SPI_SETCARETWIDTH = &H2007
- SPI_GETMOUSECLICKLOCKTIME = &H2008
- SPI_SETMOUSECLICKLOCKTIME = &H2009
- SPI_GETFONTSMOOTHINGTYPE = &H200a
- SPI_SETFONTSMOOTHINGTYPE = &H200b
- SPI_GETFONTSMOOTHINGCONTRAST = &H200c
- SPI_SETFONTSMOOTHINGCONTRAST = &H200d
- SPI_GETFOCUSBORDERWIDTH = &H200e
- SPI_SETFOCUSBORDERWIDTH = &H200f
- SPI_GETFOCUSBORDERHEIGHT = &H2010
- SPI_SETFOCUSBORDERHEIGHT = &H2011
- SPI_GETFONTSMOOTHINGORIENTATION = &H2012
- SPI_SETFONTSMOOTHINGORIENTATION = &H2013
- SPI_GETMINIMUMHITRADIUS = &H2014
- SPI_SETMINIMUMHITRADIUS = &H2015
- SPI_GETMESSAGEDURATION = &H2016
- SPI_SETMESSAGEDURATION = &H2017
- End Enum
C#-Quellcode
- 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,
- }
C-Quellcode
- #define SPI_GETBEEP 0x0001
- #define SPI_SETBEEP 0x0002
- #define SPI_GETMOUSE 0x0003
- #define SPI_SETMOUSE 0x0004
- #define SPI_GETBORDER 0x0005
- #define SPI_SETBORDER 0x0006
- #define SPI_GETKEYBOARDSPEED 0x000A
- #define SPI_SETKEYBOARDSPEED 0x000B
- #define SPI_LANGDRIVER 0x000C
- #define SPI_ICONHORIZONTALSPACING 0x000D
- #define SPI_GETSCREENSAVETIMEOUT 0x000E
- #define SPI_SETSCREENSAVETIMEOUT 0x000F
- #define SPI_GETSCREENSAVEACTIVE 0x0010
- #define SPI_SETSCREENSAVEACTIVE 0x0011
- #define SPI_GETGRIDGRANULARITY 0x0012
- #define SPI_SETGRIDGRANULARITY 0x0013
- #define SPI_SETDESKWALLPAPER 0x0014
- #define SPI_SETDESKPATTERN 0x0015
- #define SPI_GETKEYBOARDDELAY 0x0016
- #define SPI_SETKEYBOARDDELAY 0x0017
- #define SPI_ICONVERTICALSPACING 0x0018
- #define SPI_GETICONTITLEWRAP 0x0019
- #define SPI_SETICONTITLEWRAP 0x001A
- #define SPI_GETMENUDROPALIGNMENT 0x001B
- #define SPI_SETMENUDROPALIGNMENT 0x001C
- #define SPI_SETDOUBLECLKWIDTH 0x001D
- #define SPI_SETDOUBLECLKHEIGHT 0x001E
- #define SPI_GETICONTITLELOGFONT 0x001F
- #define SPI_SETDOUBLECLICKTIME 0x0020
- #define SPI_SETMOUSEBUTTONSWAP 0x0021
- #define SPI_SETICONTITLELOGFONT 0x0022
- #define SPI_GETFASTTASKSWITCH 0x0023
- #define SPI_SETFASTTASKSWITCH 0x0024
- #define SPI_SETDRAGFULLWINDOWS 0x0025
- #define SPI_GETDRAGFULLWINDOWS 0x0026
- #define SPI_GETNONCLIENTMETRICS 0x0029
- #define SPI_SETNONCLIENTMETRICS 0x002A
- #define SPI_GETMINIMIZEDMETRICS 0x002B
- #define SPI_SETMINIMIZEDMETRICS 0x002C
- #define SPI_GETICONMETRICS 0x002D
- #define SPI_SETICONMETRICS 0x002E
- #define SPI_SETWORKAREA 0x002F
- #define SPI_GETWORKAREA 0x0030
- #define SPI_SETPENWINDOWS 0x0031
- #define SPI_GETHIGHCONTRAST 0x0042
- #define SPI_SETHIGHCONTRAST 0x0043
- #define SPI_GETKEYBOARDPREF 0x0044
- #define SPI_SETKEYBOARDPREF 0x0045
- #define SPI_GETSCREENREADER 0x0046
- #define SPI_SETSCREENREADER 0x0047
- #define SPI_GETANIMATION 0x0048
- #define SPI_SETANIMATION 0x0049
- #define SPI_GETFONTSMOOTHING 0x004A
- #define SPI_SETFONTSMOOTHING 0x004B
- #define SPI_SETDRAGWIDTH 0x004C
- #define SPI_SETDRAGHEIGHT 0x004D
- #define SPI_SETHANDHELD 0x004E
- #define SPI_GETLOWPOWERTIMEOUT 0x004F
- #define SPI_GETPOWEROFFTIMEOUT 0x0050
- #define SPI_SETLOWPOWERTIMEOUT 0x0051
- #define SPI_SETPOWEROFFTIMEOUT 0x0052
- #define SPI_GETLOWPOWERACTIVE 0x0053
- #define SPI_GETPOWEROFFACTIVE 0x0054
- #define SPI_SETLOWPOWERACTIVE 0x0055
- #define SPI_SETPOWEROFFACTIVE 0x0056
- #define SPI_SETCURSORS 0x0057
- #define SPI_SETICONS 0x0058
- #define SPI_GETDEFAULTINPUTLANG 0x0059
- #define SPI_SETDEFAULTINPUTLANG 0x005A
- #define SPI_SETLANGTOGGLE 0x005B
- #define SPI_GETWINDOWSEXTENSION 0x005C
- #define SPI_SETMOUSETRAILS 0x005D
- #define SPI_GETMOUSETRAILS 0x005E
- #define SPI_SETSCREENSAVERRUNNING 0x0061
- #define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING
- #define SPI_GETFILTERKEYS 0x0032
- #define SPI_SETFILTERKEYS 0x0033
- #define SPI_GETTOGGLEKEYS 0x0034
- #define SPI_SETTOGGLEKEYS 0x0035
- #define SPI_GETMOUSEKEYS 0x0036
- #define SPI_SETMOUSEKEYS 0x0037
- #define SPI_GETSHOWSOUNDS 0x0038
- #define SPI_SETSHOWSOUNDS 0x0039
- #define SPI_GETSTICKYKEYS 0x003A
- #define SPI_SETSTICKYKEYS 0x003B
- #define SPI_GETACCESSTIMEOUT 0x003C
- #define SPI_SETACCESSTIMEOUT 0x003D
- #define SPI_GETSERIALKEYS 0x003E
- #define SPI_SETSERIALKEYS 0x003F
- #define SPI_GETSOUNDSENTRY 0x0040
- #define SPI_SETSOUNDSENTRY 0x0041
- #define SPI_GETSNAPTODEFBUTTON 0x005F
- #define SPI_SETSNAPTODEFBUTTON 0x0060
- #define SPI_GETMOUSEHOVERWIDTH 0x0062
- #define SPI_SETMOUSEHOVERWIDTH 0x0063
- #define SPI_GETMOUSEHOVERHEIGHT 0x0064
- #define SPI_SETMOUSEHOVERHEIGHT 0x0065
- #define SPI_GETMOUSEHOVERTIME 0x0066
- #define SPI_SETMOUSEHOVERTIME 0x0067
- #define SPI_GETWHEELSCROLLLINES 0x0068
- #define SPI_SETWHEELSCROLLLINES 0x0069
- #define SPI_GETMENUSHOWDELAY 0x006A
- #define SPI_SETMENUSHOWDELAY 0x006B
- #define SPI_GETWHEELSCROLLCHARS 0x006C
- #define SPI_SETWHEELSCROLLCHARS 0x006D
- #define SPI_GETSHOWIMEUI 0x006E
- #define SPI_SETSHOWIMEUI 0x006F
- #define SPI_GETMOUSESPEED 0x0070
- #define SPI_SETMOUSESPEED 0x0071
- #define SPI_GETSCREENSAVERRUNNING 0x0072
- #define SPI_GETDESKWALLPAPER 0x0073
- #define SPI_GETAUDIODESCRIPTION 0x0074
- #define SPI_SETAUDIODESCRIPTION 0x0075
- #define SPI_GETSCREENSAVESECURE 0x0076
- #define SPI_SETSCREENSAVESECURE 0x0077
- #define SPI_GETHUNGAPPTIMEOUT 0x0078
- #define SPI_SETHUNGAPPTIMEOUT 0x0079
- #define SPI_GETWAITTOKILLTIMEOUT 0x007A
- #define SPI_SETWAITTOKILLTIMEOUT 0x007B
- #define SPI_GETWAITTOKILLSERVICETIMEOUT 0x007C
- #define SPI_SETWAITTOKILLSERVICETIMEOUT 0x007D
- #define SPI_GETMOUSEDOCKTHRESHOLD 0x007E
- #define SPI_SETMOUSEDOCKTHRESHOLD 0x007F
- #define SPI_GETPENDOCKTHRESHOLD 0x0080
- #define SPI_SETPENDOCKTHRESHOLD 0x0081
- #define SPI_GETWINARRANGING 0x0082
- #define SPI_SETWINARRANGING 0x0083
- #define SPI_GETMOUSEDRAGOUTTHRESHOLD 0x0084
- #define SPI_SETMOUSEDRAGOUTTHRESHOLD 0x0085
- #define SPI_GETPENDRAGOUTTHRESHOLD 0x0086
- #define SPI_SETPENDRAGOUTTHRESHOLD 0x0087
- #define SPI_GETMOUSESIDEMOVETHRESHOLD 0x0088
- #define SPI_SETMOUSESIDEMOVETHRESHOLD 0x0089
- #define SPI_GETPENSIDEMOVETHRESHOLD 0x008A
- #define SPI_SETPENSIDEMOVETHRESHOLD 0x008B
- #define SPI_GETDRAGFROMMAXIMIZE 0x008C
- #define SPI_SETDRAGFROMMAXIMIZE 0x008D
- #define SPI_GETSNAPSIZING 0x008E
- #define SPI_SETSNAPSIZING 0x008F
- #define SPI_GETDOCKMOVING 0x0090
- #define SPI_SETDOCKMOVING 0x0091
- //Ist aus WinUser.h rauskopiert ;D => sind absolut ALLE SPI (=SystemParametersInfos drinnen)
Der Vorteil in der Enum ist der, dass man sich die Werte nicht merken braucht. Wenn man Maustasten vertauschen will, muss man sich nicht &H21 bzw 0x0021 merken sondern kann da bequem mit SPI_SETMOUSEBUTTONSWAP arbeiten.
Und da haben wir auch gleich schon das erste Bsp: MouseButtonSwap - vertauscht linke Maustaste mit rechter.
VB.NET-Quellcode
- Module Module1
- Private Declare Function SystemParametesInfo _
- Lib "user32" _
- Alias "SystemParametersInfoA" (uAction As Integer,
- uParam As Integer,
- lpvParam As String,
- fuWinIni As Integer) As Integer
- Const SPI_SETMOUSEBUTTONSWAP As Integer = &H21
- Sub Main()
- SwapMouseButton(False)
- End Sub
- Private Sub SwapMouseButton(swapButtons As Boolean)
- If swapButtons Then
- SystemParametesInfo(SPI_SETMOUSEBUTTONSWAP, True, Nothing, False)
- Else
- SystemParametesInfo(SPI_SETMOUSEBUTTONSWAP, False, Nothing, False)
- End If
- End Sub
- End Module
C#-Quellcode
- class Program
- {
- [DllImport("user32.dll", CharSet = CharSet.Unicode)]
- public static extern bool SystemParametersInfo(
- uint uAction,
- uint uParam,
- String lpvParam,
- uint fWinIni);
- const int SPI_SETMOUSEBUTTONSWAP = 0x0021;
- static void Main(string[] args)
- {
- SwapMouseButton(true);
- }
- static void SwapMouseButton(bool swapButtons)
- {
- if (swapButtons)
- {
- SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 1, null, 0);
- }
- else
- {
- SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 0, null, 0);
- }
- }
- }
C-Quellcode
- #include <Windows.h>
- using namespace std;
- void SwapMouseButton(bool);
- int main(){
- SwapMouseButton(true);
- return 0;
- }
- void SwapMouseButton(bool swapButtons){
- if (swapButtons){
- SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, TRUE, NULL, FALSE);
- }
- else
- {
- SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, FALSE, NULL, FALSE);
- }
- }
So das war jetz ein Beispiel für eine Setz-Operation, da ich aber vorher ja erzählt habe, dass SystemParametersInfo auch für Auslese-Operationen geeinet ist, folgt hier gleich ein Bsp:
Will ich wissen, was der Pfad des Bildes ist, das aktuell als Desktop Wallpaper verwendet wird, kann ich das mit dem Parameter SPI_GETDESKWALLPAPER machen.
Dazu übergebe ich in VB und C# einmal den GET-Typen, eine Buffer-Größe (denn der Pfad wird in einem Buffer gespeichert und MS war anscheinen damals zu doof zu proggen, dass sich die Funktion die Länge des Buffers, den ich gleich mitgebe, sich berechnet), einen Buffer, im Fall von VB und C# ist das ein Stringbuilder (habs schon mit ByRef String und ByRef Char-Arrays versucht => Speicher-Zugriffs-Verletzeung :/) und eine 0 -> braucht ja nix geupdated werden.
In C++ wird das ganze sogar noch einfacher, es reicht ein char-Array (ich nehm halt als Buffer-Größe 1024, is zwar total überdimensioniert, aber kann ja ruhig mal klotzen ;D)
VB.NET-Quellcode
- Module Module1
- Private Declare Function SystemParametesInfo _
- Lib "user32" _
- Alias "SystemParametersInfoA" (uAction As Integer,
- uParam As Integer,
- lpvParam As Text.StringBuilder,
- fuWinIni As Integer) As Integer
- Const SPI_GETDESKWALLPAPER = &H73
- Sub Main()
- GetWallpaperPath()
- Console.ReadKey()
- End Sub
- Sub GetWallpaperPath()
- Dim sb As Text.StringBuilder = New Text.StringBuilder(1024)
- Dim retVal As Integer = SystemParametesInfo(SPI_GETDESKWALLPAPER, 1024, sb, 0)
- Console.WriteLine(retVal)
- Console.WriteLine(sb.ToString)
- End Sub
- End Module
C#-Quellcode
- class Program
- {
- [DllImport("user32.dll", CharSet = CharSet.Unicode)]
- static extern bool SystemParametersInfo(uint uiAction, uint uiParam, StringBuilder pvParam, uint fWinIni);
- const uint SPI_GETDESKWALLPAPER = 0x73;
- static void Main(string[] args)
- {
- GetWallpaperPath();
- Console.ReadKey();
- }
- static void GetWallpaperPath()
- {
- StringBuilder sb = new StringBuilder(1024);
- bool retVal = SystemParametersInfo(SPI_GETDESKWALLPAPER, 1024, sb, 0);
- Console.WriteLine(retVal);
- Console.WriteLine(sb.ToString());
- }
- }
C-Quellcode
- #include <Windows.h>
- #include <iostream>
- using namespace std;
- #define SPI SystemParametersInfo
- void GetWallpaperPath();
- int main(){
- GetWallpaperPath();
- return 0;
- }
- void GetWallpaperPath(){
- char buffer[1024];
- char* pBuffer = buffer;
- int retVal = SPI(SPI_GETDESKWALLPAPER, 1024, pBuffer, FALSE);
- cout << buffer << endl;
- getchar();
- }
So das wars jetz erst einmal für Erste. Wenn Interesse besteht, werde ich gerne noch weiter WinAPI Beispiele bringe. Ich hoffe jemand kann damit was anfangen und was produktives ausrichten ;D
Hier noch ein paar hilfreche Seiten:
pInvoke
MSDN-Libary
MSDN-Support
PS: Konstruktive Kritik ist erwünscht xD
PPS: Für eventuelle Schäden an Hard-/Software und/oder Menschen bin ich nicht verantwortlich. Jeglichen Code den du hier siehst, auf eigene Gefahr hin verwenden!
In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Radinator“ ()