编程论坛
注册
登录
编程论坛
→
VFP论坛
ChangEres(1024,768)的调用问题
hblemon
发布于 5 天前 17:32, 138 次点击
Vfp9环境下,在windows10系统中,利用Myfll.fll中的ChangEres()函数,实现分辨率(1024,768)的窗口,但不起作用,请问还有什么办法?
5 回复
#2
kangss
4 天前 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
hblemon
4 天前 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
csyx
4 天前 19:53
以下是引用
hblemon
在2025-4-1 19:11:33的发言:
这条语句无法顺利执行
kangss 粘贴给你的是一个过程内的代码,_x,_y 是传入的宽/高参数
想直接运行的话,在出错行之前给 _x,_y 赋值即可,或者更直接点,把出错行里面的 _x、_y 换成 1024、768
但是,即使运行无错也不一定成功,成功执行 ChangeDisplaySettings 的先决条件是需要管理员权限,你调用 Myfll.ChangEres() 失败应该也是这一原因
#5
hblemon
3 天前 20:36
回复 4楼 csyx
谢谢
#6
hblemon
昨天 17:48
回复 4楼 csyx
我在编译生成后的程序的快捷方式的兼容性里勾选上管理员权限也无法让ChangeRes函数起作用
1