Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Change resolution ?

  1. #1
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Wink Change resolution ?

    Hiện tại mình đang tìm cách thay đổi cái resolution của user nhưng vẫn chưa tìm được cách làm trên .net (trên native code thì được).

    Mò ra được cái Forms.Screen nhưng nó chỉ cho get, ko cho change

    Có ai biết về vụ này thì chỉ mình với

    P/s: Do đang code game nên phải bắt buộc resolution là 1024x768 chạy mới ổn.
    Keep moving forward!

    ... Retired ...

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Cái này có thể thực hiện thông qua Resolution class mà.

    Code:
        FixHeight = 768;
        FixWidth = 1024;
        Resolution.CResolution ChangeRes = new Resolution.CResolution(FixHeight, FixWidth);
    Thử xem, Dr cũng không rõ lắm về C#.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    HCM
    Bài viết
    365

    Làm gì có sẵn như vậy chắc là 1 lớp bọc API thôi, tìm trên WWW.GOOGLE.COM với từ khóa "ChangeDisplaySettings C#" là ra liền

  4. #4
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Thử nè

    PHP Code:
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Runtime.InteropServices;

    namespace 
    ScreenResolution
    {

      public class 
    Form1 System.Windows.Forms.Form
      
    {
        public 
    enum DMDO
        
    {
          DEFAULT = 
    0,
          
    D90 1,
          
    D180 2,
          
    D270 3
        
    }

        [
    StructLayout(LayoutKind.SequentialCharSet=CharSet.Auto)]
          
    struct DEVMODE
        
    {
          public const 
    int DM_DISPLAYFREQUENCY 0x400000;
          public const 
    int DM_PELSWIDTH 0x80000;
          public const 
    int DM_PELSHEIGHT 0x100000;
          private const 
    int CCHDEVICENAME 32;
          private const 
    int CCHFORMNAME 32;

          [
    MarshalAs(UnmanagedType.ByValTStrSizeConst=CCHDEVICENAME)]
          public 
    string dmDeviceName;
          public 
    short dmSpecVersion;
          public 
    short dmDriverVersion;
          public 
    short dmSize;
          public 
    short dmDriverExtra;
          public 
    int dmFields;

          public 
    int dmPositionX;
          public 
    int dmPositionY;
          public 
    DMDO dmDisplayOrientation;
          public 
    int dmDisplayFixedOutput;

          public 
    short dmColor;
          public 
    short dmDuplex;
          public 
    short dmYResolution;
          public 
    short dmTTOption;
          public 
    short dmCollate;
          [
    MarshalAs(UnmanagedType.ByValTStrSizeConst=CCHFORMNAME)]
          public 
    string dmFormName;
          public 
    short dmLogPixels;
          public 
    int dmBitsPerPel;
          public 
    int dmPelsWidth;
          public 
    int dmPelsHeight;
          public 
    int dmDisplayFlags;
          public 
    int dmDisplayFrequency;
          public 
    int dmICMMethod;
          public 
    int dmICMIntent;
          public 
    int dmMediaType;
          public 
    int dmDitherType;
          public 
    int dmReserved1;
          public 
    int dmReserved2;
          public 
    int dmPanningWidth;
          public 
    int dmPanningHeight;
        }

        [
    DllImport("user32.dll"CharSet=CharSet.Auto)]
          
    //static extern int ChangeDisplaySettings( DEVMODE lpDevMode,  int dwFlags);

        
    static extern int ChangeDisplaySettings( [Inref DEVMODE lpDevMode,  int dwFlags);
        private 
    System.ComponentModel.Container components null;
        public 
    Form1()
        {
          
    InitializeComponent();
        }
        protected 
    override void Disposebool disposing )
        {
          if( 
    disposing )
          {
            if (
    components != null)
            {
              
    components.Dispose();
            }
          }
          
    base.Disposedisposing );
        }

        
    #region Windows Form Designer generated code
        
    private void InitializeComponent()
        {
          
    this.AutoScaleBaseSize = new System.Drawing.Size(614);
          
    this.ClientSize = new System.Drawing.Size(292273);
          
    this.Text "Xcross87 không viết code này (Y:DY) ";

        }
        
    #endregion

        
    static void Main()
        {
          
    Form1 r = new Form1();
          
    r.ChangeRes();
          
    Application.Run(new Form1());
        }

        
    void ChangeRes()
        {
          
    Form1 t = new Form1();
          
    long RetVal=0;
          
    DEVMODE dm = new DEVMODE();
          
    dm.dmSize= (short)Marshal.SizeOf(typeof(DEVMODE));
          
    dm.dmPelsWidth 1024;
          
    dm.dmPelsHeight768;
          
    dm.dmDisplayFrequency=85;
          
    dm.dmFields DEVMODE.DM_PELSWIDTH DEVMODE.DM_PELSHEIGHT DEVMODE.DM_DISPLAYFREQUENCY;
          
    RetVal ChangeDisplaySettings(ref dm0);
        }
      }

    Quên..

    Tham khảo thêm ở CodeProject.Com

    Code:
    http://www.codeproject.com/KB/cs/csdynamicscrres.aspx

    Vui lòng không gửi liên tục nhiều bài viết liền nhau trong một đề tài. (Nhắc nhở bởi Dreaminess)
    None!

  5. #5
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Ặc ặc, đoạn code này từ tối hôm qua tui có search google rồi.

    chưa tìm được cách làm trên .net (trên native code thì được).
    Đây nè

    P/s: cũng chả hiểu tại sao tui chạy cái code C# sử dụng API đó (tối hôm qua) nó quăng ra cái msgbox là ko change được :((.
    Keep moving forward!

    ... Retired ...

  6. #6
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Mặc định Change resolution ?

    Kiểm tra trị trả về của RetVal.

  7. #7
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Kiểm tra trị trả về của RetVal.
    Nghĩa là sao hả anh ? Có phải là giá trị trả về khi change resolution ?

    Nếu đúng thì cái wrapper nó có kiểm tra:
    Code:
     iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_UPDATEREGISTRY);
    
                        switch (iRet)
                        {
                            case User_32.DISP_CHANGE_SUCCESSFUL:
                                {
                                    break;
    
                                }
                            case User_32.DISP_CHANGE_RESTART:
                                {
    
                                    MessageBox.Show("Description: You Need To Reboot For The Change To Happen.\n If You Feel Any Problem After Rebooting Your Machine\nThen Try To Change Resolution In Safe Mode.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    break;
                                }
                            default:
                                {
    
                                    MessageBox.Show("Description: Failed To Change The Resolution.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    break;
                                }
                        }
    Ko hiểu sao em chạy lần nào cũng đều dính cái msgbox "Failed to change ...". Chuyển từ 800x600 lên 1024x768 và ngược lại đều ko đc :(
    Keep moving forward!

    ... Retired ...

  8. #8
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Trong code trên, tần số 85 cao quá, máy anh test ra fail, đổi lại thành 60, 65, 70, 75 thử xem, hoặc lấy hết các tần số support.

  9. #9
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi TQN Xem bài viết
    Trong code trên, tần số 85 cao quá, máy anh test ra fail, đổi lại thành 60, 65, 70, 75 thử xem, hoặc lấy hết các tần số support.
    Máy em run với 60 Hz là mắc xì măm không với cao hơn được T_T
    None!

  10. #10
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Trong code trên, tần số 85 cao quá, máy anh test ra fail, đổi lại thành 60, 65, 70, 75 thử xem, hoặc lấy hết các tần số support.
    Oke, thanx anh. Em test chạy được với cái 60 à T_T

    Khửa khửa, tách thành class để dành xài thôi. Thanks Xcross nhá
    Đã được chỉnh sửa lần cuối bởi nhc1987 : 07-12-2007 lúc 10:30 PM.
    Keep moving forward!

    ... Retired ...

Các đề tài tương tự

  1. We Change IP - Phần mềm đổi địa chỉ IP
    Gửi bởi hoahong89 trong diễn đàn Software (Phần mềm) | Ebooks
    Trả lời: 0
    Bài viết cuối: 11-05-2012, 03:17 PM
  2. Canh chỉnh, co giãn control trên form C# hiệu quả khi thay đổi screen resolution?
    Gửi bởi commoncm trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 06-11-2011, 10:26 PM
  3. Điều kiện kiểm tra khi change password?
    Gửi bởi vitusodo trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 20-07-2011, 09:39 AM
  4. Làm sao để change phím Ctrl + C = 1 phím khác?
    Gửi bởi chuong01 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 14-01-2011, 01:26 PM
  5. Scope resolution operator . Dịch hộ mình với
    Gửi bởi luuly1103 trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 8
    Bài viết cuối: 18-07-2010, 12:15 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn