注册 登录
编程论坛 VFP论坛

ChangEres(1024,768)的调用问题

hblemon 发布于 5 天前 17:32, 138 次点击
Vfp9环境下,在windows10系统中,利用Myfll.fll中的ChangEres()函数,实现分辨率(1024,768)的窗口,但不起作用,请问还有什么办法?
5 回复
#2
kangss4 天前 14:34
程序代码:

LPARAMETERS _X,_Y
lcDevMode=REPLICATE(CHR(0),156)
DECLARE INTEGER EnumDisplaySettings IN user32 INTEGER,INTEGER,STRING @
DECLARE INTEGER ChangeDisplaySettings IN user32 STRING @,INTEGER
*获取当前的显示模式
EnumDisplaySettings(0,4294967295,@lcDevMode)
*改变已获取的显示模式中的分辩率(宽、高)
lcDevMode=STUFF(lcDevMode,109,8,CHR(m._X%256)+CHR(m._X/256)+CHR(0)+CHR(0)+CHR(m._Y%256)+CHR(m._Y/256)+CHR(0)+CHR(0))
*使改变生效
ChangeDisplaySettings(@lcDevMode,1)
CLEAR DLLS "EnumDisplaySettings","ChangeDisplaySettings"
#3
hblemon4 天前 19:11
回复 2楼 kangss
lcDevMode=STUFF(lcDevMode,109,8,CHR(m._X%256)+CHR(m._X/256)+CHR(0)+CHR(0)+CHR(m._Y%256)+CHR(m._Y/256)+CHR(0)+CHR(0))
这条语句无法顺利执行
#4
csyx4 天前 19:53
以下是引用hblemon在2025-4-1 19:11:33的发言:
这条语句无法顺利执行

kangss 粘贴给你的是一个过程内的代码,_x,_y 是传入的宽/高参数
想直接运行的话,在出错行之前给 _x,_y 赋值即可,或者更直接点,把出错行里面的 _x、_y 换成 1024、768

但是,即使运行无错也不一定成功,成功执行 ChangeDisplaySettings 的先决条件是需要管理员权限,你调用 Myfll.ChangEres() 失败应该也是这一原因

#5
hblemon3 天前 20:36
回复 4楼 csyx
谢谢
#6
hblemon昨天 17:48
回复 4楼 csyx
我在编译生成后的程序的快捷方式的兼容性里勾选上管理员权限也无法让ChangeRes函数起作用
1