PDA

View Full Version : سوال: آیا تغییر رزولوشن LCD خارج از رنچ تعریف شده ممکنه؟



اصغر (پآچ)
جمعه 20 خرداد 1390, 11:14 صبح
سلام دوستان

من یه netbook دارم که رزولوشن های تعریف شده براش 600*800 و 600*1024 و 768*1024 و 864*1152 می باشند. رزولوشن نرمال و بهینه 600*1024 حالا من می خوام این رزولوشن رو به 768*1311 یا 768*1366 تغییر بدم جستجو کردم با این کد:


function TForm1.SetScreenResolution(Width, Height: integer): Longint;
var
DeviceMode: TDeviceMode;
begin
with DeviceMode do begin
dmSize := SizeOf(TDeviceMode);
dmPelsWidth := Width;
dmPelsHeight := Height;
dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
end;
Result := ChangeDisplaySettings(DeviceMode, CDS_UPDATEREGISTRY);
end;


و این کد:


function TForm1.NuevaRes(XRes, YRes: DWord):integer;
var
lpDevMode : TDeviceMode;
begin
EnumDisplaySettings(nil, 0, lpDevMode);
lpDevMode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth:=XRes;
lpDevMode.dmPelsHeight:=YRes;
NuevaRes:=ChangeDisplaySettings(lpDevMode, 0);
end;

برخورد کردم اما در این کدها به نظرم (اون طور که من تست کردم) فقط رزولوشن هایی رو می تونی استفاده کنی که برای کارت گرافیک یا LCD تعریف شده باشند. چطور می تونم رزولوشن رو خارج از محدوده تعریف شده بکار ببرم؟

راستی توی قسمت تغییر رزولوشن نوع LCD دستگاه رو Generic Non-PnP Monitor تشخیص داده و در قسمت تنظیمات مانیتور تیک Hide modes that this monitor cannot display غیر فعاله و تنها فرکانسی که در قسمت Screen refresh rate موجوده 60Hertz است. چطوری میشه LCD دستگاه رو درایورش رو پیدا کنم؟

ممنون و موفق و موید باشید

Mahmood_M
شنبه 21 خرداد 1390, 22:27 عصر
می تونید با تغییر در Registry این کار رو انجام بدید ، در مسیر زیر :
HKEY_CURRENT_CONFIG\System\CurrentControlSet\Contr ol\VIDEO
Key هایی برای کارت گرافیک قرار داره ، توجه کنید که ممکنه شما یک کارت گرافیک داشته باشید ولی تعداد این Key ها بیشتر باشه ! ، به خاطر اینه که با هر بار آپدیت یا نصب دوباره ی درایور کارت گرافیکی ، یک مقدار جدید در اینجا ایجاد میشه ، احتمالا آخرین Key مربوط به Resolution فعلی هست ، به هر حال ... ، درون هر کدوم از این Key ها یک Key با عنوان " 0000 " هست ، توی این Key چند Value وجود داره ، دو تا از این Value ها DefaultSettings.XResolution و DefaultSettings.YResolution هستند ، می تونید این مقادیر رو تغییر بدید ، بعد از Restart ویندوز Resolution تغییر میکنه
البته ممکنه روی برخی از کارت گرافیکها و یا روی ویندوز Seven عمل نکنه !

این رو هم اضافه کنم که : از اینکه مشکلی برای ویندوز یا کارت گرافیک ایجاد نکنه اطمینان ندارم !!

فکر نمی کنم راهی باشه که با دستورات API بشه همچین کاری کرد ، چون صحیح بودن مقدار Resolution در سطح ویندوز بررسی میشه

موفق باشید ...