我使用CBT Windows Hook來檢測窗口創建/刪除/ min-max/move-size事件。檢測應用程序窗口
我工作的很好,但我需要過濾來自正常小部件的事件。實際上,我只需要通過CBT鉤子通知用戶認爲Windows的那些窗口。
,我要面對讓我瘋了,因爲我時間可持續獲得虛假的事件,即使我過濾窗口如下問題:
BOOL FilterWindowHandle(HWND hwnd)
{
// Filtered window having WS_CHILDWINDOW style
if ((GetWindowLongPtr(hwnd, GWL_STYLE) & WS_CHILDWINDOW) != 0)
return (TRUE);
// Filtered window not having WS_CAPTION style
if ((GetWindowLongPtr(hwnd, GWL_STYLE) & WS_CAPTION) == 0)
return (TRUE);
// Not filtered
return (FALSE);
}
那些假事件源於陰影效果,菜單,一切都顯示在屏幕上。
是否有一個強大的方法來過濾從它的孩子真正的Windows?
我避免了WS_BORDER
或類似的測試,因爲有些應用程序可能會創建沒有邊框的主窗口......或者我錯了嗎?
你是具有一定標準的人。你在腦海裏想要定義一個「真正的窗口」是什麼,這與操作系統認爲的一個窗口不同。定義該條件,並編寫代碼以匹配它。 提示:使用Spy ++查看系統上窗口的窗口樣式,而此MSDN應該幫助您找到解決方案。 – tenfour 2010-08-13 15:36:17
@tenfour比說話更容易! ;) – Luca 2010-08-13 15:37:42
也許,但最終你必須知道你在做什麼,以及這些樣式意味着什麼。沒有人說編程很容易:) – tenfour 2010-08-13 15:42:12