Lparameters lnWidth, lnHeight If Pcount() # 2 If Vartype(_Screen.LastWidth)="U" Return Else lnWidth=_Screen.LastWidth lnHeight=_Screen.lastHeight Endif Endif Clear #Define ENUM_CURRENT_SETTINGS -1 #Define CDS_UPDATEREGISTRY = 0x01 #Define CDS_TEST 0x02 #Define DISP_CHANGE_SUCCESSFUL 0 #Define DISP_CHANGE_RESTART 1 #Define DISP_CHANGE_FAILED -1 #Define DM_PELSWIDTH 0x00080000 #Define DM_PELSHEIGHT 0x00100000 Declare Integer EnumDisplaySettings In win32API ; string deviceName,; integer modeNum, ; string @ lpdevMode Declare Long ChangeDisplaySettings In win32API ; string lpDevMode, ; integer dwflags lpdevMode = Replicate(Chr(0),512) EnumDisplaySettings(0,ENUM_CURRENT_SETTINGS,@lpdevMode) * Save previous resolution _Screen.AddProperty("LastWidth",CToBin(Substr(m.lpdevMode,109,4),"4RS")) _Screen.AddProperty("LastHeight",CToBin(Substr(m.lpdevMode,113,4),"4RS")) * Check if not the same, no use to change when the same If _Screen.LastWidth # m.lnWidth or _Screen.LastHeight # m.lnHeight Wait Window "Ekran çözünürlüğü ayarlanıyor..." At Srows()/2,Scols()/2-10 Nowait lpdevMode = Stuff(m.lpdevMode,41,4,BinToC(DM_PELSWIDTH+DM_PELSHEIGHT,"4RS")) lpdevMode = Stuff(m.lpdevMode,109,4,BinToC(lnWidth,"4RS")) lpdevMode = Stuff(m.lpdevMode,113,4,BinToC(lnHeight,"4RS")) result = ChangeDisplaySettings(m.lpdevMode,CDS_TEST) If !( result = DISP_CHANGE_SUCCESSFUL ) *Wait Window "Mode not supported." Timeout 1 Return .F. Else ChangeDisplaySettings(m.lpdevMode,0) Endif Endif Return Endfunc *!* Source Code From Cetin BASOZ *!* To use it, just place it somewhere in your app like this: *!* ChangeRes(1024,768) *!* That means I am forcing the screen to have a resolution of 1024x768. When I exit my main form, in the unload event I place this: *!* ChangeRes(_Screen.LastWidth,_Screen.lastHeight) *!* And that would restore the previous screen resolution.