智能化关掉(关闭显示器,关机,响声提醒小程序)是一款完成关机销户重新启动关闭显示器,是笔记本,有时显示器关不紧,又不愿关机,因此就必须那样一个物品,作用太多了好乱。因此自身写了一个。
手机软件表明
封了5个声效在里面 因此变大点 管用着呢
自身非常简单,也不放源代码了。
写一个关闭显示器的小程序
SendMessagege(GetDesktopWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, 2);
发现并不可以关闭显示器,我找了大半天都没找到难题的所属。由于在网上找到许多文章内容都谁是大歌神地这样说,因此压根就沒有猜疑这儿的编码出了难题。
之后发现了一篇Delphi的帖子,发现它启用一个涵数时第一个主要参数(即消息推送的总体目标对话框是该程序自身的主对话框),因此尝试把编码改为了
SendMessagege(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
嘿嘿,显示器果真关掉。
逐渐我还以为必须程序在消息循环系统中捕捉相对应的消息来撤出,之后才发现这根本是多此一举。显示器关掉后程序就可以撤出了,以后如果有电脑键盘后面一种电脑鼠标的姿势显示器也会自行打开。
如今的程序或是有点儿小问题,便是运作后仅仅小关一下就又打开了,应该是运作程序时的电脑键盘或是电脑鼠标消息被Windows捕捉的原因,因此再在推送消息前面个延迟时间,OK!
详细的程序如下所示:
#include lt;windows.hgt;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT(LcdDown) ;
HWND hwnd ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = DefWindowProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass(wndclass))
{
MessageBox(NULL, TEXT(This program requires Windows NT!), szAppName,
MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow(szAppName, TEXT(LcdDown), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL,
NULL, hInstance, NULL) ;
ShowWindow(hwnd, 0) ;
UpdateWindow(hwnd) ;
Sleep(1000);
SendMessage(hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
return 0;
}
经验教训:来看即便大家都那么说的也不一定是合理的啊,尽信书比不上无书,实践是检验真知的唯一标准。