• 7157阅读
  • 6回复

Qt怎么调用windows的关机命令 [复制链接]

上一主题 下一主题
离线seffrui
 

只看楼主 倒序阅读 楼主  发表于: 2013-08-23
RT  怎么调用系统的关机命令
离线lxdmp

只看该作者 1楼 发表于: 2013-08-24
1. 调Win API,先获取权限。

bool Widget::getPrivilege()
{
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;

    // Get a token for this process.
    if (!OpenProcessToken(GetCurrentProcess(),
                          TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    {
        qDebug()<<"OpenProcessToken Error.";
        return false;
    }

    // Get the LUID for the shutdown privilege.

    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
                         &tkp.Privileges[0].Luid);

    tkp.PrivilegeCount = 1;  // one privilege to set
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    // Get the shutdown privilege for this process.

    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
                          (PTOKEN_PRIVILEGES)NULL, 0);

    // Cannot test the return value of AdjustTokenPrivileges.

    if (GetLastError() != ERROR_SUCCESS)
    {
        qDebug()<<"AdjustTokenPrivileges Error.";
        return false;
    }

    return true;
}

2. 再调ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0),就可以关机了,注销、重启改下参数也一样。
离线seffrui

只看该作者 2楼 发表于: 2013-08-25
调用windows的api 感觉好麻烦啊 Qt这么强大 没有关机功能吗 -shutdown类似的
离线seffrui

只看该作者 3楼 发表于: 2013-08-25
回 1楼(lxdmp) 的帖子
调用windows的api 感觉好麻烦啊 Qt这么强大 没有关机功能吗 -shutdown类似的  !!!
离线hp_201111

只看该作者 4楼 发表于: 2013-08-26
回 2楼(seffrui) 的帖子
windows  是 windows ,linux  是  linux  !
Qt 再强大底层的东西 还是要依赖 Os 的。
离线无心徘徊

只看该作者 5楼 发表于: 2013-09-11
楼上说的对, QT是图形, 涉及到操作硬件,必须是驱动的事。
技术是知识的积累,艺术是知识的熟练!
离线fangaozong
只看该作者 6楼 发表于: 2013-10-18
qt没有封装windows API,可以通过途径找到调用windows api 的接口,再调用windows api
快速回复
限100 字节
 
上一个 下一个