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

时间:2014-03-28 22:34:16

标签: winapi tooltip mouseover sendmessage

我有问题,希望你能帮助我。已经超出我的研究运气...尝试stackoverflow,谷歌,甚至雅虎......

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

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

喜欢这个。通常你必须把鼠标放在那个栏上1到2秒钟。

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

Somethink喜欢" SendMessage / Postmessage(hwnd," WM_COMEOUTTOOLTIP",0,lParam(带x和y位置)"。

WINAPI中是否存在类似的内容?谷歌搜索疯了但什么也没找到。

谢谢你们的帮助!

乔纳森

2 个答案:

答案 0 :(得分:6)

This SO Answer提到您可以使用TTM_POPUP message显示工具提示,使用TTM_TRACKPOSITION设置工具提示的位置。

编辑:我对此有点好奇,并尝试制作一个可行的样本:

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

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

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);

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

SetCursorPos(300, 300);
SendMessage(hWndtoolTip, TTM_POPUP, 0, 0);

答案 1 :(得分:1)

也许this正是您要找的?

由于工具提示是使用CreateWindowEx功能创建的,你不能只使用ShowWindow吗?