تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] كيفية تغيير دقة الشاشة ؟
#1
Bug 
بسم الله الرحمن الرحيم


السلام عليكم ورحمة الله وبركاته


ماهو الكود الذي يمكنني من تغيير دقة الشاشة الى دقة محددة ( مثلا الى دقة 1024 *768)



والف شكر
الرد }}}
تم الشكر بواسطة:
#2
بواسطة دالة API


ويوجد موضوع لذلك في موقع CodeProject هنا


ولإختصار الموضوع ، وجدت لك هذه الكلاس قم بإضافتها للمشروع



كود :
Class ResolutionChanger
 Public Enum ChangeResult
   Success
   Restart
   Fail
   ResolutionNotSupported
 End Enum

 Public Function SetResolution(ByVal Width As UInteger, ByVal Height As UInteger) As ChangeResult
   Dim DevMode As New DEVMODEA
   If User_32.EnumDisplaySettingsA(Screen.PrimaryScreen.DeviceName, ENUM_CURRENT_SETTINGS, DevMode) Then
     DevMode.dmPelsWidth = Width
     DevMode.dmPelsHeight = Height
     Dim ReturnValue = User_32.ChangeDisplaySettingsA(DevMode, CDS_TEST)
     If ReturnValue = DISP_CHANGE_FAILED Then
       'The Requested resolution is not supported by the system
       Return ChangeResult.ResolutionNotSupported
     Else
       ReturnValue = User_32.ChangeDisplaySettingsA(DevMode, CDS_UPDATEREGISTRY)
       Select Case ReturnValue
         Case DISP_CHANGE_RESTART
           'The resolution cannot be change dynamically on every system
           'Windows 9x and some Laptop (XP,Vista,Windows7) have to reboot.
           Return ChangeResult.Restart
         Case DISP_CHANGE_SUCCESSFUL
           'Resolution was changed
           'This is not an assurance that the new resolution will render
           'proprely on every system. It only means that the registery was
           'updated succesfuly and that the driver have not return any
           'error
           Return ChangeResult.Success
         Case Else
           'An error has caused the resolution not to be changed
           Return ChangeResult.Fail
       End Select
     End If
   End If
 End Function
 '
 '============Region Interop ==============================================
 '
 '
 Private Const ENUM_CURRENT_SETTINGS As Integer = -1
 Private Const CDS_UPDATEREGISTRY As Integer = 1
 Private Const CDS_TEST As Integer = 2
 Private Const DISP_CHANGE_SUCCESSFUL As Integer = 0
 Private Const DISP_CHANGE_RESTART As Integer = 1
 Private Const DISP_CHANGE_FAILED As Integer = -1

 <System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)> _
 Public Structure DEVMODEA
   'BYTE[32]
   <System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst:=32, ArraySubType:=System.Runtime.InteropServices.UnmanagedType.I1)> _
   Public dmDeviceName() As Byte
   Public dmSpecVersion As UShort
   Public dmDriverVersion As UShort
   Public dmSize As UShort
   Public dmDriverExtra As UShort
   Public dmFields As UInteger
   Public Union1 As Anonymous_2338c0fc_03a3_4514_b536_fb9bb5df14c5
   Public dmColor As Short
   Public dmDuplex As Short
   Public dmYResolution As Short
   Public dmTTOption As Short
   Public dmCollate As Short
   <System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst:=32, ArraySubType:=System.Runtime.InteropServices.UnmanagedType.I1)> _
   Public dmFormName() As Byte
   Public dmLogPixels As UShort
   Public dmBitsPerPel As UInteger
   Public dmPelsWidth As UInteger
   Public dmPelsHeight As UInteger
   Public Union2 As Anonymous_7557e508_845c_4777_b9f2_a1496c1c7b21
   Public dmDisplayFrequency As UInteger
   Public dmICMMethod As UInteger
   Public dmICMIntent As UInteger
   Public dmMediaType As UInteger
   Public dmDitherType As UInteger
   Public dmReserved1 As UInteger
   Public dmReserved2 As UInteger
   Public dmPanningWidth As UInteger
   Public dmPanningHeight As UInteger
 End Structure

 <System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Explicit)> _
 Public Structure Anonymous_2338c0fc_03a3_4514_b536_fb9bb5df14c5
   <System.Runtime.InteropServices.FieldOffsetAttribute(0)> _
   Public Struct1 As Anonymous_a67d541d_da92_408e_8852_89977e56cead
   <System.Runtime.InteropServices.FieldOffsetAttribute(0)> _
   Public Struct2 As Anonymous_d973d7e7_ad4c_4155_86fe_6d2b51ab5f04
 End Structure

 <System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Explicit)> _
 Public Structure Anonymous_7557e508_845c_4777_b9f2_a1496c1c7b21
   <System.Runtime.InteropServices.FieldOffsetAttribute(0)> _
   Public dmDisplayFlags As UInteger
   <System.Runtime.InteropServices.FieldOffsetAttribute(0)> _
   Public dmNup As UInteger
 End Structure

 <System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)> _
 Public Structure Anonymous_a67d541d_da92_408e_8852_89977e56cead
   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
 End Structure

 <System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)> _
 Public Structure Anonymous_d973d7e7_ad4c_4155_86fe_6d2b51ab5f04
   Public dmPosition As POINTL
   Public dmDisplayOrientation As UInteger
   Public dmDisplayFixedOutput As UInteger
 End Structure

 <System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)> _
 Public Structure POINTL
   Public x As Integer
   Public y As Integer
 End Structure

 Partial Public Class User_32
   <System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint:="EnumDisplaySettingsA")> _
   Public Shared Function EnumDisplaySettingsA(<System.Runtime.InteropServices.InAttribute(), System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)> ByVal lpszDeviceName As String, ByVal iModeNum As Integer, <System.Runtime.InteropServices.OutAttribute()> ByRef lpDevMode As DEVMODEA) As <System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)> Boolean
   End Function

   <System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint:="ChangeDisplaySettingsA")> _
   Public Shared Function ChangeDisplaySettingsA(<System.Runtime.InteropServices.OutAttribute()> ByRef lpDevMode As DEVMODEA, ByVal dwFlags As UInteger) As Integer
   End Function
 End Class

End Class


طريقة الاستخدام :


كود :
Public Class Form1

 Private Resolution As New ResolutionChanger
 Private OldWidth As UInteger
 Private OldHeight As UInteger
 

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   OldHeight = CUInt(Screen.PrimaryScreen.Bounds.Height)
   OldWidth = CUInt(Screen.PrimaryScreen.Bounds.Width)
   Select Case Resolution.SetResolution(800, 600)
     Case ResolutionChanger.ChangeResult.Success
       MsgBox("The Resolution was changed", MsgBoxStyle.OkOnly)
     Case ResolutionChanger.ChangeResult.Restart
       MsgBox("Restart your system to activate the new resolution setting", MsgBoxStyle.OkOnly)
     Case ResolutionChanger.ChangeResult.Fail
       MsgBox("The resolution couldn't be changed", MsgBoxStyle.OkOnly)
     Case ResolutionChanger.ChangeResult.ResolutionNotSupported
       MsgBox("The requested resolution is not supported by your system", MsgBoxStyle.OkOnly)
   End Select
 End Sub

End Class

الرد }}}
تم الشكر بواسطة: sooriaty03 , mohammed moh , kafi2030 , kslawy
#3
   
.zip   Change Resulation.zip (الحجم : 31.26 ك ب / التحميلات : 218) شكرا
اخي الشاكي لله
على اجابتك


قمت بادراج كلاس جديد، ووضعت الكود الذي اشرت اليه ضمنه


ولكـــــــــــــــــــــــن
بمجرد ادراج الكود ضمن الكلاس الجديد، ظهرت لدي مجموعة من الاسطر تشير الى خطأ
كما هو مبين بالصورة المرفقة


ارجو منك اخي الكريم، تعديل المثال المرفق

والف الف شكر
الرد }}}
تم الشكر بواسطة:
#4
للرفع
الرد }}}
تم الشكر بواسطة:
#5
السلام عليكم ورحمة الله وبركاته

بعد إذن أخي الشاكي بالله

الرابط الذي أرفقه أخي الشاكي بالله من موقع CodeProject
يحتوي على مثال مكتوب بلغة السي شارب وقد قمت بتحويله إلى الفيجوال بيسك

البرنامج سيقوم بتغيير الدقة مباشرة عند بداية تشغيله إلى 1024 × 768 ثم سيقوم بإعادة الدقة الأساسية للجهاز فور الخروج من البرنامج

رابط البرنامج:
ChangeResolution.zip

بالتوفيق
الرد }}}
تم الشكر بواسطة:
#6
الف الف شكر
اخي
Sooriaty03

على تحويلك للكود ليعمل تحت اطار فيجوال بيسك دوت نت

بارك الله فيك، وباخي الشاكي لله

وبهذا المنتدى الاكثر من رائع

والسلام عليكم
الرد }}}
تم الشكر بواسطة:
#7
السلام عليكم


بعد تجريب المثال عدة مرات
اصبح لا يعمل، واصبح يعطي رسالة خطأ



Description : fail to change resulation

ملاحظة ( نظام الويندوز لدي 7)
بصراحة الكود اشتغل مرة او مرتين ولم يعد يشتغل بعد .

الرجاء مراجعة المثال وتصحيح الكود


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#8
السلام عليكم و رحمة الله و بركاته,

جزاكم الله خيراً على هذا الموضوع و على المشاركات الموجودة فيه.
لقد قمت بتحميل المثال الذي وضعه أخي [b]sooriaty03 [/b]و بعد أن حوله من #C إلى VB Smile

و لكن, لقد قام الانتي فايروس بمعاملة الملف على إنه فايروس!
و هذا الأمر حدث معي في مثال سابق من أحد المواضيع هنا في المنتدى, و قمت بسؤال صاحب الموضوع عن هذا السبب فأجابني الأخ Omar Mekkawy بأن السبب:
إقتباس :عادي أخوي لاتقلق 
الأنتي فايروس يعتبر الملف كفايروس لأن هذه الأكواد أغلبها يستخدم في الفيروسات وبرامج الإختراق ( لاتخف ) 


المهم, قمت بتحميل مثال أخي [b]sooriaty03 [/b]و توكلت على الله و طلع ليس فايروس و إشتغل المثال تمام التمام.

سؤالي الان هو:
لو أردنا وضع مثال أخي [b]sooriaty03[/b] مع أي برنامج نقوم بعمله من أجل تغيير وضوح الشاشة إلى 1024 × 768 وقام الأنتي فايروس معاملته كفايروس ... سيكون من الصعب إقناع العميل بتشغيل البرنامج نتيجة خوفه من معاملة الانتي فايروس للمثال على إنه فايروس! فكيف نجعل المثال لا يعامل كفايروس من قبل الانتي فايروس؟

تحياتي

و السلام عليكم و رحمة الله و بركاته
الرد }}}
تم الشكر بواسطة: sooriaty03
#9
(22-09-13, 05:06 PM)hoob computer كتب : السلام عليكم و رحمة الله و بركاته,

جزاكم الله خيراً على هذا الموضوع و على المشاركات الموجودة فيه.
لقد قمت بتحميل المثال الذي وضعه أخي [b]sooriaty03 [/b]و بعد أن حوله من #C إلى VB Smile

و لكن, لقد قام الانتي فايروس بمعاملة الملف على إنه فايروس!
و هذا الأمر حدث معي في مثال سابق من أحد المواضيع هنا في المنتدى, و قمت بسؤال صاحب الموضوع عن هذا السبب فأجابني الأخ Omar Mekkawy بأن السبب:
إقتباس :عادي أخوي لاتقلق 
الأنتي فايروس يعتبر الملف كفايروس لأن هذه الأكواد أغلبها يستخدم في الفيروسات وبرامج الإختراق ( لاتخف ) 


المهم, قمت بتحميل مثال أخي [b]sooriaty03 [/b]و توكلت على الله و طلع ليس فايروس و إشتغل المثال تمام التمام.

سؤالي الان هو:
لو أردنا وضع مثال أخي [b]sooriaty03[/b] مع أي برنامج نقوم بعمله من أجل تغيير وضوح الشاشة إلى 1024 × 768 وقام الأنتي فايروس معاملته كفايروس ... سيكون من الصعب إقناع العميل بتشغيل البرنامج نتيجة خوفه من معاملة الانتي فايروس للمثال على إنه فايروس! فكيف نجعل المثال لا يعامل كفايروس من قبل الانتي فايروس؟

تحياتي

و السلام عليكم و رحمة الله و بركاته


السلام عليكم ورحمة الله وبركاته


بارك الله فيك أخي وبالفعل سؤالك في مكانه
لأنني لاحظت أن برامج الحماية من الفيروسات حاليا قد دخلت مرحلة جديدة من الحماية ألا وهي حساب عدد المستخدمين لهذا البرنامج حول العالم أو عدد الذين قاموا بتحميل هذا الملف حول العالم !!!
يعني على سبيل المثال: المشروع المرفق في مشاركتي السابقة بعد كتابته رفعته إلى حسابي على موقع dropbox ثم أرفقته في المشاركة... الآن عندما أقوم بالضغط عليه لتحميله على نفس جهازي يقوم الجهاز بإعطائي هذه الرسالة (لا يتم تنزيله بشكل شائع وربما يكون خطرا)!!!HuhHuhExclamationExclamation


لكن أنا أتوقع أنك عندما تقوم بتنزيل البرنامج على جهاز العميل لن تكون هناك أي رسائل تحذيرية ... والله أعلم
الرد }}}
تم الشكر بواسطة: hoob computer
#10
السلام عليكم


هل البرنامج يعمل على نظام ويندوز 7


لانه لا يعمل عندي
ويعطي رسالة

fail to change resulation


ما السبب وكيف الحل لحل تلك المشكلة العويصة !ّ!!!!!



مع العلم بأن كرت الشاشة لدي يدعم دقة 1920 * 1980
والشاشة 22 ل ج
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تغيير المسار الي مسار البرنامج في تقرير ميكروسوفت atefkhalf2004 2 107 02-04-24, 05:05 PM
آخر رد: atefkhalf2004
  تغيير على كود الحفظ محمد خيري 6 232 28-03-24, 04:20 PM
آخر رد: محمد خيري
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 239 25-02-24, 11:26 PM
آخر رد: heem1986
  كيفية تنفيذ امر عند التعليم على checkbox بالداتا جريد فيو heem1986 2 162 21-02-24, 01:37 AM
آخر رد: heem1986
  كيفية انشاء سكريبت لقاعدة بيانات من خلال الكود heem1986 1 214 20-02-24, 12:00 AM
آخر رد: Kamil
  كيفية تنفيذ أمر عرض بيانات من فورم ثان مصمم هاوي 7 338 19-02-24, 12:28 AM
آخر رد: مصمم هاوي
  كيفية حفظ وتحزيم المشروع وتشغيله كبرنامج علىجميع الاجهزة الرائد 3 1,137 18-02-24, 10:37 PM
آخر رد: الحزين اليماني
  تغيير اسم حقل او تغيير نوع البيان atefkhalf2004 5 304 31-01-24, 04:09 PM
آخر رد: atefkhalf2004
Star دقة الشاشة 1080 waataanys 1 225 05-01-24, 12:45 AM
آخر رد: HALIM ELEULMA
  [سؤال] كيفية انشاء فورم داخل مشروعى عاصم النجار 2 314 05-01-24, 12:36 AM
آخر رد: HALIM ELEULMA

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم