在计算机的日常使用中,有时候希望显示器关闭,需要主机继续运行,对于台式主机来说按下显示器电源按钮就可以了,笔记本除了更改电源模式后合上屏幕也没有其他办法了,经过研究其实可以通过给Windows发送关闭显示器的消息来实现这个功能,详情见代码。
/*
* 版权所有 (C) 2015 dccw (https://blog.51cto.com/13187574)
*
* 按照 Apache 许可 2.0 版本(称为“许可”)授予许可;
* 要使用此文件,必须遵循“许可”中的说明。
* 你可以从以下位置获取“许可”的副本
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 除非适用法律要求或书面同意,根据
* “许可”分配的软件“按原样”分配,
* 不提供任何形式(无论是明示还是默示)的担保和条件。
* 参见“许可”了解“许可”中管理权限和
* 限制的指定语言。
*
* 本代码实现了关闭显示器和锁定计算的功能
*
* 编译命令:cl.exe /D "NDEBUG" 关闭显示器.c /link kernel32.lib user32.lib
* 使用方法:
* 命令行执行: 关闭显示器.exe [-?hdl]
* 快捷方式执行: 新建桌面快捷方式->输入对象位置->打开该快捷方式的属性页面
* ->在目标的后面加上相应的参数->点击快捷键输入框,按下你想使用的快捷键
* ->点击确定->焦点位于桌面时按下你设置的快捷键即可运行
*
* 恢复方法
* 按下任意键/晃动鼠标/点击鼠标
*/
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
static int flag_show_usage = 0;
static int flag_lock_workstation = 0;
static int flag_shutdown_monitor = 0;
static void show_usage(char const *argv) {
fprintf(stderr,"用法: %s [-?hdl]\n\n"
"选项:\n"
" -?,-h : 帮助\n"
" -d : 关闭显示器\n"
" -l : 锁定计算机\n",
argv
);
}
static int get_option(int argc, char *const *argv) {
char *p;
int i;
for (i = 1; i < argc; i++) {
p = argv[i];
if (*p++ != '-') {
fprintf(stderr,"无效的选项: \"%s\"", argv[i]);
return -1;
}
while (*p) {
switch (*p++) {
case '?':
case 'h':
flag_show_usage = 1;
break;
case 'd':
flag_shutdown_monitor = 1;
break;
case 'l':
flag_lock_workstation = 1;
break;
default:
fprintf(stderr,"无效的选项: \"%c\"", *(p - 1));
return -1;
}
}
}
return 0;
}
static void lock_workstation(void) {
if( !LockWorkStation() ) {
_tprintf(_T("锁定计算机失败 %d\n"), GetLastError());
}
}
static void shutdown_monitor(void) {
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)2);
}
int main(int argc, char **argv) {
if (get_option(argc, argv) != 0) {
return 1;
}
if (flag_show_usage) {
show_usage(argv[0]);
}
if (flag_lock_workstation) {
lock_workstation();
}
if (flag_shutdown_monitor) {
shutdown_monitor();
}
return 0;
}
cl.exe /D "NDEBUG" 关闭显示器.c /link kernel32.lib user32.lib
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。