中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-17 02:28
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » dos软件关闭显示器 查看 2,245 回复 13
楼 主 dos软件关闭显示器 发表于 2006-04-07 22:18 ·  中国 浙江 杭州 华数宽带
新手上路
积分 8
发帖 2
注册 2006-04-07 22:02
UID 53495
状态 离线
windows有省电模式,长时间不用可以自动关闭显示器。那么dos行不行呢?最好能用tc实现。
我找到一个dpmsave.exe,一运行行它就会关闭显示器,按任意键打开显示器。不知如何实现。
2 dos软件关闭显示器 发表于 2006-04-09 16:50 ·  中国 浙江 杭州 华数宽带
新手上路
积分 8
发帖 2
注册 2006-04-07 22:02
UID 53495
状态 离线
高手都哪去了?
3 发表于 2006-04-10 23:35 ·  中国 江苏 苏州 电信
初级用户
积分 46
发帖 21
注册 2006-03-08 22:23
UID 51619
性别 男
来自 中华人民共和国
状态 离线
大不大,你反江编看下不就知道了?
好象是调用INT 10H实现的,具体我忘了!
4 发表于 2006-04-11 22:37 ·  中国 广东 广州 白云区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
UID 15812
性别 男
来自 广东广州
状态 离线
6年前我就编过这样的程序,调用 INT 10H 的 4F10H 子中断。

#include <dos.h>
main()
{
union REGS in,out;
/* Close monitor*/
in.x.ax=0x4f10;
in.x.bl=0x01;
in.x.bh=0x02;
int86(0x10,&in,&out);

/* Press any key to continue*/
getch();

/* Turn on monitor */
in.x.ax=0x4f10;
in.x.bl=0x01;
in.x.bh=0x0;
int86(0x10,&in,&out);
return;
}


[ Last edited by JonePeng on 2006-4-11 at 22:39 ]
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
5 发表于 2006-04-16 23:43 ·  中国 四川 绵阳 电信
高级用户
★★
积分 587
发帖 282
注册 2006-04-10 03:40
UID 53599
性别 男
状态 离线
多事
用手按还少敲两下键盘....
6 发表于 2006-04-17 00:17 ·  中国 上海 虹口区 电信
高级用户
★★
积分 653
发帖 252
注册 2006-04-16 19:48
UID 53939
状态 离线
Originally posted by xuantian at 2006-4-16 23:43:
多事
用手按还少敲两下键盘....


有点道理,反正要每次手动执行这个程序,不如直接按显示器电源钮,呵呵
7 发表于 2006-04-21 00:07 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
UID 15812
性别 男
来自 广东广州
状态 离线
Re xuantian &asbai:

你们的想法比较片面。

要是碰到显示器的按钮失灵或坏掉的情况怎么办?

我编的这个小程序就是为了解决我以前用的二手显示器按钮的问题。

另外,在Windows下还可以创建该程序的快捷方式,放在任务栏的快速启动栏上,这样点击一下这个图标就免得去按显示器开关了。
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
8 发表于 2006-04-23 14:47 ·  中国 广西 柳州 电信
初级用户
积分 70
发帖 22
注册 2006-04-22 17:34
UID 54267
性别 男
状态 离线
能否用端口读写的方式来编写呢????
9 发表于 2006-05-17 14:51 ·  中国 北京 教育网
初级用户
积分 84
发帖 28
注册 2006-05-03 22:36
UID 54894
性别 男
状态 离线
能不能让显示器
开机时就直接开呀
我的显示器按扭坏了
关了就开不开了
10 发表于 2006-05-18 10:57 ·  中国 广东 广州 白云区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
UID 15812
性别 男
来自 广东广州
状态 离线
Originally posted by waynebeat at 2006-5-17 14:51:
能不能让显示器
开机时就直接开呀
我的显示器按扭坏了
关了就开不开了

呵呵,那就在关机后不要关显示器咯
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
11 发表于 2006-05-24 02:34 ·  中国 重庆 北碚区 电信
新手上路
积分 2
发帖 1
注册 2006-05-24 02:31
UID 55894
性别 男
状态 离线
void crtoff()/*关闭显示器*/
{
int crtflag;/*显示器是否支持节能模式的标志*/
union REGS inregs,outregs;
inregs.x.ax=0x4f10;
inregs.x.bx=0;
int86(0x10,&inregs,&outregs);
if(outregs.h.al==0x4f)/*如果显示器支持节能模式则关闭显示器*/
{
inregs.x.ax=0x4f10;
inregs.x.bx=0x0201;
int86(0x10,&inregs,&outregs);
inregs.x.ax=0x4f10;
inregs.x.bx=0x0301;
int86(0x10,&inregs,&outregs);
crtflag=1;
}
else /*否则禁止显示器刷新*/
{
inregs.x.ax=0x1201;
inregs.h.bl=0x36;
int86(0x10,&inregs,&outregs);
crtflag=0;
}
while(bioskey(1)==0&&Minf==0) /*等待键盘或鼠标的信息来开启显示器*/
GetMouseState(&Minf);
if(crtflag)/*如果显示器支持节能模式则开启显示器*/
{
inregs.x.ax=0x4f10;
inregs.x.bx=0x1;
int86(0x10,&inregs,&outregs);
}
else/*否则允许显示器刷新*/
{
inregs.x.ax=0x1200;
inregs.h.bl=0x36;
int86(0x10,&inregs,&outregs);
}
}
12 发表于 2006-06-30 14:47 ·  中国 广东 深圳 天威有线宽带(关内)
初级用户
积分 96
发帖 44
注册 2006-06-26 17:52
UID 57603
性别 男
来自 深圳
状态 离线
汇编不怎么熟悉哦!
13 发表于 2006-07-01 16:52 ·  中国 四川 自贡 电信
初级用户
积分 20
发帖 9
注册 2006-06-12 03:06
UID 56897
性别 男
状态 离线
#define DPMS_ON 0
#define DPMS_WAIT 1
#define DPMS_SUSPEND 2
#define DPMS_OFF 4

//---------------------------------------------------------------------------
// Set DPMS status
//
// 设置显示器节能状态
//---------------------------------------------------------------------------
BYTE yana_SetDPMSStatus(BYTE Act)
{
union REGS r;

r.w.ax = 0x4F10;
r.h.bl = 1;
r.h.bh = Act;
int386(0x10, &r, &r);
return (r.h.al == 0x4F); // If AL != 4Fh, return FALSE
}
14 我怎么没办法测试呀! 发表于 2008-01-11 22:06 ·  中国 浙江 嘉兴 海宁市 电信
中级用户
★★
积分 360
发帖 216
注册 2007-05-29 17:41
UID 89677
性别 男
状态 离线
上述代码有什么办法测试一下?

抱歉实在是不太懂C语言编程,有了代码也不知道怎么测试!
论坛跳转: