WinAPI Tutorial - SystemParametersInfo()

    • Allgemein

      WinAPI Tutorial - SystemParametersInfo()

      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: 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

      1. Private Declare Function SystemParametersInfo
      2. Lib "user32"
      3. Alias "SystemParametersInfoA" (
      4. ByVal uAction As Integer, _
      5. ByVal uParam As Integer, _
      6. ByVal lpvParam As Integer, _
      7. ByVal fuWinIni As Integer) As Integer
      8. 'oder mit Dll-Import:
      9. Imports System.Runtime.InteropServices
      10. <DllImport("user32", CharSet:=CharSet.Auto)> _
      11. Public Function SystemParametersInfo( _
      12. ByVal uAction As Integer, _
      13. ByVal uParam As Integer, _
      14. ByVal lpvParam As String, _
      15. ByVal fuWinIni As Integer) As Integer
      16. End Function


      Der Import in C#:

      C#-Quellcode

      1. using System.Runntime.InteropServices;
      2. [DllImport("user32.dll", CharSet = CharSet.Unicode)]
      3. public static extern bool SystemParametersInfo(uint uAction,uint uParam,String lpvParam,uint fWinIni);


      Der Import in C/C++:

      C-Quellcode

      1. #include <windows.h> //Tja, C++-ler habens einfach ;D


      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

      VB.NET-Quellcode

      1. Public Enum SystemParametersInfoAction As UInteger
      2. SPI_GETBEEP = &H1
      3. SPI_SETBEEP = &H2
      4. SPI_GETMOUSE = &H3
      5. SPI_SETMOUSE = &H4
      6. SPI_GETBORDER = &H5
      7. SPI_SETBORDER = &H6
      8. SPI_GETKEYBOARDSPEED = &Ha
      9. SPI_SETKEYBOARDSPEED = &Hb
      10. SPI_LANGDRIVER = &Hc
      11. SPI_ICONHORIZONTALSPACING = &Hd
      12. SPI_GETSCREENSAVETIMEOUT = &He
      13. SPI_SETSCREENSAVETIMEOUT = &Hf
      14. SPI_GETSCREENSAVEACTIVE = &H10
      15. SPI_SETSCREENSAVEACTIVE = &H11
      16. SPI_GETGRIDGRANULARITY = &H12
      17. SPI_SETGRIDGRANULARITY = &H13
      18. SPI_SETDESKWALLPAPER = &H14
      19. SPI_SETDESKPATTERN = &H15
      20. SPI_GETKEYBOARDDELAY = &H16
      21. SPI_SETKEYBOARDDELAY = &H17
      22. SPI_ICONVERTICALSPACING = &H18
      23. SPI_GETICONTITLEWRAP = &H19
      24. SPI_SETICONTITLEWRAP = &H1a
      25. SPI_GETMENUDROPALIGNMENT = &H1b
      26. SPI_SETMENUDROPALIGNMENT = &H1c
      27. SPI_SETDOUBLECLKWIDTH = &H1d
      28. SPI_SETDOUBLECLKHEIGHT = &H1e
      29. SPI_GETICONTITLELOGFONT = &H1f
      30. SPI_SETDOUBLECLICKTIME = &H20
      31. SPI_SETMOUSEBUTTONSWAP = &H21
      32. SPI_SETICONTITLELOGFONT = &H22
      33. SPI_GETFASTTASKSWITCH = &H23
      34. SPI_SETFASTTASKSWITCH = &H24
      35. SPI_SETDRAGFULLWINDOWS = &H25
      36. SPI_GETDRAGFULLWINDOWS = &H26
      37. SPI_GETNONCLIENTMETRICS = &H29
      38. SPI_SETNONCLIENTMETRICS = &H2a
      39. SPI_GETMINIMIZEDMETRICS = &H2b
      40. SPI_SETMINIMIZEDMETRICS = &H2c
      41. SPI_GETICONMETRICS = &H2d
      42. SPI_SETICONMETRICS = &H2e
      43. SPI_SETWORKAREA = &H2f
      44. SPI_GETWORKAREA = &H30
      45. SPI_SETPENWINDOWS = &H31
      46. SPI_GETHIGHCONTRAST = &H42
      47. SPI_SETHIGHCONTRAST = &H43
      48. SPI_GETKEYBOARDPREF = &H44
      49. SPI_SETKEYBOARDPREF = &H45
      50. SPI_GETSCREENREADER = &H46
      51. SPI_SETSCREENREADER = &H47
      52. SPI_GETANIMATION = &H48
      53. SPI_SETANIMATION = &H49
      54. SPI_GETFONTSMOOTHING = &H4a
      55. SPI_SETFONTSMOOTHING = &H4b
      56. SPI_SETDRAGWIDTH = &H4c
      57. SPI_SETDRAGHEIGHT = &H4d
      58. SPI_SETHANDHELD = &H4e
      59. SPI_GETLOWPOWERTIMEOUT = &H4f
      60. SPI_GETPOWEROFFTIMEOUT = &H50
      61. SPI_SETLOWPOWERTIMEOUT = &H51
      62. SPI_SETPOWEROFFTIMEOUT = &H52
      63. SPI_GETLOWPOWERACTIVE = &H53
      64. SPI_GETPOWEROFFACTIVE = &H54
      65. SPI_SETLOWPOWERACTIVE = &H55
      66. SPI_SETPOWEROFFACTIVE = &H56
      67. SPI_SETCURSORS = &H57
      68. SPI_SETICONS = &H58
      69. SPI_GETDEFAULTINPUTLANG = &H59
      70. SPI_SETDEFAULTINPUTLANG = &H5a
      71. SPI_SETLANGTOGGLE = &H5b
      72. SPI_GETWINDOWSEXTENSION = &H5c
      73. SPI_SETMOUSETRAILS = &H5d
      74. SPI_GETMOUSETRAILS = &H5e
      75. SPI_SETSCREENSAVERRUNNING = &H61
      76. SPI_SCREENSAVERRUNNING = SPI_SETSCREENSAVERRUNNING
      77. SPI_GETFILTERKEYS = &H32
      78. SPI_SETFILTERKEYS = &H33
      79. SPI_GETTOGGLEKEYS = &H34
      80. SPI_SETTOGGLEKEYS = &H35
      81. SPI_GETMOUSEKEYS = &H36
      82. SPI_SETMOUSEKEYS = &H37
      83. SPI_GETSHOWSOUNDS = &H38
      84. SPI_SETSHOWSOUNDS = &H39
      85. SPI_GETSTICKYKEYS = &H3a
      86. SPI_SETSTICKYKEYS = &H3b
      87. SPI_GETACCESSTIMEOUT = &H3c
      88. SPI_SETACCESSTIMEOUT = &H3d
      89. SPI_GETSERIALKEYS = &H3e
      90. SPI_SETSERIALKEYS = &H3f
      91. SPI_GETSOUNDSENTRY = &H40
      92. SPI_SETSOUNDSENTRY = &H41
      93. SPI_GETSNAPTODEFBUTTON = &H5f
      94. SPI_SETSNAPTODEFBUTTON = &H60
      95. SPI_GETMOUSEHOVERWIDTH = &H62
      96. SPI_SETMOUSEHOVERWIDTH = &H63
      97. SPI_GETMOUSEHOVERHEIGHT = &H64
      98. SPI_SETMOUSEHOVERHEIGHT = &H65
      99. SPI_GETMOUSEHOVERTIME = &H66
      100. SPI_SETMOUSEHOVERTIME = &H67
      101. SPI_GETWHEELSCROLLLINES = &H68
      102. SPI_SETWHEELSCROLLLINES = &H69
      103. SPI_GETMENUSHOWDELAY = &H6a
      104. SPI_SETMENUSHOWDELAY = &H6b
      105. SPI_GETWHEELSCROLLCHARS = &H6c
      106. SPI_SETWHEELSCROLLCHARS = &H6d
      107. SPI_GETSHOWIMEUI = &H6e
      108. SPI_SETSHOWIMEUI = &H6f
      109. SPI_GETMOUSESPEED = &H70
      110. SPI_SETMOUSESPEED = &H71
      111. SPI_GETSCREENSAVERRUNNING = &H72
      112. SPI_GETDESKWALLPAPER = &H73
      113. SPI_GETAUDIODESCRIPTION = &H74
      114. SPI_SETAUDIODESCRIPTION = &H75
      115. SPI_GETSCREENSAVESECURE = &H76
      116. SPI_SETSCREENSAVESECURE = &H77
      117. SPI_GETHUNGAPPTIMEOUT = &H78
      118. SPI_SETHUNGAPPTIMEOUT = &H79
      119. SPI_GETWAITTOKILLTIMEOUT = &H7a
      120. SPI_SETWAITTOKILLTIMEOUT = &H7b
      121. SPI_GETWAITTOKILLSERVICETIMEOUT = &H7c
      122. SPI_SETWAITTOKILLSERVICETIMEOUT = &H7d
      123. SPI_GETMOUSEDOCKTHRESHOLD = &H7e
      124. SPI_SETMOUSEDOCKTHRESHOLD = &H7f
      125. SPI_GETPENDOCKTHRESHOLD = &H80
      126. SPI_SETPENDOCKTHRESHOLD = &H81
      127. SPI_GETWINARRANGING = &H82
      128. SPI_SETWINARRANGING = &H83
      129. SPI_GETMOUSEDRAGOUTTHRESHOLD = &H84
      130. SPI_SETMOUSEDRAGOUTTHRESHOLD = &H85
      131. SPI_GETPENDRAGOUTTHRESHOLD = &H86
      132. SPI_SETPENDRAGOUTTHRESHOLD = &H87
      133. SPI_GETMOUSESIDEMOVETHRESHOLD = &H88
      134. SPI_SETMOUSESIDEMOVETHRESHOLD = &H89
      135. SPI_GETPENSIDEMOVETHRESHOLD = &H8a
      136. SPI_SETPENSIDEMOVETHRESHOLD = &H8b
      137. SPI_GETDRAGFROMMAXIMIZE = &H8c
      138. SPI_SETDRAGFROMMAXIMIZE = &H8d
      139. SPI_GETSNAPSIZING = &H8e
      140. SPI_SETSNAPSIZING = &H8f
      141. SPI_GETDOCKMOVING = &H90
      142. SPI_SETDOCKMOVING = &H91
      143. SPI_GETACTIVEWINDOWTRACKING = &H1000
      144. SPI_SETACTIVEWINDOWTRACKING = &H1001
      145. SPI_GETMENUANIMATION = &H1002
      146. SPI_SETMENUANIMATION = &H1003
      147. SPI_GETCOMBOBOXANIMATION = &H1004
      148. SPI_SETCOMBOBOXANIMATION = &H1005
      149. SPI_GETLISTBOXSMOOTHSCROLLING = &H1006
      150. SPI_SETLISTBOXSMOOTHSCROLLING = &H1007
      151. SPI_GETGRADIENTCAPTIONS = &H1008
      152. SPI_SETGRADIENTCAPTIONS = &H1009
      153. SPI_GETKEYBOARDCUES = &H100a
      154. SPI_SETKEYBOARDCUES = &H100b
      155. SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES
      156. SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES
      157. SPI_GETACTIVEWNDTRKZORDER = &H100c
      158. SPI_SETACTIVEWNDTRKZORDER = &H100d
      159. SPI_GETHOTTRACKING = &H100e
      160. SPI_SETHOTTRACKING = &H100f
      161. SPI_GETMENUFADE = &H1012
      162. SPI_SETMENUFADE = &H1013
      163. SPI_GETSELECTIONFADE = &H1014
      164. SPI_SETSELECTIONFADE = &H1015
      165. SPI_GETTOOLTIPANIMATION = &H1016
      166. SPI_SETTOOLTIPANIMATION = &H1017
      167. SPI_GETTOOLTIPFADE = &H1018
      168. SPI_SETTOOLTIPFADE = &H1019
      169. SPI_GETCURSORSHADOW = &H101a
      170. SPI_SETCURSORSHADOW = &H101b
      171. SPI_GETMOUSESONAR = &H101c
      172. SPI_SETMOUSESONAR = &H101d
      173. SPI_GETMOUSECLICKLOCK = &H101e
      174. SPI_SETMOUSECLICKLOCK = &H101f
      175. SPI_GETMOUSEVANISH = &H1020
      176. SPI_SETMOUSEVANISH = &H1021
      177. SPI_GETFLATMENU = &H1022
      178. SPI_SETFLATMENU = &H1023
      179. SPI_GETDROPSHADOW = &H1024
      180. SPI_SETDROPSHADOW = &H1025
      181. SPI_GETBLOCKSENDINPUTRESETS = &H1026
      182. SPI_SETBLOCKSENDINPUTRESETS = &H1027
      183. SPI_GETUIEFFECTS = &H103e
      184. SPI_SETUIEFFECTS = &H103f
      185. SPI_GETDISABLEOVERLAPPEDCONTENT = &H1040
      186. SPI_SETDISABLEOVERLAPPEDCONTENT = &H1041
      187. SPI_GETCLIENTAREAANIMATION = &H1042
      188. SPI_SETCLIENTAREAANIMATION = &H1043
      189. SPI_GETCLEARTYPE = &H1048
      190. SPI_SETCLEARTYPE = &H1049
      191. SPI_GETSPEECHRECOGNITION = &H104a
      192. SPI_SETSPEECHRECOGNITION = &H104b
      193. SPI_GETFOREGROUNDLOCKTIMEOUT = &H2000
      194. SPI_SETFOREGROUNDLOCKTIMEOUT = &H2001
      195. SPI_GETACTIVEWNDTRKTIMEOUT = &H2002
      196. SPI_SETACTIVEWNDTRKTIMEOUT = &H2003
      197. SPI_GETFOREGROUNDFLASHCOUNT = &H2004
      198. SPI_SETFOREGROUNDFLASHCOUNT = &H2005
      199. SPI_GETCARETWIDTH = &H2006
      200. SPI_SETCARETWIDTH = &H2007
      201. SPI_GETMOUSECLICKLOCKTIME = &H2008
      202. SPI_SETMOUSECLICKLOCKTIME = &H2009
      203. SPI_GETFONTSMOOTHINGTYPE = &H200a
      204. SPI_SETFONTSMOOTHINGTYPE = &H200b
      205. SPI_GETFONTSMOOTHINGCONTRAST = &H200c
      206. SPI_SETFONTSMOOTHINGCONTRAST = &H200d
      207. SPI_GETFOCUSBORDERWIDTH = &H200e
      208. SPI_SETFOCUSBORDERWIDTH = &H200f
      209. SPI_GETFOCUSBORDERHEIGHT = &H2010
      210. SPI_SETFOCUSBORDERHEIGHT = &H2011
      211. SPI_GETFONTSMOOTHINGORIENTATION = &H2012
      212. SPI_SETFONTSMOOTHINGORIENTATION = &H2013
      213. SPI_GETMINIMUMHITRADIUS = &H2014
      214. SPI_SETMINIMUMHITRADIUS = &H2015
      215. SPI_GETMESSAGEDURATION = &H2016
      216. SPI_SETMESSAGEDURATION = &H2017
      217. End Enum

      C#-Quellcode

      1. public enum SystemParametersInfoAction : uint
      2. {
      3. SPI_GETBEEP = 0x0001,
      4. SPI_SETBEEP = 0x0002,
      5. SPI_GETMOUSE = 0x0003,
      6. SPI_SETMOUSE = 0x0004,
      7. SPI_GETBORDER = 0x0005,
      8. SPI_SETBORDER = 0x0006,
      9. SPI_GETKEYBOARDSPEED = 0x000A,
      10. SPI_SETKEYBOARDSPEED = 0x000B,
      11. SPI_LANGDRIVER = 0x000C,
      12. SPI_ICONHORIZONTALSPACING = 0x000D,
      13. SPI_GETSCREENSAVETIMEOUT = 0x000E,
      14. SPI_SETSCREENSAVETIMEOUT = 0x000F,
      15. SPI_GETSCREENSAVEACTIVE = 0x0010,
      16. SPI_SETSCREENSAVEACTIVE = 0x0011,
      17. SPI_GETGRIDGRANULARITY = 0x0012,
      18. SPI_SETGRIDGRANULARITY = 0x0013,
      19. SPI_SETDESKWALLPAPER = 0x0014,
      20. SPI_SETDESKPATTERN = 0x0015,
      21. SPI_GETKEYBOARDDELAY = 0x0016,
      22. SPI_SETKEYBOARDDELAY = 0x0017,
      23. SPI_ICONVERTICALSPACING = 0x0018,
      24. SPI_GETICONTITLEWRAP = 0x0019,
      25. SPI_SETICONTITLEWRAP = 0x001A,
      26. SPI_GETMENUDROPALIGNMENT = 0x001B,
      27. SPI_SETMENUDROPALIGNMENT = 0x001C,
      28. SPI_SETDOUBLECLKWIDTH = 0x001D,
      29. SPI_SETDOUBLECLKHEIGHT = 0x001E,
      30. SPI_GETICONTITLELOGFONT = 0x001F,
      31. SPI_SETDOUBLECLICKTIME = 0x0020,
      32. SPI_SETMOUSEBUTTONSWAP = 0x0021,
      33. SPI_SETICONTITLELOGFONT = 0x0022,
      34. SPI_GETFASTTASKSWITCH = 0x0023,
      35. SPI_SETFASTTASKSWITCH = 0x0024,
      36. SPI_SETDRAGFULLWINDOWS = 0x0025,
      37. SPI_GETDRAGFULLWINDOWS = 0x0026,
      38. SPI_GETNONCLIENTMETRICS = 0x0029,
      39. SPI_SETNONCLIENTMETRICS = 0x002A,
      40. SPI_GETMINIMIZEDMETRICS = 0x002B,
      41. SPI_SETMINIMIZEDMETRICS = 0x002C,
      42. SPI_GETICONMETRICS = 0x002D,
      43. SPI_SETICONMETRICS = 0x002E,
      44. SPI_SETWORKAREA = 0x002F,
      45. SPI_GETWORKAREA = 0x0030,
      46. SPI_SETPENWINDOWS = 0x0031,
      47. SPI_GETHIGHCONTRAST = 0x0042,
      48. SPI_SETHIGHCONTRAST = 0x0043,
      49. SPI_GETKEYBOARDPREF = 0x0044,
      50. SPI_SETKEYBOARDPREF = 0x0045,
      51. SPI_GETSCREENREADER = 0x0046,
      52. SPI_SETSCREENREADER = 0x0047,
      53. SPI_GETANIMATION = 0x0048,
      54. SPI_SETANIMATION = 0x0049,
      55. SPI_GETFONTSMOOTHING = 0x004A,
      56. SPI_SETFONTSMOOTHING = 0x004B,
      57. SPI_SETDRAGWIDTH = 0x004C,
      58. SPI_SETDRAGHEIGHT = 0x004D,
      59. SPI_SETHANDHELD = 0x004E,
      60. SPI_GETLOWPOWERTIMEOUT = 0x004F,
      61. SPI_GETPOWEROFFTIMEOUT = 0x0050,
      62. SPI_SETLOWPOWERTIMEOUT = 0x0051,
      63. SPI_SETPOWEROFFTIMEOUT = 0x0052,
      64. SPI_GETLOWPOWERACTIVE = 0x0053,
      65. SPI_GETPOWEROFFACTIVE = 0x0054,
      66. SPI_SETLOWPOWERACTIVE = 0x0055,
      67. SPI_SETPOWEROFFACTIVE = 0x0056,
      68. SPI_SETCURSORS = 0x0057,
      69. SPI_SETICONS = 0x0058,
      70. SPI_GETDEFAULTINPUTLANG = 0x0059,
      71. SPI_SETDEFAULTINPUTLANG = 0x005A,
      72. SPI_SETLANGTOGGLE = 0x005B,
      73. SPI_GETWINDOWSEXTENSION = 0x005C,
      74. SPI_SETMOUSETRAILS = 0x005D,
      75. SPI_GETMOUSETRAILS = 0x005E,
      76. SPI_SETSCREENSAVERRUNNING = 0x0061,
      77. SPI_SCREENSAVERRUNNING = SPI_SETSCREENSAVERRUNNING,
      78. SPI_GETFILTERKEYS = 0x0032,
      79. SPI_SETFILTERKEYS = 0x0033,
      80. SPI_GETTOGGLEKEYS = 0x0034,
      81. SPI_SETTOGGLEKEYS = 0x0035,
      82. SPI_GETMOUSEKEYS = 0x0036,
      83. SPI_SETMOUSEKEYS = 0x0037,
      84. SPI_GETSHOWSOUNDS = 0x0038,
      85. SPI_SETSHOWSOUNDS = 0x0039,
      86. SPI_GETSTICKYKEYS = 0x003A,
      87. SPI_SETSTICKYKEYS = 0x003B,
      88. SPI_GETACCESSTIMEOUT = 0x003C,
      89. SPI_SETACCESSTIMEOUT = 0x003D,
      90. SPI_GETSERIALKEYS = 0x003E,
      91. SPI_SETSERIALKEYS = 0x003F,
      92. SPI_GETSOUNDSENTRY = 0x0040,
      93. SPI_SETSOUNDSENTRY = 0x0041,
      94. SPI_GETSNAPTODEFBUTTON = 0x005F,
      95. SPI_SETSNAPTODEFBUTTON = 0x0060,
      96. SPI_GETMOUSEHOVERWIDTH = 0x0062,
      97. SPI_SETMOUSEHOVERWIDTH = 0x0063,
      98. SPI_GETMOUSEHOVERHEIGHT = 0x0064,
      99. SPI_SETMOUSEHOVERHEIGHT = 0x0065,
      100. SPI_GETMOUSEHOVERTIME = 0x0066,
      101. SPI_SETMOUSEHOVERTIME = 0x0067,
      102. SPI_GETWHEELSCROLLLINES = 0x0068,
      103. SPI_SETWHEELSCROLLLINES = 0x0069,
      104. SPI_GETMENUSHOWDELAY = 0x006A,
      105. SPI_SETMENUSHOWDELAY = 0x006B,
      106. SPI_GETWHEELSCROLLCHARS = 0x006C,
      107. SPI_SETWHEELSCROLLCHARS = 0x006D,
      108. SPI_GETSHOWIMEUI = 0x006E,
      109. SPI_SETSHOWIMEUI = 0x006F,
      110. SPI_GETMOUSESPEED = 0x0070,
      111. SPI_SETMOUSESPEED = 0x0071,
      112. SPI_GETSCREENSAVERRUNNING = 0x0072,
      113. SPI_GETDESKWALLPAPER = 0x0073,
      114. SPI_GETAUDIODESCRIPTION = 0x0074,
      115. SPI_SETAUDIODESCRIPTION = 0x0075,
      116. SPI_GETSCREENSAVESECURE = 0x0076,
      117. SPI_SETSCREENSAVESECURE = 0x0077,
      118. SPI_GETHUNGAPPTIMEOUT = 0x0078,
      119. SPI_SETHUNGAPPTIMEOUT = 0x0079,
      120. SPI_GETWAITTOKILLTIMEOUT = 0x007A,
      121. SPI_SETWAITTOKILLTIMEOUT = 0x007B,
      122. SPI_GETWAITTOKILLSERVICETIMEOUT = 0x007C,
      123. SPI_SETWAITTOKILLSERVICETIMEOUT = 0x007D,
      124. SPI_GETMOUSEDOCKTHRESHOLD = 0x007E,
      125. SPI_SETMOUSEDOCKTHRESHOLD = 0x007F,
      126. SPI_GETPENDOCKTHRESHOLD = 0x0080,
      127. SPI_SETPENDOCKTHRESHOLD = 0x0081,
      128. SPI_GETWINARRANGING = 0x0082,
      129. SPI_SETWINARRANGING = 0x0083,
      130. SPI_GETMOUSEDRAGOUTTHRESHOLD = 0x0084,
      131. SPI_SETMOUSEDRAGOUTTHRESHOLD = 0x0085,
      132. SPI_GETPENDRAGOUTTHRESHOLD = 0x0086,
      133. SPI_SETPENDRAGOUTTHRESHOLD = 0x0087,
      134. SPI_GETMOUSESIDEMOVETHRESHOLD = 0x0088,
      135. SPI_SETMOUSESIDEMOVETHRESHOLD = 0x0089,
      136. SPI_GETPENSIDEMOVETHRESHOLD = 0x008A,
      137. SPI_SETPENSIDEMOVETHRESHOLD = 0x008B,
      138. SPI_GETDRAGFROMMAXIMIZE = 0x008C,
      139. SPI_SETDRAGFROMMAXIMIZE = 0x008D,
      140. SPI_GETSNAPSIZING = 0x008E,
      141. SPI_SETSNAPSIZING = 0x008F,
      142. SPI_GETDOCKMOVING = 0x0090,
      143. SPI_SETDOCKMOVING = 0x0091,
      144. SPI_GETACTIVEWINDOWTRACKING = 0x1000,
      145. SPI_SETACTIVEWINDOWTRACKING = 0x1001,
      146. SPI_GETMENUANIMATION = 0x1002,
      147. SPI_SETMENUANIMATION = 0x1003,
      148. SPI_GETCOMBOBOXANIMATION = 0x1004,
      149. SPI_SETCOMBOBOXANIMATION = 0x1005,
      150. SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006,
      151. SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007,
      152. SPI_GETGRADIENTCAPTIONS = 0x1008,
      153. SPI_SETGRADIENTCAPTIONS = 0x1009,
      154. SPI_GETKEYBOARDCUES = 0x100A,
      155. SPI_SETKEYBOARDCUES = 0x100B,
      156. SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES,
      157. SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES,
      158. SPI_GETACTIVEWNDTRKZORDER = 0x100C,
      159. SPI_SETACTIVEWNDTRKZORDER = 0x100D,
      160. SPI_GETHOTTRACKING = 0x100E,
      161. SPI_SETHOTTRACKING = 0x100F,
      162. SPI_GETMENUFADE = 0x1012,
      163. SPI_SETMENUFADE = 0x1013,
      164. SPI_GETSELECTIONFADE = 0x1014,
      165. SPI_SETSELECTIONFADE = 0x1015,
      166. SPI_GETTOOLTIPANIMATION = 0x1016,
      167. SPI_SETTOOLTIPANIMATION = 0x1017,
      168. SPI_GETTOOLTIPFADE = 0x1018,
      169. SPI_SETTOOLTIPFADE = 0x1019,
      170. SPI_GETCURSORSHADOW = 0x101A,
      171. SPI_SETCURSORSHADOW = 0x101B,
      172. SPI_GETMOUSESONAR = 0x101C,
      173. SPI_SETMOUSESONAR = 0x101D,
      174. SPI_GETMOUSECLICKLOCK = 0x101E,
      175. SPI_SETMOUSECLICKLOCK = 0x101F,
      176. SPI_GETMOUSEVANISH = 0x1020,
      177. SPI_SETMOUSEVANISH = 0x1021,
      178. SPI_GETFLATMENU = 0x1022,
      179. SPI_SETFLATMENU = 0x1023,
      180. SPI_GETDROPSHADOW = 0x1024,
      181. SPI_SETDROPSHADOW = 0x1025,
      182. SPI_GETBLOCKSENDINPUTRESETS = 0x1026,
      183. SPI_SETBLOCKSENDINPUTRESETS = 0x1027,
      184. SPI_GETUIEFFECTS = 0x103E,
      185. SPI_SETUIEFFECTS = 0x103F,
      186. SPI_GETDISABLEOVERLAPPEDCONTENT = 0x1040,
      187. SPI_SETDISABLEOVERLAPPEDCONTENT = 0x1041,
      188. SPI_GETCLIENTAREAANIMATION = 0x1042,
      189. SPI_SETCLIENTAREAANIMATION = 0x1043,
      190. SPI_GETCLEARTYPE = 0x1048,
      191. SPI_SETCLEARTYPE = 0x1049,
      192. SPI_GETSPEECHRECOGNITION = 0x104A,
      193. SPI_SETSPEECHRECOGNITION = 0x104B,
      194. SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000,
      195. SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001,
      196. SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002,
      197. SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003,
      198. SPI_GETFOREGROUNDFLASHCOUNT = 0x2004,
      199. SPI_SETFOREGROUNDFLASHCOUNT = 0x2005,
      200. SPI_GETCARETWIDTH = 0x2006,
      201. SPI_SETCARETWIDTH = 0x2007,
      202. SPI_GETMOUSECLICKLOCKTIME = 0x2008,
      203. SPI_SETMOUSECLICKLOCKTIME = 0x2009,
      204. SPI_GETFONTSMOOTHINGTYPE = 0x200A,
      205. SPI_SETFONTSMOOTHINGTYPE = 0x200B,
      206. SPI_GETFONTSMOOTHINGCONTRAST = 0x200C,
      207. SPI_SETFONTSMOOTHINGCONTRAST = 0x200D,
      208. SPI_GETFOCUSBORDERWIDTH = 0x200E,
      209. SPI_SETFOCUSBORDERWIDTH = 0x200F,
      210. SPI_GETFOCUSBORDERHEIGHT = 0x2010,
      211. SPI_SETFOCUSBORDERHEIGHT = 0x2011,
      212. SPI_GETFONTSMOOTHINGORIENTATION = 0x2012,
      213. SPI_SETFONTSMOOTHINGORIENTATION = 0x2013,
      214. SPI_GETMINIMUMHITRADIUS = 0x2014,
      215. SPI_SETMINIMUMHITRADIUS = 0x2015,
      216. SPI_GETMESSAGEDURATION = 0x2016,
      217. SPI_SETMESSAGEDURATION = 0x2017,
      218. }

      C-Quellcode

      1. #define SPI_GETBEEP 0x0001
      2. #define SPI_SETBEEP 0x0002
      3. #define SPI_GETMOUSE 0x0003
      4. #define SPI_SETMOUSE 0x0004
      5. #define SPI_GETBORDER 0x0005
      6. #define SPI_SETBORDER 0x0006
      7. #define SPI_GETKEYBOARDSPEED 0x000A
      8. #define SPI_SETKEYBOARDSPEED 0x000B
      9. #define SPI_LANGDRIVER 0x000C
      10. #define SPI_ICONHORIZONTALSPACING 0x000D
      11. #define SPI_GETSCREENSAVETIMEOUT 0x000E
      12. #define SPI_SETSCREENSAVETIMEOUT 0x000F
      13. #define SPI_GETSCREENSAVEACTIVE 0x0010
      14. #define SPI_SETSCREENSAVEACTIVE 0x0011
      15. #define SPI_GETGRIDGRANULARITY 0x0012
      16. #define SPI_SETGRIDGRANULARITY 0x0013
      17. #define SPI_SETDESKWALLPAPER 0x0014
      18. #define SPI_SETDESKPATTERN 0x0015
      19. #define SPI_GETKEYBOARDDELAY 0x0016
      20. #define SPI_SETKEYBOARDDELAY 0x0017
      21. #define SPI_ICONVERTICALSPACING 0x0018
      22. #define SPI_GETICONTITLEWRAP 0x0019
      23. #define SPI_SETICONTITLEWRAP 0x001A
      24. #define SPI_GETMENUDROPALIGNMENT 0x001B
      25. #define SPI_SETMENUDROPALIGNMENT 0x001C
      26. #define SPI_SETDOUBLECLKWIDTH 0x001D
      27. #define SPI_SETDOUBLECLKHEIGHT 0x001E
      28. #define SPI_GETICONTITLELOGFONT 0x001F
      29. #define SPI_SETDOUBLECLICKTIME 0x0020
      30. #define SPI_SETMOUSEBUTTONSWAP 0x0021
      31. #define SPI_SETICONTITLELOGFONT 0x0022
      32. #define SPI_GETFASTTASKSWITCH 0x0023
      33. #define SPI_SETFASTTASKSWITCH 0x0024
      34. #define SPI_SETDRAGFULLWINDOWS 0x0025
      35. #define SPI_GETDRAGFULLWINDOWS 0x0026
      36. #define SPI_GETNONCLIENTMETRICS 0x0029
      37. #define SPI_SETNONCLIENTMETRICS 0x002A
      38. #define SPI_GETMINIMIZEDMETRICS 0x002B
      39. #define SPI_SETMINIMIZEDMETRICS 0x002C
      40. #define SPI_GETICONMETRICS 0x002D
      41. #define SPI_SETICONMETRICS 0x002E
      42. #define SPI_SETWORKAREA 0x002F
      43. #define SPI_GETWORKAREA 0x0030
      44. #define SPI_SETPENWINDOWS 0x0031
      45. #define SPI_GETHIGHCONTRAST 0x0042
      46. #define SPI_SETHIGHCONTRAST 0x0043
      47. #define SPI_GETKEYBOARDPREF 0x0044
      48. #define SPI_SETKEYBOARDPREF 0x0045
      49. #define SPI_GETSCREENREADER 0x0046
      50. #define SPI_SETSCREENREADER 0x0047
      51. #define SPI_GETANIMATION 0x0048
      52. #define SPI_SETANIMATION 0x0049
      53. #define SPI_GETFONTSMOOTHING 0x004A
      54. #define SPI_SETFONTSMOOTHING 0x004B
      55. #define SPI_SETDRAGWIDTH 0x004C
      56. #define SPI_SETDRAGHEIGHT 0x004D
      57. #define SPI_SETHANDHELD 0x004E
      58. #define SPI_GETLOWPOWERTIMEOUT 0x004F
      59. #define SPI_GETPOWEROFFTIMEOUT 0x0050
      60. #define SPI_SETLOWPOWERTIMEOUT 0x0051
      61. #define SPI_SETPOWEROFFTIMEOUT 0x0052
      62. #define SPI_GETLOWPOWERACTIVE 0x0053
      63. #define SPI_GETPOWEROFFACTIVE 0x0054
      64. #define SPI_SETLOWPOWERACTIVE 0x0055
      65. #define SPI_SETPOWEROFFACTIVE 0x0056
      66. #define SPI_SETCURSORS 0x0057
      67. #define SPI_SETICONS 0x0058
      68. #define SPI_GETDEFAULTINPUTLANG 0x0059
      69. #define SPI_SETDEFAULTINPUTLANG 0x005A
      70. #define SPI_SETLANGTOGGLE 0x005B
      71. #define SPI_GETWINDOWSEXTENSION 0x005C
      72. #define SPI_SETMOUSETRAILS 0x005D
      73. #define SPI_GETMOUSETRAILS 0x005E
      74. #define SPI_SETSCREENSAVERRUNNING 0x0061
      75. #define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING
      76. #define SPI_GETFILTERKEYS 0x0032
      77. #define SPI_SETFILTERKEYS 0x0033
      78. #define SPI_GETTOGGLEKEYS 0x0034
      79. #define SPI_SETTOGGLEKEYS 0x0035
      80. #define SPI_GETMOUSEKEYS 0x0036
      81. #define SPI_SETMOUSEKEYS 0x0037
      82. #define SPI_GETSHOWSOUNDS 0x0038
      83. #define SPI_SETSHOWSOUNDS 0x0039
      84. #define SPI_GETSTICKYKEYS 0x003A
      85. #define SPI_SETSTICKYKEYS 0x003B
      86. #define SPI_GETACCESSTIMEOUT 0x003C
      87. #define SPI_SETACCESSTIMEOUT 0x003D
      88. #define SPI_GETSERIALKEYS 0x003E
      89. #define SPI_SETSERIALKEYS 0x003F
      90. #define SPI_GETSOUNDSENTRY 0x0040
      91. #define SPI_SETSOUNDSENTRY 0x0041
      92. #define SPI_GETSNAPTODEFBUTTON 0x005F
      93. #define SPI_SETSNAPTODEFBUTTON 0x0060
      94. #define SPI_GETMOUSEHOVERWIDTH 0x0062
      95. #define SPI_SETMOUSEHOVERWIDTH 0x0063
      96. #define SPI_GETMOUSEHOVERHEIGHT 0x0064
      97. #define SPI_SETMOUSEHOVERHEIGHT 0x0065
      98. #define SPI_GETMOUSEHOVERTIME 0x0066
      99. #define SPI_SETMOUSEHOVERTIME 0x0067
      100. #define SPI_GETWHEELSCROLLLINES 0x0068
      101. #define SPI_SETWHEELSCROLLLINES 0x0069
      102. #define SPI_GETMENUSHOWDELAY 0x006A
      103. #define SPI_SETMENUSHOWDELAY 0x006B
      104. #define SPI_GETWHEELSCROLLCHARS 0x006C
      105. #define SPI_SETWHEELSCROLLCHARS 0x006D
      106. #define SPI_GETSHOWIMEUI 0x006E
      107. #define SPI_SETSHOWIMEUI 0x006F
      108. #define SPI_GETMOUSESPEED 0x0070
      109. #define SPI_SETMOUSESPEED 0x0071
      110. #define SPI_GETSCREENSAVERRUNNING 0x0072
      111. #define SPI_GETDESKWALLPAPER 0x0073
      112. #define SPI_GETAUDIODESCRIPTION 0x0074
      113. #define SPI_SETAUDIODESCRIPTION 0x0075
      114. #define SPI_GETSCREENSAVESECURE 0x0076
      115. #define SPI_SETSCREENSAVESECURE 0x0077
      116. #define SPI_GETHUNGAPPTIMEOUT 0x0078
      117. #define SPI_SETHUNGAPPTIMEOUT 0x0079
      118. #define SPI_GETWAITTOKILLTIMEOUT 0x007A
      119. #define SPI_SETWAITTOKILLTIMEOUT 0x007B
      120. #define SPI_GETWAITTOKILLSERVICETIMEOUT 0x007C
      121. #define SPI_SETWAITTOKILLSERVICETIMEOUT 0x007D
      122. #define SPI_GETMOUSEDOCKTHRESHOLD 0x007E
      123. #define SPI_SETMOUSEDOCKTHRESHOLD 0x007F
      124. #define SPI_GETPENDOCKTHRESHOLD 0x0080
      125. #define SPI_SETPENDOCKTHRESHOLD 0x0081
      126. #define SPI_GETWINARRANGING 0x0082
      127. #define SPI_SETWINARRANGING 0x0083
      128. #define SPI_GETMOUSEDRAGOUTTHRESHOLD 0x0084
      129. #define SPI_SETMOUSEDRAGOUTTHRESHOLD 0x0085
      130. #define SPI_GETPENDRAGOUTTHRESHOLD 0x0086
      131. #define SPI_SETPENDRAGOUTTHRESHOLD 0x0087
      132. #define SPI_GETMOUSESIDEMOVETHRESHOLD 0x0088
      133. #define SPI_SETMOUSESIDEMOVETHRESHOLD 0x0089
      134. #define SPI_GETPENSIDEMOVETHRESHOLD 0x008A
      135. #define SPI_SETPENSIDEMOVETHRESHOLD 0x008B
      136. #define SPI_GETDRAGFROMMAXIMIZE 0x008C
      137. #define SPI_SETDRAGFROMMAXIMIZE 0x008D
      138. #define SPI_GETSNAPSIZING 0x008E
      139. #define SPI_SETSNAPSIZING 0x008F
      140. #define SPI_GETDOCKMOVING 0x0090
      141. #define SPI_SETDOCKMOVING 0x0091
      142. //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.

      Code

      VB.NET Code

      VB.NET-Quellcode

      1. Module Module1
      2. Private Declare Function SystemParametesInfo _
      3. Lib "user32" _
      4. Alias "SystemParametersInfoA" (uAction As Integer,
      5. uParam As Integer,
      6. lpvParam As String,
      7. fuWinIni As Integer) As Integer
      8. Const SPI_SETMOUSEBUTTONSWAP As Integer = &H21
      9. Sub Main()
      10. SwapMouseButton(False)
      11. End Sub
      12. Private Sub SwapMouseButton(swapButtons As Boolean)
      13. If swapButtons Then
      14. SystemParametesInfo(SPI_SETMOUSEBUTTONSWAP, True, Nothing, False)
      15. Else
      16. SystemParametesInfo(SPI_SETMOUSEBUTTONSWAP, False, Nothing, False)
      17. End If
      18. End Sub
      19. End Module


      C# Code

      C#-Quellcode

      1. class Program
      2. {
      3. [DllImport("user32.dll", CharSet = CharSet.Unicode)]
      4. public static extern bool SystemParametersInfo(
      5. uint uAction,
      6. uint uParam,
      7. String lpvParam,
      8. uint fWinIni);
      9. const int SPI_SETMOUSEBUTTONSWAP = 0x0021;
      10. static void Main(string[] args)
      11. {
      12. SwapMouseButton(true);
      13. }
      14. static void SwapMouseButton(bool swapButtons)
      15. {
      16. if (swapButtons)
      17. {
      18. SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 1, null, 0);
      19. }
      20. else
      21. {
      22. SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 0, null, 0);
      23. }
      24. }
      25. }


      C++ Code

      C-Quellcode

      1. #include <Windows.h>
      2. using namespace std;
      3. void SwapMouseButton(bool);
      4. int main(){
      5. SwapMouseButton(true);
      6. return 0;
      7. }
      8. void SwapMouseButton(bool swapButtons){
      9. if (swapButtons){
      10. SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, TRUE, NULL, FALSE);
      11. }
      12. else
      13. {
      14. SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, FALSE, NULL, FALSE);
      15. }
      16. }




      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

      VB.NET-Quellcode

      1. Module Module1
      2. Private Declare Function SystemParametesInfo _
      3. Lib "user32" _
      4. Alias "SystemParametersInfoA" (uAction As Integer,
      5. uParam As Integer,
      6. lpvParam As Text.StringBuilder,
      7. fuWinIni As Integer) As Integer
      8. Const SPI_GETDESKWALLPAPER = &H73
      9. Sub Main()
      10. GetWallpaperPath()
      11. Console.ReadKey()
      12. End Sub
      13. Sub GetWallpaperPath()
      14. Dim sb As Text.StringBuilder = New Text.StringBuilder(1024)
      15. Dim retVal As Integer = SystemParametesInfo(SPI_GETDESKWALLPAPER, 1024, sb, 0)
      16. Console.WriteLine(retVal)
      17. Console.WriteLine(sb.ToString)
      18. End Sub
      19. End Module


      C# Code

      C#-Quellcode

      1. class Program
      2. {
      3. [DllImport("user32.dll", CharSet = CharSet.Unicode)]
      4. static extern bool SystemParametersInfo(uint uiAction, uint uiParam, StringBuilder pvParam, uint fWinIni);
      5. const uint SPI_GETDESKWALLPAPER = 0x73;
      6. static void Main(string[] args)
      7. {
      8. GetWallpaperPath();
      9. Console.ReadKey();
      10. }
      11. static void GetWallpaperPath()
      12. {
      13. StringBuilder sb = new StringBuilder(1024);
      14. bool retVal = SystemParametersInfo(SPI_GETDESKWALLPAPER, 1024, sb, 0);
      15. Console.WriteLine(retVal);
      16. Console.WriteLine(sb.ToString());
      17. }
      18. }


      C++ Code

      C-Quellcode

      1. #include <Windows.h>
      2. #include <iostream>
      3. using namespace std;
      4. #define SPI SystemParametersInfo
      5. void GetWallpaperPath();
      6. int main(){
      7. GetWallpaperPath();
      8. return 0;
      9. }
      10. void GetWallpaperPath(){
      11. char buffer[1024];
      12. char* pBuffer = buffer;
      13. int retVal = SPI(SPI_GETDESKWALLPAPER, 1024, pBuffer, FALSE);
      14. cout << buffer << endl;
      15. getchar();
      16. }




      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“ ()