中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

鎖定計算機和關閉顯示器

發布時間:2020-07-11 18:19:06 來源:網絡 閱讀:615 作者:dccw 欄目:編程語言

簡介

在計算機的日常使用中,有時候希望顯示器關閉,需要主機繼續運行,對于臺式主機來說按下顯示器電源按鈕就可以了,筆記本除了更改電源模式后合上屏幕也沒有其他辦法了,經過研究其實可以通過給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

使用方法

  • 命令行執行: 關閉顯示器.exe [-?hdl]
  • 快捷方式執行: 新建桌面快捷方式->輸入對象位置->打開該快捷方式的屬性頁面->在目標的后面加上相應的參數->點擊快捷鍵輸入框,按下你想使用的快捷鍵->點擊確定->焦點位于桌面時按下你設置的快捷鍵即可運行

恢復方法

  • 按下任意鍵
  • 晃動/點擊鼠標
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彭州市| 沽源县| 泗阳县| 固原市| 方正县| 怀宁县| 岳普湖县| 洪雅县| 昌邑市| 凤冈县| 达日县| 民丰县| 鹤庆县| 临漳县| 从江县| 屏东县| 行唐县| 遂溪县| 三原县| 鲁甸县| 长阳| 富川| 隆德县| 留坝县| 陕西省| 墨竹工卡县| 奈曼旗| 葫芦岛市| 鄂托克前旗| 永修县| 鹤峰县| 远安县| 沂南县| 灵石县| 丹棱县| 庆云县| 盱眙县| 淳化县| 邹平县| 天柱县| 彩票|