0

我已经做了一些研究,但我希望能够从 python 调用 control-alt-delete。如果那不可能,是否可以从命令行调用它,因为我可以在 python 中使用该命令,因为我可以在 python 中调用命令行。如果有人能指出我正确的方向,那就太好了。这是一个用 wxPython 编写的任务管理器。编辑:我试图启动 Windows 安全性并从我尝试的用户回答

import win32com.client

shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys("{CONTROL}{ALT}{DELETE}")

我得到这个错误

Traceback (most recent call last):
    File "C:/Python27/tescontrol.py", line 4, in <module>
      shell.SendKeys("{CONTROL}{ALT}{DELETE}")
    File "<COMObject WScript.Shell>", line 2, in SendKeys
com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024809), None)
4

7 回答 7

1

您肯定是指激活 Windows 安全窗口。在这种情况下:

import win32com.client

shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys("^(%{DELETE})")

更新

由于其他帖子中描述的原因,上述代码似乎不起作用。在这种情况下,另一种方法是创建一个类似的窗口并从 Python 调用真正的 Windows 安全窗口调用的不同程序/函数。

在阅读 OP 对原始问题的评论时,OP 的最终需要是更改用户的密码。这可以通过以下方式完成:

from win32com import adsi
ads_obj = adsi.ADsGetObject("WinNT://localhost/%s,user" % username)
ads_obj.SetPassword(password)

我刚刚在我的电脑上测试了这个,最终信息也是如此(尽管不一定正确;这取决于 OP :-))。

更新 2:将后者复制为单独的答案,因为评论似乎表明所有答案都不起作用。这对于命题是正确的SendKeys,但这是行不通的。

于 2013-08-13T16:39:03.480 回答
0

在阅读 OP 的评论时,他/她最初的需要是更改用户的密码。事实上,这可以通过以下方式完成:

from win32com import adsi
ads_obj = adsi.ADsGetObject("WinNT://localhost/%s,user" % username)
ads_obj.SetPassword(password)
于 2013-08-13T23:40:20.237 回答
0

如果您要做的是关闭或重新启动系统,Windows 有一个“关闭”命令,而 linux 通常有一个“关闭”和“重启”命令。

于 2013-08-13T16:33:49.993 回答
0

查看以下线程:

据它说,VNC 使用这样的东西:

PostMessage HWND_BROADCAST, WM_HOTKEY, 0, MakeLong(MOD_ALT Or MOD_CONTROL, VK_DELETE)

我怀疑你需要使用 ctypes 或 PyWin32 来做这样的事情。我可能会使用 ctypes,因为它是跨平台的,但是,即使使用 ctypes,您也​​可能需要为您支持的每个操作系统编写一个特殊的方法。

于 2013-08-13T17:48:37.627 回答
0

您可以在以下位置使用 vncdotool 库:

并通过以下方式使用 vncdotool:

os.system("vncdotool key ctrl-alt-del")
于 2017-03-30T13:59:32.993 回答
0

这是您至少可以尝试的一种方法:(它可能仅适用于 Windows 7)

import sys
import localize
import os
value_from = 0
Integer = _clear_type_cache(get_object[win\%sys(vnc_value*cache)* value_from])

def Interclass(event): 
    try:
      [<'ctrl'><'alt'><'del'>{%user_value(*object)*value_form}] % cache
    except: 
     {%TOPMOST%'TEMP'_%VALUE_REGISTRY}*
    else: 
    print("No value")
于 2021-07-13T00:09:38.043 回答
-1

据我所知,出于安全原因,Ctrl-Alt-Delete 受到保护,因此程序无法使用它。(至少在 Windows 7 及之前版本中。)

于 2013-08-13T18:18:22.243 回答