ghaffar1
شنبه 30 آبان 1388, 10:08 صبح
ممنون ميشم اگه منو راهنمايي كنين كه تو vb.net چطوري رزوليشن سيستم رو بدست بيارم و بعدش بتونم اونو تغيير بدم.
majid_vb_2008
شنبه 30 آبان 1388, 10:27 صبح
تغییر resolution مانیتور در ابتدای برنامه
ابتدا يك كلاس مي سازيم و كد زير رو توي اون وارد مي كنيم.
Imports System
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Public Class Resolution
<StructLayout(LayoutKind.Sequential)> _
Public Structure DEVMODE1
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
Public dmDeviceName As String
Public dmSpecVersion As Short
Public dmDriverVersion As Short
Public dmSize As Short
Public dmDriverExtra As Short
Public dmFields As Integer
Public dmOrientation As Short
Public dmPaperSize As Short
Public dmPaperLength As Short
Public dmPaperWidth As Short
Public dmScale As Short
Public dmCopies As Short
Public dmDefaultSource As Short
Public dmPrintQuality As Short
Public dmColor As Short
Public dmDuplex As Short
Public dmYResolution As Short
Public dmTTOption As Short
Public dmCollate As Short
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
Public dmFormName As String
Public dmLogPixels As Short
Public dmBitsPerPel As Short
Public dmPelsWidth As Integer
Public dmPelsHeight As Integer
Public dmDisplayFlags As Integer
Public dmDisplayFrequency As Integer
Public dmICMMethod As Integer
Public dmICMIntent As Integer
Public dmMediaType As Integer
Public dmDitherType As Integer
Public dmReserved1 As Integer
Public dmReserved2 As Integer
Public dmPanningWidth As Integer
Public dmPanningHeight As Integer
End Structure
Class User_32
<DllImport("user32.dll")> _
Public Shared Function EnumDisplaySettings(ByVal deviceName As String, ByVal modeNum As Integer, ByRef devMode As DEVMODE1) As Integer
End Function
<DllImport("user32.dll")> _
Public Shared Function ChangeDisplaySettings(ByRef devMode As DEVMODE1, ByVal flags As Integer) As Integer
End Function
Public Const ENUM_CURRENT_SETTINGS As Integer = -1
Public Const CDS_UPDATEREGISTRY As Integer = 1
Public Const CDS_TEST As Integer = 2
Public Const DISP_CHANGE_SUCCESSFUL As Integer = 0
Public Const DISP_CHANGE_RESTART As Integer = 1
Public Const DISP_CHANGE_FAILED As Integer = -1
End Class
Class CResolution
Public Sub New(ByVal a As Integer, ByVal b As Integer)
Dim screen As Screen = Screen.PrimaryScreen
Dim iWidth As Integer = a
Dim iHeight As Integer = b
Dim dm As DEVMODE1 = New DEVMODE1
dm.dmDeviceName = New String(New Char(32) {})
dm.dmFormName = New String(New Char(32) {})
dm.dmSize = CType(Marshal.SizeOf(dm), Short)
If Not (0 = User_32.EnumDisplaySettings(Nothing, User_32.ENUM_CURRENT_SETTINGS, dm)) Then
dm.dmPelsWidth = iWidth
dm.dmPelsHeight = iHeight
Dim iRet As Integer = User_32.ChangeDisplaySettings(dm, User_32.CDS_TEST)
If iRet = User_32.DISP_CHANGE_FAILED Then
MessageBox.Show("Unable to process your request")
MessageBox.Show("Description: Unable To Process Your Request. Sorry For This Inconvenience.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
iRet = User_32.ChangeDisplaySettings(dm, User_32.CDS_UPDATEREGISTRY)
Select Case iRet
Case User_32.DISP_CHANGE_SUCCESSFUL
Case User_32.DISP_CHANGE_RESTART
MessageBox.Show("Description: You Need To Reboot For The Change To Happen." & Microsoft.VisualBasic.Chr(10) & " If You Feel Any Problem After Rebooting Your Machine" & Microsoft.VisualBasic.Chr(10) & "Then Try To Change Resolution In Safe Mode.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Case Else
MessageBox.Show("Description: Failed To Change The Resolution.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Select
End If
End If
End Sub
End Class
End Class
بعدش کد زیر رو هر جا که می خوای برنامه ات وضوح نمایش رو تغییر بده قرار می دیم.
Dim ChangeRes As Resolution.CResolution
Dim XRes As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.W idth
Dim YRes As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.H eight
ChangeRes = New Resolution.CResolution(800, 600)
برای اینکه وضوح نمایش رو به حالت اول برگردونی هم می تونی از کد زیر استفاده کنید.
ChangeRes = New Resolution.CResolution(XRes, YRes)
توجه بجاي
ChangeRes = New Resolution.CResolution(800, 600)
هر وضوح تصویر استانداردی می تونید قرار بدهید
saadi2
شنبه 30 آبان 1388, 14:50 عصر
http://barnamenevis.org/forum/showthread.php?p=826724#post826724
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.