强制工具提示使用WINAPI而不是鼠标

Jon*_*ied 2 winapi mouseover tooltip sendmessage

我有问题,希望你能帮助我.已经离开了我的研究运气...试过stackoverflow,谷歌,甚至雅虎...

如何强制提示工具提示不使用鼠标?

我目前正在实现一些Windows自动化,需要强制显示工具提示.

像这样.通常你必须把鼠标放在那个栏上1到2秒钟.

我想强制使用WINAPI或类似的东西来显示这些工具提示.

想想像"SendMessage/Postmessage(hwnd,"WM_COMEOUTTOOLTIP",0,lParam(带x和y位置)").

WINAPI中是否存在类似的内容?谷歌疯了但没有发现任何东西.

谢谢大家帮助!

乔纳森

Edw*_*nts 6

本SO答案提到您可以使用TTM_POPUP消息显示工具提示,使用TTM_TRACKPOSITION设置工具提示的位置.

编辑:我对此有点好奇,并试图制作一个工作样本:

a)在清单中包含常用控件或在源代码中使用以下行

#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
Run Code Online (Sandbox Code Playgroud)

b)创建并设置工具提示窗口

hWndtoolTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, 0, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, hWndParent, 0, hInstance, 0);
SetWindowPos(hWndtoolTip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);

TOOLINFO ti = {};
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = TTF_SUBCLASS;
ti.hwnd   = hWndParent;
ti.hinst  = hInstance;
ti.uId    = (UINT)hWndtoolTip;
ti.lpszText = L"tool-tip";
GetClientRect(hWndParent, &ti.rect);
SendMessage(hWndtoolTip, TTM_ADDTOOL, 0, (LPARAM)&ti);
Run Code Online (Sandbox Code Playgroud)

c)在特定位置显示工具提示(例如,x = 300,y = 300):

SetCursorPos(300, 300);
SendMessage(hWndtoolTip, TTM_POPUP, 0, 0);
Run Code Online (Sandbox Code Playgroud)