dii*_*eep 0 c# c++ windows accessibility-api maximize-window
如何确定鼠标是否指向(悬停在)窗口的最大化按钮,即使此窗口不属于我的应用程序.那有API吗?
您可以发送WM_NCHITTEST到该窗口.返回值将对应于请求坐标上的对象类型.
像这样的东西:
bool IsMouseOverMaxBtn(HWND hWnd)
{
POINT pt;
VERIFY(GetCursorPos(&pt)); // get mouse position
int retVal = SendMessage(hWnd, WM_NCHITTEST, 0, MAKELONG(pt.x, pt.y));
return HTMAXBUTTON == retVal;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
您可以将此消息发送到任何窗口(不一定属于您的线程/进程).由于没有涉及指针(例如字符串指针) - 没有问题.
但是,您应该注意,向属于另一个线程的窗口发送(而不是发布)消息是一个非常繁重的操作,在此期间您的线程被挂起.甚至可能发生线程挂起的情况,因为服务该窗口的应用程序的线程挂起.
您可以考虑使用SendMessageTimeout以保证您的线程不会挂起.