VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 381|回复: 7

[求助] 如何解决定时关机在关闭监视器、关闭硬盘、系统待机的状态下,仍然能够定时关机?

[复制链接]
75_avatar_middle
在线会员 发表于 2019-8-29 12:34:38 | 显示全部楼层 |阅读模式
3驿站币
  HANDLE hToken;
        TOKEN_PRIVILEGES tkp;
        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))                //打开与进程相关联的访问令牌
        {
            ::MessageBox(NULL,_T("关机失败..."), _T("警告"), MB_OK);
            return;
        }
        LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);        //函数查看系统权限的特权值,返回信息到一个LUID结构体里
        tkp.PrivilegeCount = 1;  
        tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES)NULL, NULL);        //启用或禁止,指定访问令牌的特权
        if (GetLastError() != ERROR_SUCCESS)
        {
            ::MessageBox(NULL,_T("关机失败..."), _T("警告"), MB_OK);
            return;
        }
        ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0); //重启只需要把EWX_SHUTDOWN改为EWX_REBOOT

我用这个设置了定时关机功能,但是在这种情况下却无法定时关机,请问有什么代码能够解决,谢谢!

如何解决定时关机在关闭监视器、关闭硬盘、系统待机的状态下,仍然能够定时关机?





上一篇:借鉴Syc老师的一段代码时,出错
下一篇:怎么建立qq聊天窗口打开文件夹的钩子?
51_avatar_middle
online_admins 发表于 2019-8-29 17:13:28 | 显示全部楼层
这个不太好解决,找了点资料,希望能帮助到楼主:
https://answers.microsoft.com/zh ... b-b83a-2c115b70ba15
75_avatar_middle
ico_lz  楼主| 发表于 2019-8-30 08:16:52 | 显示全部楼层
Syc 发表于 2019-8-29 17:13
这个不太好解决,找了点资料,希望能帮助到楼主:
https://answers.microsoft.com/zh-hans/windows/forum/ ...

看了一下,代码是无法解决此类问题的,不管怎么样,谢谢
58_avatar_middle
online_vip 发表于 2019-9-1 23:08:28 | 显示全部楼层
怎么从待机下苏醒,按鼠标、键盘,那就先考虑怎么硬件模拟鼠标键盘事件。
75_avatar_middle
ico_lz  楼主| 发表于 2019-9-10 17:49:12 | 显示全部楼层
敏敏 发表于 2019-9-1 23:08
怎么从待机下苏醒,按鼠标、键盘,那就先考虑怎么硬件模拟鼠标键盘事件。

谢谢提议,试过了,根本没起作用,代码根本不运行。
如何解决定时关机在关闭监视器、关闭硬盘、系统待机的状态下,仍然能够定时关机?
这都在硬盘没关闭的状态下呢,如果硬盘关闭了,更不可能执行任何代码了。
        CPoint pt;
        GetCursorPos(&pt);//获取鼠标在屏幕的当前位置
        SetCursorPos(200,200);//移动到某点坐标
//        mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);//点下右键
//        mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);//松开右键

//        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);//点下左键
//        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);//松开左键
        mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//点下左键
        mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松开左键
        keybd_event(VK_LWIN, 0, 0 ,0);
        keybd_event('M', 0, 0 ,0);
        keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
        keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
        Sleep(200);
        mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//点下左键
        mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松开左键
        keybd_event(VK_LWIN, 0, 0 ,0);
        keybd_event('M', 0, 0 ,0);
        keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
        keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
        Sleep(200);
        mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//点下左键
        mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松开左键
        keybd_event(VK_LWIN, 0, 0 ,0);
        keybd_event('M', 0, 0 ,0);
        keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
        keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
        Sleep(200);
        mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//点下左键
        mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松开左键
        keybd_event(VK_LWIN, 0, 0 ,0);
        keybd_event('M', 0, 0 ,0);
        keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
        keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
        m_time0=CTime::GetCurrentTime();
58_avatar_middle
online_vip 发表于 2019-9-10 21:07:55 | 显示全部楼层
cumulonimbus 发表于 2019-9-10 17:49
谢谢提议,试过了,根本没起作用,代码根本不运行。

这都在硬盘没关闭的状态下呢,如果硬盘关闭了,更 ...

硬盘关闭,但内存并未关闭,系统是如何接收你硬盘、鼠标消息,唤醒计算机的?你找找驱动方面的代码。
58_avatar_middle
online_vip 发表于 2019-9-10 21:09:05 | 显示全部楼层
cumulonimbus 发表于 2019-9-10 17:49
谢谢提议,试过了,根本没起作用,代码根本不运行。

这都在硬盘没关闭的状态下呢,如果硬盘关闭了,更 ...

查查系统是如何得知键盘被按下的,从这方面入手。
16_avatar_middle
在线会员 发表于 3 天前 | 显示全部楼层
如何解决定时关机在关闭监视器、关闭硬盘、系统待机的状态下,仍然能够定时关机?
感觉应该从内存着手
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-9-19 13:06

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表