我目前正在使用一個功能的程序,當其他進程的窗口正在最大化/最大化時應該會提醒我。對於最大化事件,我的意思是按下右上角關閉按鈕旁邊的符號。SetWinEventHook窗口最大化事件
要完成此操作,我使用SetWinEventHook函數。問題是我無法找到正確的事件代碼來捕獲此事件。我嘗試了EVENT_SYSTEM_MOVESIZESTART, EVENT_SYSTEM_MOVESIZEEND, EVENT_SYSTEM_MINIMIZESTART and EVENT_SYSTEM_MINIMIZEEND
常量,但它們似乎都沒有觸發最大化事件。然而,我可以跟蹤其他事件,所以我的SetWinEventHook的實現工作。
有沒有人maby有關於如何從其他進程捕獲最大化事件的想法?
在此先感謝。
有了友好的祝福, 鮑勃
代碼示例:
// To catch the event
SetWinEventHook(EVENT_MIN, EVENT_MAX, IntPtr.Zero, new WinEventDelegate(WinEventProc), GetProcess(), 0, 0);
// The handler
private void WinEventProc(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime)
{
// TODO: Filter maximize event here
if (eventType == ?)
{
// Do something
}
}
什麼用'和SetWindowsHookEx「的? – bash0r
您可以等待調整大小事件,然後檢查它是否填滿整個屏幕? – tbridge
必須有更好的方法,但CBT鉤子可以捕捉到。 – chris