【问题标题】:Sending the message Ctrl+Alt+Del from my application从我的应用程序发送消息 Ctrl+Alt+Del
【发布时间】:2009-02-28 12:26:11
【问题描述】:

我想在MFC 中编写一个小实用程序,它将 Ctrl+Alt+Del 消息发送到操作系统。任何人都可以帮助我如何实现这一目标?我试过了:

::PostMessage(HWND_BROADCAST, WM_HOTKEY, 0, MAKELONG( MOD_CONTROL | MOD_ALT, VK_DELETE));

但这不起作用。

我想发送 Ctrl+Alt+Del 不调用TaskMgr.exe。此外,它适用于我的本地操作系统(Windows XP Service Pack 2)。基本上我想使用这个应用程序来锁定我的机器并安排一些操作以及锁定。

【问题讨论】:

  • 听说不能从代码中调用ctrl alt del组合。微软实现了这一点来对抗机器人。几年前就听说了。 (顺便说一句,如果您想获取任务控制窗口,请尝试 ctrl shift esc)
  • 我同意。当我们学习“Hooks”时,从一位朋友那里听到了同样的话。

标签: windows winapi mfc


【解决方案1】:

这不是您可以模拟的击键。它被称为“安全注意序列”。 以下是从远程桌面(XP+ 解决方案)调用它的方法:

include <shldisp.h>

IShellDispatch4 *pShell;

CoInitialize(NULL);

HRESULT hr = CoCreateInstance(CLSID_Shell, NULL, CLSCTX_INPROC_SERVER,
IID_IShellDispatch, (void**)&pShell);

if(SUCCEEDED(hr))
pShell->WindowsSecurity();

CoUninitialize();

从本地桌面调用它的唯一解决方案是使用 SASLib。这不是公开的。写信给 saslib@microsoft.com 以请求它。

编辑:等等!你想锁定机器?只需致电LockWorkStation()!单击链接以获取有关头文件、lib 文件等所有其他详细信息的更多信息。

【讨论】:

  • 谢谢,LockWorkStation() 是 windows.h 的一部分,对吗?我无法编译。我还需要别的吗?
【解决方案2】:

由于 VNC 可以让您对远程系统执行此操作,因此它必须是可能的。如果我是你,我会浏览source to UltraVNC。然后我会在这里发布答案:)

【讨论】:

    【解决方案3】:

    您需要发送 control+alt+delete 还是只想调出任务管理器?

    如果你只需要调出任务管理器,你可以简单地运行\Windows\System32\taskmgr.exe

    【讨论】:

      【解决方案4】:

      我知道这是一个老问题,但我会在此处发布我的解决方案,以防有人找到解决方案。第 1 部分和第 2 部分文章解释了 Winlogon 如何注册 CAD 序列并提供如何使用它的代码示例。

      【讨论】:

        【解决方案5】:

        只要求机器关闭或注销不是更容易吗?那个组合键真的不是个好主意吗?您可以发送这些消息。

        【讨论】:

          【解决方案6】:

          您不能启动一个屏幕保护程序,它会为您处理锁定问题吗?我现在没有可用的 Windows 机器,但我记得可以像这样锁定工作站。

          【讨论】:

          • 当然,但只有如果屏幕保护程序配置为密码保护。
          【解决方案7】:

          调用SendSAS 函数来实现这一点。

          【讨论】:

            猜你喜欢
            • 2011-06-30
            • 2014-12-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-13
            • 2014-09-12
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多