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-1404, Jelsoft Enterprises Ltd.