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

yuahn 2004-04-30 10:50:45
各位大侠帮帮小弟,怎样利用DELPhi调用API函数控制显示器的开关和定时开关显示器
?????急急急!!!!小弟定当重谢!!!
...全文
169 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);

试下上面的,应该可以的
加载更多回复(4)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧