python - 在 python 中关闭 OSK (tabtip)
问题描述
我正在使用以下代码来显示 osk
os.system("C:\\PROGRA~1\\COMMON~1\\MICROS~1\\ink\\tabtip.exe")
此代码成功打开 osk 但是当我尝试使用以下代码关闭它时
os.system("TASKKILL /F /IM tabtip.exe")
它给出了错误
ERROR: The process "TabTip.exe" with PID 10188 could not be terminated.
Reason: Access is denied.
发生此错误是因为我的脚本没有管理员权限,但我不明白为什么在我自己启动程序时需要它,而且通常当我使用鼠标关闭应用程序时它不需要管理员权限。关于如何解决它的任何想法....
谢谢阅读 :)
解决方案
我最终使用了 comtypes 而不是 win32com:
import win32gui
from ctypes import HRESULT
from ctypes.wintypes import HWND
from comtypes import IUnknown, GUID, COMMETHOD
import comtypes.client
class ITipInvocation(IUnknown):
_iid_ = GUID("{37c994e7-432b-4834-a2f7-dce1f13b834b}")
_methods_ = [
COMMETHOD([], HRESULT, "Toggle",
( ['in'], HWND, "hwndDesktop" )
)
]
dtwin = win32gui.GetDesktopWindow();
ctsdk = comtypes.client.CreateObject("{4ce576fa-83dc-4F88-951c-9d0782b4e376}", interface=ITipInvocation)
ctsdk.Toggle(dtwin);
comtypes.CoUninitialize()
推荐阅读
- python - 如何不解压附加到 .msg 的 .msg
- wordpress - SSL 续订后 CloudFront 分配不工作
- python - 通过选择全部来编辑 Google Colab 中的所有多次出现并将其作为单个操作进行编辑?有什么捷径吗?
- php - 特定服务php的清漆
- flutter - 我如何解决由颤振phone_state包引起的错误
- reactjs - 尽管添加了唯一键,但反应还是会发出警告
- android - 将 android gradle 插件从 2.2.2 迁移到 4.1.3 并构建问题
- c# - 使用工厂方法后使用大括号填充属性
- flutter - 如何在 Flutter 中将 dataTable 值复制到剪贴板?
- pytorch - PyTorch 中是否有均值方差归一化层?