救命. (300分)

  • 主题发起人 主题发起人 卷起千堆雪tyn
  • 开始时间 开始时间

卷起千堆雪tyn

Unregistered / Unconfirmed
GUEST, unregistred user!
;有哪位朋友可以帮我啊?

; QQ上一位DFW的朋友算是缠上我了,比我女友还缠人;
; 如果我不能帮他解决,我算是跑不了了。

; 如何得到当前显示器的刷新率?怎么动态改变显示器的刷新率?要求在2000、98下均可以实现。

; 万分感激,救我吧~~~~~

; 给各位提示一下:偶记得是用EnumDisplaySettings的~~~~
 
唉,老大,偶是心有余而力不足呀:)
呵呵,偶都还想问老大关于那个动态创建对象后对象名的使用的问题呢,老大记得去看看呀:)
 
得到GetDisplayFrequency
设置EnumDisplaySettings
 
我声明一下啊,卷大虾不只是性情中人,而且关键时刻也能为朋友两肋叉刀啊,现在他两肋
都叉满了刀了,连与女朋友拥抱都困难了。
上面那个问题我也有出100分啊
 
小学最近总是在给大家发分
 
我有一个vc类是可以实现的。但delphi嘛,还没有试过!
 
aaww这么夸张呀,还“叉”?我仿佛看到了一个烤乳猪or被雪冻住了的牛排:)
我好像有这方面的资料,等等,我找找先
 
果然是财主
还有这种变相送分的:)
 
用GetDeviceCaps函数
var
; i:integer ;
begin
; i:=GetDeviceCaps(GetDC(Handle),VREFRESH);
; ShowMessage(inttostr(i));
end;

改变分辨率请使用下面的函数ChangeDisplaySettings
var
; lpDevMode:TDEVMODE;
begin
; lpDevMode.dmFields:=DM_DISPLAYFREQUENCY;
; lpDevMode.dmDisplayFrequency:=85;
; ChangeDisplaySettings(lpDevMode,0);
end;
 
//条分辨率
function Dynam(X, Y: word): BOOL;
var
; lpDevMode: TDeviceMode;
begin
; Result := EnumDisplaySettings(nil, 0, lpDevMode);
; if Result then
; ; ;begin
; ; ;lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
; ; ;lpDevMode.dmPelsWidth := X;
; ; ;lpDevMode.dmPelsHeight := Y;
; ; ;Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
; ; ;end;
; ; ;end;
//调色
function dynac(x: longint): BOOL;
var
; lpDevMode: TDeviceMode;
begin
; Result := EnumDisplaySettings(nil, 0, lpDevMode);
; if Result then
; ; ;begin
; ; ;lpDevMode.dmFields := DM_BITSPERPEL ;
; ; ;lpdevmode.dmBitsPerPel :=x;
; ; ;Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
; ; ;end;
; ; ;end;
刷新率参照楼上的。
 
卷 大侠,树大招风啊,哈哈。。。 [:D][:D][:D]
 
冒昧地问一下:系统的刷新率是什么?是不是显示器的刷新率?
 
300算是被我强到了!!!哈哈哈
想问题不要死板!!用曲线救国就可以了
程序的代码我就不写了,大家都是高手,我只写方法
1.清理桌面,最小化当前所有的程序 (不是很难吧)
2.将鼠标移到屏幕中间 ;(移动鼠标也不难)
3.按下右健 (简单)
4.。。。。。(以下省略,就是我们平时改刷新率的步骤!只不过用自己的程序控制鼠标而已)
大家叫好!!“好!!!~~~”,突然,台下飞来N只臭鸡蛋,赶紧闪开!88
 
大虾们过招,果然精彩!!!![:D]
 
对不起没有Delphi 不好测试能否在2000下通过。

ChangeDisplaySettings changes the current display settings.
This function can change the current screen resolution and color depth,
among other things. Typically, a call to EnumDisplaySettings should preceed
this function, in order to adjust only the desired settings.

Parameters

lpDevMode
A DEVMODE structure that holds the new display settings.
Only the dmBitsPerPixel, dmPelsWidth, dmPelsHeight, dmDisplayFlags,
and dmDisplayFrequency members are used. (Windows 98, NT/2000:
The dmPosition member can also be used.) To restore the settings saved in
the registry, set this parameter and dwFlags to zero.
dwFlags
A combination of the following flags specifying how to change the display mode.
;If no flags are set (i.e., zero is specified), the graphics mode is changed
dynamically.
CDS_UPDATEREGISTRY
Save the new settings to the registry and also change the settings dynamically.
CDS_TEST
Test to see if the new settings are supported by the hardware, without actually
;changing the settings. The function's return value will indicate any problems
that may have occured.
CDS_FULLSCREEN
Go into full-screen mode. This setting cannot be saved.
CDS_GLOBAL
Save the new settings for all users. The CDS_UPDATEREGISTRY flag must also be specified.
CDS_SET_PRIMARY
Make this device the primary display device.
CDS_RESET
Change the settings even if they are the same as the current settings.
CDS_NORESET
Save the settings to the registry, but do not make them take effect yet.
The CDS_UPDATEREGISTRY flag must also be specified.
 
卷兄逢贴必300呀

话说用 YB_unique 的方法不行吗?
 
; ;函数功能:该函数把缺省显示设备的设置改变为由lpDevMode设定的图形模式,要改变一个特定显示设备的设置,请使用ChangeDisplaySettingEx函数。

; ; 函数原型:LONG ChangeDisplaySettings (LPDEVMODE lpDevMode, DWORD dwflags);

; ; 参数:

; ; lpDevMode:指向一个描述转变图表的DEVMODE的指针。DEVMODE的dmSize参数必须依DEVMODE结构的大小、字节进行初始化,dmDriveExtra参数必须初始化来显示DEVMODE随后的驱动数据的字节数,另外还可以选用以下参数:

; ; dmBitsPerPel每个像素的位数,dmPelsWidth像素宽度,dmPelsHeight像度高度,dmDisplayFlage模式标志。

; ; dmDisplayFrequency模式频率。

; ; dmposition在多显示配置中设备的位置(适用于Windows 98、Windows NT 5.0及以后版本)。

; ; 除了设置好DEVMOD结构中诸多元素的值之外,还必须要正确地设置dmFields元素中的标志。这些标志表明了DEVMODE结构中哪个元素在改变显示设置时使用了。如果在dmFields中没有设置正确的位,那么显示设置将不会发生变化。请设置好以下的标志:

; ; DM_BITSPERPEL使用dmBitsPerPel的值,DM_PELSWIDTH使用dmPelsWidth的值,

; ; DM_PELSHEIGHT使用dmPelsHeight的值,DM_DISPLAYFLAGS使用dmDisplayFlags的值,

; ; DM_DISPLAYFREQUENCY使用dmDisplayFrequency的值。

; ; DM_POSITION使用fdmPosition的值(适用于Windows98、WindowsNT5.0)。

; ; 如果lpDevMode为空。那么显示设置就使用注册表中的所有当前值。在显示模式动态地调整之后要想再回到缺省的模式,最简单的办法就是把lpDevMode参数置为空,使dwFlags参数置为0。

; ; dwflags:表明了图形模式如何改变,它可能是如下的几种形式中的一种:

; ; 0:表明当前屏幕的图形模式要动态地改变。

; ; CDS_UPDATEREGISTRY:表明当前屏幕的图形模式会动态地变化,并且该图形模式会更新注册表。该模式信息存贮在用户档案中。

; ; CDS_TEST:系统检测是否要设置被请求的图形模式。

; ; CDS_FULLSCREEN:从本质上讲该模式是暂时的。

; ; CDS_GLOBAL:该设置保存在全局设置区域内, 因此它们会影响所有的用户。该标志仅在与标志一起使用时才有效。CDS_SET_PRIMARY:该设备成为首要设备。

; ; CDS_RESET:设置要改变,即使请求的设置与当前设置一样。CDS_NORESET:设置保存在注册表中,但是它不起作用,该标志只有与CDS_UPDATEREGISTRY标志一起使用时才有效。

; ; 指定CDS_TEST允许一个应用确定哪个图形模式真正的有效。但并不会使系统变为那个有效的图形模式。

; ; 如果CDS_UPDATEREGISTRY被指定并且它可能会动态地改变图形模式。则注册表中保存该信息并且返回DISP_CHANGE_SUCCESSFUL如果不可能使用图形模式动态地改变,则注册表中保存该信息并且返回DISP_CHANGE_RESTART。

; ; Windows NT:如果指定了CDS_UPDATEREGISTRY并且在注册表中不能保存该信息,则图形模式不会改变,并且返回DISP_CHANGE_NOTUPDATERD。

; ; 返回值:ChangeDisplaySettings函数的返回值如下:

; ; DISP_CHANGE_SUCCESSFUL:设备改变成功。

; ; DISP_CHANGE_RESTART:为使图形模式生效计算机必须重新启动。

; ; DISP_CHANGE_BADFLAGS:标志的无效设置被传送。

; ; DISP_CHANGE_NOTUPDATED:在WindowsNT中不能把设置写入注册表。

; ; DISP_CHANGE_BADPARA:一个无效的参数被传递。它可以包括一个无效的标志或标志的组合。

; ; DISP_CHANGE_FAILED:指定图形模式的显示驱动失效。

; ; DISP_CHANGE_ADMODE:不支持图形模式。

; ; 注释:为了保证传递给ChangeDisplaySetting的DEVMODE结构是有效的,并且仅包含显示驱动支持的值,可以使用由EnumDisplaySettings函数返回的DEVMODE。

; ; 当显示模式被动态地改变时,WM_DISPLAYCHANGE消息带着如下的消息参数传递给所有正在运行的应用:

; ; wParam每像素点的新位数,LOWORD(lParam)新像素宽度,HIWORD(lParam)新像素高度。

; ; 速查:Windows NT:3.51及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;库文件:user32.lib;Unicode:在Windows NT上实现为Unicode和ANSI两种版本。
 
我不会,会 的话肯定帮你的!
 
to 萧月禾:
; ;当然不行了!YB_unique说的GetDisplayFrequency这个函数是自己造的呀?!
帮老大提前一下
 
这个问题我做过~~~~~~~~~~~~~~~source 不在家...
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
778
DelphiTeacher的专栏
D
D
回复
0
查看
818
DelphiTeacher的专栏
D
D
回复
0
查看
650
DelphiTeacher的专栏
D
后退
顶部