Meines hatte ich schon mal in "Anwendungen" vorgestellt, allerdings damals ohne Sourcecode.
Manche älteren und/oder kleineren Spiele sind nicht sehr flexibel im Hinblick auf ihre auflösung.
manche präsentieren sich stur in einem 640x480 Windowedscreen,
andere benutzen für ihren Fullscreen die Desktopauflösung,
und wieder andere bestehen schlichtweg drauf, dass der Desktop nur 256 farben haben soll.
Weil ich gerne mal ältere Games spiele, und keine Lust habe, 
jedesmal manuell die Auflösung zu wechseln und nachher meine Icons wieder zu sortieren,
hab ich mir dieses kleine Tool gestrickt.
Hinweis:
nachdem man "Iconfy" gedrückt hat, hat man ein winziges Knöpfchen in der linken oberen Ecke,
das auch Sticky ist wenn diese Funktion aktiviert ist.
Damit kommt man von innerhalb eines Fullscreen-games wieder an den KGRS heran.
allerdings reagieren Fullscreen-Games unterschiedlich merkwürdig auf wechsel der Auflösung während der Laufzeit,
laut meiner erfahrung ist es besser, zuerst die Auflösung runterzusetzen, dann das game zu spielen, 
und nach beendigen wieder die Auflösung zurückzusetzen.
Code: Alles auswählen
;*************************
;*** KGRS-TS
;*** 
;*** ResolutionSwitcher
;*** 
;*** Changes Desktop-Resolution
;*** without effekting the Icons
;*** 
;*** PB 4.02 - Win2K/XP
;*** Kaeru Gaman, 2007-03-23
;*** 
;*** thanks to DarkDragon for showing
;*** me the usage of this API-function
;*** thanks to ts-soft for
;*** additional improvement suggestions.
;*************************
EnableExplicit
Enumeration 
  #WinMain
  #WinIcon
EndEnumeration
Enumeration
  #FrameRes 
  #FrameCol
  #ContRes
  #ContCol
  #OptRes6
  #OptRes8
  #OptRes10
  #OptCol8
  #OptCol16
  #OptCol32
  #ButExe
  #ButRest
  #ButIco
  #ButStick
  #ButOpen
  #TextAbout
EndEnumeration
#Icon = 0
;*************************
Procedure Change_Desktop(Width.l, Height.l, Depth.l)
  Define dmScreenSettings.DEVMODE
  Define Check 
  dmScreenSettings\dmSize = SizeOf(dmScreenSettings)
  dmScreenSettings\dmPelsWidth = Width
  dmScreenSettings\dmPelsHeight = Height
  dmScreenSettings\dmBitsPerPel = Depth
  dmScreenSettings\dmFields = 262144 | 524288 | 1048576
  Check = ChangeDisplaySettings_(@dmScreenSettings, 4)
  If Check <> #DISP_CHANGE_SUCCESSFUL
    ChangeDisplaySettings_(0,0)
    MessageRequester("KGRS ERROR","Failed to Change Settings",#MB_ICONERROR)
  EndIf
EndProcedure
Define About$ = " ** KGRS ** "
About$ + "(c) by Kaeru Gaman, 2007-03-23 ** "
About$ + "Programmed in PureBASIC ** "
About$ + "www.PureBasic.com"
Define EvID.l 
Define GgID.l
Define EXIT.l   =   0
Define Width.l  = 800
Define Height.l = 600
Define Depth.l  =  16
Define Sticky.l =   1
;*************************
OpenWindow(#WinMain,0,0,200,152,"KGRS")
CreateGadgetList(WindowID(#WinMain))
  Frame3DGadget( #FrameRes,  4,  2, 92, 88, "Resolution")
  ContainerGadget(#ContRes,  8, 18, 84, 66)
    OptionGadget(#OptRes6 ,  4,  0, 80, 24,"640x480")
    OptionGadget(#OptRes8 ,  4, 22, 80, 24,"800x600")
    OptionGadget(#OptRes10,  4, 44, 80, 24,"1024x768")
  CloseGadgetList()
  Frame3DGadget( #FrameCol,104,  2, 92, 88, "Color Depth")
  ContainerGadget(#ContCol,108, 18, 84, 66)
    OptionGadget(#OptCol8 ,  4,  0, 80, 24,"256Col")
    OptionGadget(#OptCol16,  4, 22, 80, 24,"16bit")
    OptionGadget(#OptCol32,  4, 44, 80, 24,"32bit")
  CloseGadgetList()
  ButtonGadget(#ButExe  ,  4, 96, 92, 24,"Apply")
  ButtonGadget(#ButRest ,104, 96, 92, 24,"Restore")
  ButtonGadget(#ButIco  ,  4,124, 92, 24,"Iconfy")
  ButtonGadget(#ButStick,104,124, 92, 24,"Sticky",#PB_Button_Toggle)
OpenWindow(#WinIcon,0,0,5,5,"KGRS IconButton",#PB_Window_BorderLess)
  CreateGadgetList(WindowID(#WinIcon))
    ButtonGadget(#ButOpen,0,0,5,5,"")
;*************************
SetGadgetState(#OptRes8, 1)
SetGadgetState(#OptCol16, 1)
HideWindow(#WinIcon,1)
SetGadgetState(#ButStick, Sticky)
StickyWindow(#WinMain, Sticky)
StickyWindow(#WinIcon, Sticky)
;*************************
GadgetToolTip(#ButExe  , "Apply chosen Settings to active Desktop")
GadgetToolTip(#ButRest , "Restore your standard Desktop Settings")
GadgetToolTip(#ButIco  , "Shrink KGRS Window to IconButton")
GadgetToolTip(#ButStick, "Toggle Always-on-Top for KGRS Window and IconButton")
GadgetToolTip(#ButOpen , About$)
;**************************************************
Repeat
  EvID = WaitWindowEvent()
  GgID = EventGadget()
  Select EvID
    Case #PB_Event_Gadget
      Select GgID
;*************************
        Case #OptRes6
          Width = 640 : Height = 480
        Case #OptRes8
          Width = 800 : Height = 600
        Case #OptRes10
          Width = 1024 : Height = 768
;*************************
        Case #OptCol8
          Depth = 8
        Case #OptCol16
          Depth = 16
        Case #OptCol32
          Depth = 32
;*************************
        Case #ButExe
          Change_Desktop(Width, Height, Depth)
        Case #ButRest
          ChangeDisplaySettings_(0,0)
        Case #ButStick
          Sticky = GetGadgetState(#ButStick)
          StickyWindow(#WinMain, Sticky)
          StickyWindow(#WinIcon, Sticky)
        Case #ButIco
          HideWindow(#WinMain,1)
          HideWindow(#WinIcon,0)
        Case #ButOpen
          HideWindow(#WinMain,0)
          HideWindow(#WinIcon,1)
      EndSelect
    Case #PB_Event_CloseWindow
      EXIT = 1
  EndSelect
Until EXIT = 1
End