seyed_27
پنج شنبه 11 مهر 1387, 12:41 عصر
یه مشکلی دارم. چطور میشه resulation رو عوض کرد ولی فرکانس مانیتور 75hz باشه و به حالت قبل برگرده با همون فرکانس. یه سورس دارم ولی فرکانس رو 60hz میکنه :
Private Const DM_PELSWIDTH = &H80000
Private Const DM_PELSHEIGHT = &H100000
Private Const CDS_FULLSCREEN = &H4
Private Const CDS_GLOBAL = &H8
Private Const CDS_NORESET = &H10000000
Private Const CDS_RESET = &H40000000
Private Const CDS_TEST = &H2
Private Const CDS_UPDATEREGISTRY = &H1
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
dmPanningWidth As Long 'Win2000
dmPanningHeight As Long 'Win2000
End Type
Private Declare Function ChangeDisplaySettingsEx Lib "user32" Alias "ChangeDisplaySettingsExA" (lpszDeviceName As Any, lpDevode As Any, ByVal hWnd As Long, ByVal dwFlags As Long, lParam As Any) As Long
Dim OldX As Long, OldY As Long
Private Sub Form_Load()
Dim Dev As DEVMODE
On Error Resume Next
ldx = Screen.Width / Screen.TwipsPerPixelX
OldY = Screen.Height / Screen.TwipsPerPixelY
If ldx = 1024 Then GoTo a:
If OldY = 768 Then GoTo a:
Dev.dmSize = Len(Dev)
Dev.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
Dev.dmPelsWidth = 1024
Dev.dmPelsHeight = 768
ChangeDisplaySettingsEx ByVal 0&, Dev, ByVal 0&, CDS_UPDATEREGISTR, ByVal 0&
a:
End
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Dim Dev As DEVMODE
'Dev.dmSize = Len(Dev)
'Dev.dmPelsWidth = OldX
'Dev.dmPelsHeight = OldY
'ChangeDisplaySettingsEx ByVal 0&, Dev, ByVal 0&, CDS_UPDATEREGISTR, ByVal 0&
End Sub
Private Const DM_PELSWIDTH = &H80000
Private Const DM_PELSHEIGHT = &H100000
Private Const CDS_FULLSCREEN = &H4
Private Const CDS_GLOBAL = &H8
Private Const CDS_NORESET = &H10000000
Private Const CDS_RESET = &H40000000
Private Const CDS_TEST = &H2
Private Const CDS_UPDATEREGISTRY = &H1
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
dmPanningWidth As Long 'Win2000
dmPanningHeight As Long 'Win2000
End Type
Private Declare Function ChangeDisplaySettingsEx Lib "user32" Alias "ChangeDisplaySettingsExA" (lpszDeviceName As Any, lpDevode As Any, ByVal hWnd As Long, ByVal dwFlags As Long, lParam As Any) As Long
Dim OldX As Long, OldY As Long
Private Sub Form_Load()
Dim Dev As DEVMODE
On Error Resume Next
ldx = Screen.Width / Screen.TwipsPerPixelX
OldY = Screen.Height / Screen.TwipsPerPixelY
If ldx = 1024 Then GoTo a:
If OldY = 768 Then GoTo a:
Dev.dmSize = Len(Dev)
Dev.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
Dev.dmPelsWidth = 1024
Dev.dmPelsHeight = 768
ChangeDisplaySettingsEx ByVal 0&, Dev, ByVal 0&, CDS_UPDATEREGISTR, ByVal 0&
a:
End
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Dim Dev As DEVMODE
'Dev.dmSize = Len(Dev)
'Dev.dmPelsWidth = OldX
'Dev.dmPelsHeight = OldY
'ChangeDisplaySettingsEx ByVal 0&, Dev, ByVal 0&, CDS_UPDATEREGISTR, ByVal 0&
End Sub