前言屏幕键盘,放大镜等这些辅助类程序在使用时并不会抢夺其他窗口的焦点,比如说屏幕键盘的窗口即使点击了也不会获取焦点,但依然能点击按键输入文字。在 Windows 中,可通过为窗口设置 WS_EX_NOACTIVATE 位来实现。代码首先通过 GetWindowLongW 获取窗口的样式,再通过 SetWindowLongW 为窗口添加上 WS_EX_NOACTIVATE 位。窗口句柄(hwnd)在 wxPython 中通过窗体的 GetHandle() 方法获取,PyQt 中则通过窗体的 winId() 方法获取。import ctypes WS_EX_NOACTIVATE = 0x08000000 GWL_EXSTYLE = -20 # wxPython # hwnd = self.GetHandle() # PyQT hwnd = self.winId() current_style = ctypes.windll.user32.GetWindowLongW(hwnd, GWL_EXSTYLE) ctypes.windll.user32.SetWindowLongW(hwn
前言假如有一个视频文件 video.mp4,需要在 Python 里面调用外部程序打开,你可能会直接使用 os.startfile() 方法,传入文件的路径,就能调用外部的播放器打开这个文件了,但是如果需要对播放器指定参数呢?这种方法就不适用了。Windows在 Windows 下,有一个 AssocQueryStringW 函数(参考文档),支持通过注册表查找关联的默认程序,这样就能直接获取到默认程序的路径,再加上自定义的参数就可以实现了,非常省事。代码import ctypes from ctypes import wintypes def query_association(file_ext): buffer = ctypes.create_unicode_buffer(512) pcchOut = wintypes.DWORD(512) result = ctypes.windll.shlwapi.AssocQueryStringW(0x00000000, 1, file_ext, None, buffer, ctypes.byref(pcc
在 Python 中打开文件夹并选中该文件(不直接打开),有两种实现方式:方式一使用 os 模块,最简单。无论是否存在已经选中该文件的资源管理器窗口,每次执行都会新建一个。例如,打开文件夹并选中 D:\ 下的 111.pdf 文件:import os os.system(r"explorer /select,D:\111.pdf")但是有一个问题,容易被杀毒软件拦截,用户体验不佳;如果文件名包含特殊符号,就无法识别,默认就打开我的文档目录了。"安全大脑" "极智守护"方式二使用 SHOpenFolderAndSelectItems 函数(参考文档),与方式一不同的是,若存在已打开此位置的资源管理器窗口,则会切换到该窗口,并选中文件,反之则新建一个资源管理器窗口并选中。这种方式有一个好处,就是不会被杀毒软件拦截。这里使用 ctypes 实现,不需要再安装 pywin32 了。import os import ctypes class ITEMIDLIST(ctypes.Structure): _fields_ = [("mkid", ct
背景最近在研究红外收发,0/1信号延迟需要达到微秒级,而 time.sleep() 达不到这么高的精度,好在 time.time() 时间戳可以实现微秒级别,故采用此方式。代码原理非常简单,只是做个记录。def delay_us(t): start, end = 0, 0 start = time.time() offset = 10 t = (t - offset) / 1000000 while end - start < t: end = time.time()说明: offset 为修正值,根据实际情况修改。验证以延迟 30us 为例:注意事项仅 Linux 有效,Windows 下延迟最低 1000us,无法正常使用。
目录SDK 版本SDK 简介准备工作创建产品模型并注册设备设备初始化命令下发平台消息下发属性上报SDK 版本版本说明1.00提供对接 IoT Platform 平台的能力。SDK 简介SDK 提供对接 IoT Platform 的能力,开发者通过调用 SDK 接口,便可实现设备与平台之间的上下行通讯。当前SDK支持的功能有:支持设备消息、属性上报、命令下发准备工作已安装 Python 3.9 及以上已安装 paho-mqtt 库,且版本为 1.6.0 (必需)已安装 schedule 库 (必需)创建产品模型并注册设备访问 IoT Platform,进入设备接入控制台。查看 MQTT 设备接入地址,保存该地址。 在设备接入控制台选择“产品”,单击“创建产品”按钮,在弹出的对话框中,填写“产品名称”、“协议类型”、“数据格式”、“设备类型”等信息,创建产品。协议类型选择 MQTT。数据格式选择 JSON。产品创建成功后,单击“详情”进入产品详情,在模型定义页面,定义相关属性和命令。在左侧导航栏选择“设备”,单击“注册设备”,在弹出的对话框中,填写设备信息,注册设备。设备初始化设备接入平台
Scott Sloan