2012-02-01 25 views
0

如何確定鼠標是否指向(懸停在)最大化窗口按鈕,即使此窗口不是我的應用程序。 有沒有API?如何確定鼠標指向是否最大化光標下的窗口按鈕

+0

你在說什麼編程語言? – Vinit 2012-02-01 20:36:57

+0

添加標籤,C#優選 – diimdeep 2012-02-01 20:40:59

+0

[GetTitleBarInfo](http://msdn.microsoft.com/en-us/library/windows/desktop/ms633513(v = vs.85).aspx)看起來非常有希望。 – 2012-02-01 21:18:10

回答

5

您可以發送一個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; 
} 

編輯:

您可以發送該消息的任何窗口(不一定屬於你的線程/進程)。由於沒有涉及指針(如字符串指針) - 沒有問題。

但是,您應該注意,將消息發送(而不是發佈)到屬於另一個線程的窗口是相當繁重的操作,在此期間線程被掛起。甚至可能發生線程掛起的情況,因爲服務該窗口的應用程序的線程掛起。

你可以考慮使用SendMessageTimeout來保證你的線程不會掛起。

相關問題