نمایش نتایج 1 تا 11 از 11

نام تاپیک: دريافت و تغيير Resolution و Refresh Rate صفحه نمايش

  1. #1

    Tick دريافت و تغيير Resolution و Refresh Rate صفحه نمايش

    با سلام خدمت دوستان ارجمند
    من ميخواهم كه Resolution و Refresh Rate صفحه نمايش را دريافت كنم و اونو به مقدار دلخواه تغيير بدم و بعد از خارج شدن از برنامه به رزوليشن اولي باز گردد.
    دستور Screen اطلاعات را دريافت مي كنه ولي Refresh Rate رو دريافت نمي كنه.
    با تشكر از كمك و توجه دوستان.
    --------------------------------------------------------------
    به جاي اينكه سعي كني جاي كسي را بگيري ، سعي كن جاي واقعي خود را بيابي.

  2. #2
    در صورت امکان کمک کنید واقعا ضروری است.مچکرم

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    54
    سلام
    اگه جستجو می کردی...!
    https://barnamenevis.org/showthread.php?t=52234

  4. #4

    Question

    با سلام خدمت دوست عزيز كد زير Resolutoin را تغيير مي ده
    procedure SetResolution(ResX, ResY: DWord);
    var
    lDeviceMode : TDeviceMode;
    begin
    EnumDisplaySettings(nil, 0, lDeviceMode);
    lDeviceMode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
    lDeviceMode.dmPelsWidth :=ResX;
    lDeviceMode.dmPelsHeight:=ResY;
    ChangeDisplaySettings(lDeviceMode, 0);
    end;
    ولي من بغير از Resolution ، مي خواهم كه Refresh Rate مثلا 85HZ را نيز تغيير دهم در صورت امكان كمك نماييد.
    با تشكر از دوستان گرامي.
    ------------------------------------------------------------------------------------
    به جاي اينكه سعي كنيد جاي كسي را بگيريد ، سعي كنيد جاي واقعي خود را بيابيد.

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    54
    سلام
    تغییر Resolution و Refresh Rate

    function TForm1.DisplaySettings(const ScreenWidth, ScreenHeight, RefreshRate: integer): integer;
    var
    DevMode: TDeviceMode;
    begin
    with DevMode do
    begin
    dmSize := SizeOf(DevMode);
    dmPelsWidth := ScreenWidth;
    dmPelsHeight := ScreenHeight;
    dmDisplayFrequency := RefreshRate;
    dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
    end;
    Result := ChangeDisplaySettings(DevMode, CDS_UPDATEREGISTRY);

    case Result of
    DISP_CHANGE_SUCCESSFUL:; {'The settings change was successful.'}
    DISP_CHANGE_RESTART : MessageDlg('The computer must be restarted in order for the graphics mode to work.', mtInformation, [mbOK], 0);
    DISP_CHANGE_BADFLAGS : MessageDlg('An invalid set of flags was passed in.', mtInformation, [mbOK], 0);
    DISP_CHANGE_FAILED : MessageDlg('The display driver failed the specified graphics mode.', mtInformation, [mbOK], 0);
    DISP_CHANGE_BADMODE : MessageDlg('The graphics mode is not supported.', mtInformation, [mbOK], 0);
    DISP_CHANGE_NOTUPDATED: MessageDlg('Unable to write settings to the registry.', mtInformation, [mbOK], 0);
    end;
    end;

  6. #6

    Question

    با سلام خدمت دوست گرامي
    من وقتي 60و600و800 را وي دم پيغام زير را ميدهد :
    The graphics mode is not supported
    لطفا در صورت امكان مشكل را بگوييد.

  7. #7

    Thumbs up

    با سلام
    در خط پايين
    dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
    گزينه DM_BITSPERPEL or رو حذف كردم درست شد و بخوبي عمل مي كند
    dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
    با تشكر از دوست گرامي كه مرا راهنمايي و كمك كرد.
    ------------------------------------------------------------------------------------------------
    بجاي اينكه سعي كنيد جاي كسي را بگيريد ، سعي كنيد جاي واقعي خود را بيابيد.

  8. #8

    Question خواندن Resolution و refresh rate

    من با تابع بالا صفحه نمایش را تغییر می دهم ولی باید resolution قبلی را ذخیره نماییم تا از برنامه خارج شد به حالت قبلی باز گردد با کد پایین فقط resolution را می توانم دخیره کنم ولی Refresh Rate را نمی توانم.
    a:=Screen.Width;
    b:=Screen.Height;
    خوب حالا چطوری Refresh Rate را بخونم.
    لطفا راهنماییم کنید.

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    54
    خواندن Refreshrate صفحه نمایش:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    DevMode:_devicemodea;
    begin
    EnumDisplaySettings( nil, Cardinal(-1), DevMode);
    ShowMessage(IntToStr(DevMode.dmDisplayFrequency));
    end;
    اگه دقت کنی با فراخونی تابع EnumDisplaySettings مقادیر مرتبط در DevMode که از نوع _devicemodea قرار می گیره که نوع _devicemodea بصورت زیره:

      _devicemodeA = packed record
    dmDeviceName: array[0..CCHDEVICENAME - 1] of AnsiChar;
    dmSpecVersion: Word;
    dmDriverVersion: Word;
    dmSize: Word;
    dmDriverExtra: Word;
    dmFields: DWORD;
    dmOrientation: SHORT;
    dmPaperSize: SHORT;
    dmPaperLength: SHORT;
    dmPaperWidth: SHORT;
    dmScale: SHORT;
    dmCopies: SHORT;
    dmDefaultSource: SHORT;
    dmPrintQuality: SHORT;
    dmColor: SHORT;
    dmDuplex: SHORT;
    dmYResolution: SHORT;
    dmTTOption: SHORT;
    dmCollate: SHORT;
    dmFormName: array[0..CCHFORMNAME - 1] of AnsiChar;
    dmLogPixels: Word;
    dmBitsPerPel: DWORD;
    dmPelsWidth: DWORD;
    dmPelsHeight: DWORD;
    dmDisplayFlags: DWORD;
    dmDisplayFrequency: DWORD;
    dmICMMethod: DWORD;
    dmICMIntent: DWORD;
    dmMediaType: DWORD;
    dmDitherType: DWORD;
    dmICCManufacturer: DWORD;
    dmICCModel: DWORD;
    dmPanningWidth: DWORD;
    dmPanningHeight: DWORD;
    end;
    یعنی شما می تونی خیلی دیگه از مقادیر مربوط به صفحه نمایش خودته بدست بیاری مثل Resolution, RefreshRate, ColorBits و ...
    مثلا
      DevMode.dmPelsWidth;
    DevMode.dmPelsHeight;
    DevMode.dmDisplayFrequency;
    DevMode.dmBitsPerPel;
    ...
    برای تغییر دادن هم فقط لازم مثل تابع که قبلا گفتم فیلدهای مختلف رکورد DevMode را مقدار مناسب بدی.

    [برای اینکه بحث کامل تر بشه] اینم برای اینه که اگر بخوای در برنامت ایجاد تغییرات در تنظیمات صفحه نمایشت را دیتکت کنی
    type
    TForm1 = class(TForm)

    ...
    private
    procedure WMDisplayChange(var Message:TMessage) ; message WM_DISPLAYCHANGE;
    ...



    procedure ;TForm1.WMDisplayChange(var Message: TMessage) ;
    begin
    ShowMessage('Changes in display Detected!') ;
    inherited;
    end;

  10. #10

    Thumbs up

    با تشكر از دوست گرامي ممنون كه كمك كردي. مشكل ذخيره و تغيير Resolutionn به كلي حل شد.
    ممنون.

  11. #11

    نقل قول: دريافت و تغيير Resolution و Refresh Rate صفحه نمايش

    من هم همین مشکل رو دارم ولی چیزی متوجه نشدم میشه واضحتر توضیح بدهید
    کد مربوط به تغییر رزولوشن رو دارم ولی تغییر رفرش رو ندارم
    اگه ممکنه کد مربوط به تغییر رفرش رو بزارید

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •