用于模拟自动热键工具提示UI的Python win32 API

用于模拟自动热键工具提示UI的Python win32 API,python,winapi,autohotkey,pywin32,win32gui,Python,Winapi,Autohotkey,Pywin32,Win32gui,我想模仿AutoHotKey中的工具提示功能 自动热键代码: infoTooltip() { MouseGetPos, xPos, yPos, winId PixelGetColor, color, %xPos%, %yPos%, RGB WinGetTitle, winTitle, ahk_id %winId% ToolTip "%winTitle%"`n%xPos% %yPos% %color% } 在循环内调用时看起来像这样,并将跟随鼠标移动: 从谷歌搜

我想模仿AutoHotKey中的工具提示功能

自动热键代码:

infoTooltip() {
    MouseGetPos, xPos, yPos, winId
    PixelGetColor, color, %xPos%, %yPos%, RGB
    WinGetTitle, winTitle, ahk_id %winId%
    ToolTip "%winTitle%"`n%xPos% %yPos% %color%
}
在循环内调用时看起来像这样,并将跟随鼠标移动:

从谷歌搜索中找到的参考资料:

到目前为止,我的Python代码尝试:

import win32con, win32gui
from win32api import GetModuleHandle
from commctrl import (TOOLTIPS_CLASS, TTS_ALWAYSTIP, TTS_NOPREFIX, TTM_ADDTOOL, TTM_SETMAXTIPWIDTH)
class TooltipWindow:
    def __init__(self):
        win32gui.InitCommonControls() # Loads COMCTL32.DLL (Shell Common Controls Library)
        self.hwnd = win32gui.CreateWindowEx(
            win32con.WS_EX_CLIENTEDGE | win32con.WS_EX_TOPMOST,
            TOOLTIPS_CLASS,
            "MyTooltipWindow",
            win32con.WS_POPUP | TTS_ALWAYSTIP | TTS_NOPREFIX | win32con.WS_BORDER,
            win32con.CW_USEDEFAULT,
            win32con.CW_USEDEFAULT,
            win32con.CW_USEDEFAULT,
            win32con.CW_USEDEFAULT,
            None,
            None,
            GetModuleHandle(None),
            None
        )
        win32gui.SendMessage(self.hwnd, TTM_ADDTOOL, None, ???)

tooltip = TooltipWindow()
我不知道如何将TOOLINFO结构转换为lparam参数。此外,盲目尝试让大部分代码正常工作,因为这是我第一个真正的win32gui项目


非常感谢您的帮助,谢谢

您是否考虑过使用Dll导入?如果你打算使用更多的authotkey功能,那么在.dll中使用它绝对值得一试

import ctypes
dll = ctypes.cdll.LoadLibrary("AutoHotkey.dll")
dll.ahktextdll(u"")
dll.ahkExec('MouseGetPos, xPos, yPos, winId' \
'\n    PixelGetColor, color, %xPos%, %yPos%, RGB' \
'\n    WinGetTitle, winTitle, ahk_id %winId%' \
'\n    ToolTip "%winTitle%"`n%xPos% %yPos% %color%')

我不熟悉ctypes,所以没有考虑过这条路线,谢谢你的想法!我可以问一下ahktextdll函数在这里的用途吗?那个dll就是我在这里搜索的那个吗?它以#持久模式启动自动热键脚本。