DEPHI控制显示器开关!急急急

yuahn 2004-04-30 10:50:45
各位大侠帮帮小弟,怎样利用DELPhi调用API函数控制显示器的开关和定时开关显示器
?????急急急!!!!小弟定当重谢!!!
...全文
149 24 点赞 打赏 收藏 举报
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cenjoyer 2004-06-28
感兴趣,等待收藏
  • 打赏
  • 举报
回复
Rex_love_Burger 2004-06-27
关注
  • 打赏
  • 举报
回复
gyf2000 2004-06-26
你的例子是省电模式还是真的关断电源?如果是省电模式我就不调试了,因为前面的已可以实现省电模式,你的代码我还要改写成DELPHI版呢。
  • 打赏
  • 举报
回复
Behard 2004-06-26
我的例子肯定能使用

我当时为了测试拦截休眠消息而作的调试例子来的
  • 打赏
  • 举报
回复
Behard 2004-06-26
SC_MONITORPOWER 消息是系统发给各个接收 WM_SYSCOMMAND 消息窗口能接收道而已
不是你自己发消息就实现该功能的
  • 打赏
  • 举报
回复
Behard 2004-06-26
void Dormancy()
{
if ( GetVersion() < 0x80000000 )
{
TOKEN_PRIVILEGES tp;
HANDLE hToken;
LUID luid;

LPTSTR MachineName = NULL; // pointer to machine name
if(! OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken )) return;
if(! LookupPrivilegeValue(MachineName, SE_SHUTDOWN_NAME, &luid)) return;

tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL );
}
SetSystemPowerState(false, false); // 休眠的关键
// SetSuspendState
}
  • 打赏
  • 举报
回复
gyf2000 2004-06-25
不是真的关闭,鼠标、键盘一动又亮了。
  • 打赏
  • 举报
回复
lijinghe1 2004-06-24
我贴的在2000下没有问题。

SC_MONITORPOWER
Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer.
The lParam parameter can have the following values:

1 - the display is going to low power

2 - the display is being shut off

Minimum DLL Version None
Header Declared in Winuser.h, include Windows.h
Minimum operating systems Windows 95, Windows NT 3.1

看msdn意思是win95,nt31以上都是可以的,你自己验证一下
  • 打赏
  • 举报
回复
fei19790920 2004-06-24
NT结构的系统用
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);
  • 打赏
  • 举报
回复
mbzdh 2004-06-24
有谁知道2000,下用什么呀,

和搂主共同学习,
  • 打赏
  • 举报
回复
mbzdh 2004-06-24
win2000下也是这个吗?

  • 打赏
  • 举报
回复
fei19790920 2004-06-24
看来是我该出手的时候了:
关闭显示器
//WIN98
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
//WINNT
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);

唤醒
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
  • 打赏
  • 举报
回复
lijinghe1 2004-06-24
错了用handle即可,不用HWND_BROADCAST
  • 打赏
  • 举报
回复
lijinghe1 2004-06-24
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 1);//省电
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);//关闭

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);//打开
  • 打赏
  • 举报
回复
gyf2000 2004-06-24
我试了,不行。
  • 打赏
  • 举报
回复
angelface 2004-06-24
应该是不可以真的关掉吧, 只能是到省电模式!
  • 打赏
  • 举报
回复
Rex_love_Burger 2004-06-24
明显楼主是已经搞定
  • 打赏
  • 举报
回复
Rex_love_Burger 2004-06-24
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);关闭
d6+winXP下通过!
  • 打赏
  • 举报
回复
Rex_love_Burger 2004-06-24
大哥,可不可以写个delphi的啊!!
  • 打赏
  • 举报
回复
aiirii 2004-05-08
// turn it off:
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
// turn it on again:
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);

试下上面的,应该可以的
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
Windows SDK/API
加入

1163

社区成员

Delphi Windows SDK/API
申请成为版主
帖子事件
创建了帖子
2004-04-30 10:50
社区公告
暂无公告