View Full Version : تغییر resolution مانیتور در ابتدای برنامه
  
sh_m
سه شنبه 11 مرداد 1384, 13:10 عصر
سلام دوستان
من می خوام کدی بنویسم که اول برنامه دقت صفحه نمایش رو 600 در 800 کنه .کسی میتونه به من کمک کنه؟
متشکرم
Beyondsoft
سه شنبه 11 مرداد 1384, 20:16 عصر
این کار کاملا اشتباه است!
و اصلا شما حق این کار رو نداری مگن برای یک برنامه Multy media  یا یک بازی بخوای
vbapr2005
جمعه 14 مرداد 1384, 01:39 صبح
حالا اگه کسی خواست یه برنامه ی مولتی مدیا یا یه بازی بسازه چی؟
seyedof
جمعه 14 مرداد 1384, 01:57 صبح
سلام
تابع ChangeDisplaySettings
ممنون علی
Peyman_Ranjbar
جمعه 14 مرداد 1384, 05:03 صبح
این کار کاملا اشتباه است!
و اصلا شما حق این کار رو نداری مگن برای یک برنامه Multy media یا یک بازی بخوای
 
ببخشید کی این حق رو از ما گرفته|؟؟؟
Beyondsoft
جمعه 14 مرداد 1384, 14:16 عصر
راجع به این که این حق را کی از شما گرفته باید بگم که کسی این کار رو نکرده است. به هر حال در هر جا یکسری استاندارد وجود دارد. به هر حال یک سری چارچوب کاری است. 
شما می توانید پشت صفحه ی برنامتون رو زرد کنید با فونت سفید !
ولی آیا این مناسبه؟ و آیا این رعایت چارچوب کاری است؟
mehrdotnet
شنبه 15 مرداد 1384, 23:12 عصر
اگه بعدا رزولوشن به حالت اوش برگردونده بشه فکر نمی کنم چیزی هیچ استانداردی رو نقض کنه اما ایده ال ترین روش اینه که شما برنامتون رو طوری بنویسید که خودش رو با رزولوشنی که کاربر انتخاب کرده تطبیق بده و با رزولوشن های مختلف انعطاف پذیر باشه.
اینو میگن User Friendly !!!!
Beyondsoft
یک شنبه 16 مرداد 1384, 01:43 صبح
ابته این درسته که برنامه باید طوری نوشته بشود که انعطاف پذیر باشه ولی این user friendly نیست.
به این می گن سازگاری
SYSMAN
یک شنبه 16 مرداد 1384, 02:33 صبح
اینجا فقط سر به سر هم می زارید که چی بشه یک کمی هم از اون 2 گووله هاتون کار بکشید
آقا اینم کد تغییر وضوح به 800 در 600:
یه کلاس می سازی این کد رو قرار می دی اونجا
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) هر وضوح تصویر استانداردی می تونید قرار بدهید
tayebeh
سه شنبه 02 مرداد 1386, 08:10 صبح
سلام
اگه کاربر در هنگام که برنامه run هست resolution را عوض کند چیکار باید کرد؟آیا راهی هست که جلوی این کار گرفته شود؟
باتشکر
leilav_1984
سه شنبه 02 مرداد 1386, 09:54 صبح
ببخشید کی این حق رو از ما گرفته|؟؟؟
خوب شاید user بخت برگشته یه برنامه در حال اجرای دیگه هم داشته باشه که با Resolutionی که ما میدیم جور نباشه
یا اصلا VGAش اون resolution رو نده
war1351
یک شنبه 02 تیر 1387, 01:44 صبح
استاد عزیز آیا میتونی سورس این کد رو با VB.NET  بزاری تو همین تاپیک ممنون میشم
eli_joon
یک شنبه 07 مهر 1387, 08:44 صبح
سلام دوست عزیز .
منم به سورس این کد نیاز دارم .
ممنون
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.